@tryvitris/website-harness 0.1.0-beta.5 → 0.1.0-beta.7
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/README.md +6 -4
- package/agent/graph.yaml +0 -2
- package/agent/refs/components.md +5 -41
- package/agent/refs/compose.md +1 -1
- package/agent/refs/implement.md +2 -2
- package/agent/refs/jev.md +1 -1
- package/agent/refs/layout.md +1 -1
- package/agent/refs/storyboard.md +1 -1
- package/agent/refs/template-adaptation.md +1 -1
- package/bin/api/agent/evaluate.js +10 -15
- package/bin/api/agent/grade.js +10 -15
- package/bin/api/cli/api.js +18 -23
- package/bin/api/cli.js +20 -25
- package/bin/api/engine.js +11 -16
- package/bin/api/hosting.js +12 -17
- package/bin/api/index.js +2 -3
- package/bin/api/references.js +1 -2
- package/bin/api/render.js +2 -4
- package/bin/chunks/{chunk-4GZCAWWK.js → chunk-4MFPATAB.js} +2 -4
- package/bin/chunks/{chunk-5OOPJNGN.js → chunk-5JTBC6UK.js} +1 -4
- package/bin/chunks/{chunk-Z2UNY47A.js → chunk-5YSPWKFF.js} +1 -1
- package/bin/chunks/{chunk-FYN4T4SV.js → chunk-7V3OKLKH.js} +15 -26
- package/bin/chunks/{chunk-3CTBXY5K.js → chunk-FRABKM65.js} +1936 -1899
- package/bin/chunks/{chunk-4DM5TTLG.js → chunk-H7Y72HXC.js} +5 -5
- package/bin/chunks/{chunk-R7YELY3C.js → chunk-HL6JVA4A.js} +100 -81
- package/bin/chunks/{chunk-54JC5L35.js → chunk-O55LAQ2C.js} +3 -5
- package/bin/chunks/{chunk-VH7PM7KJ.js → chunk-P56ZDMX7.js} +4 -6
- package/bin/chunks/{chunk-7VLBEAFW.js → chunk-PGFFKPK6.js} +2 -2
- package/bin/chunks/{chunk-YQYHROLZ.js → chunk-QRWGFLUU.js} +2 -2
- package/bin/chunks/{chunk-CBEJZO4L.js → chunk-TTAUU3AZ.js} +2 -2
- package/bin/chunks/{chunk-E5Y46VBX.js → chunk-VTI32UGJ.js} +200 -103
- package/bin/chunks/{chunk-DRJQ4OOU.js → chunk-WOORR67N.js} +0 -45
- package/bin/chunks/{chunk-B5I45LFD.js → chunk-YZWEXHT4.js} +11 -13
- package/bin/chunks/{chunk-YCVGD2CG.js → chunk-ZIROO2U4.js} +1204 -1176
- package/bin/chunks/{chunk-42IXFXUD.js → chunk-ZWFG4GPG.js} +11 -15
- package/bin/chunks/{design-context-store-IAT2P2OC.js → design-context-store-DCZOAK56.js} +10 -15
- package/bin/chunks/{packets-VBMY4SQJ.js → packets-QOLWPRNV.js} +10 -15
- package/bin/chunks/{policy-2I37JUU3.js → policy-MP2JZXI3.js} +1 -1
- package/bin/chunks/{preparation-S4MG3RPL.js → preparation-T2IOD5SJ.js} +10 -15
- package/bin/chunks/{questions-HKELBDFL.js → questions-XK545GCX.js} +1 -11
- package/bin/types/src/agent/composition-authoring.d.ts +2 -2
- package/bin/types/src/agent/jev/calibration.d.ts +2 -2
- package/bin/types/src/agent/jev/config.d.ts +1 -1
- package/bin/types/src/agent/jev/questions.d.ts +0 -10
- package/bin/types/src/agent/jev/types.d.ts +0 -2
- package/bin/types/src/agent/site-inputs.d.ts +9 -1
- package/bin/types/src/agent/template-catalog.d.ts +20 -0
- package/bin/types/src/agent/theme-selection.d.ts +4 -2
- package/bin/types/src/build/archives.d.ts +2 -0
- package/bin/vitris-art.js +10 -15
- package/bin/vitris-build.js +3 -5
- package/bin/vitris-create-site.js +12 -17
- package/bin/vitris-cursor-hook.js +10 -15
- package/bin/vitris-eval.js +12 -17
- package/bin/vitris-go.js +14 -19
- package/bin/vitris-harvest.js +11 -16
- package/bin/vitris-knowledge.js +11 -16
- package/bin/vitris-launch-preflight.js +11 -17
- package/bin/vitris-motion-view.js +13 -19
- package/bin/vitris-references.js +4 -7
- package/bin/vitris-refresh.js +11 -16
- package/bin/vitris-stock.js +1 -1
- package/bin/vitris-themes.js +10 -15
- package/bin/vitris-upgrade.js +11 -16
- package/bin/vitris-verify-browser.js +43 -8
- package/bin/vitris-verify-performance.js +3 -5
- package/bin/vitris.js +20 -25
- package/design-system/MASTER.md +2 -2
- package/docs/CLI.md +2 -1
- package/docs/DISTRIBUTION.md +1 -1
- package/package.json +2 -7
- package/templates/site/README.md +2 -0
- package/templates/site/gitignore +1 -0
- package/bin/chunks/chunk-6H3T46F5.js +0 -25
- package/bin/chunks/chunk-ANMJRJQ5.js +0 -31
- package/bin/chunks/chunk-FOXUQXTV.js +0 -278
- package/bin/chunks/chunk-HNORQ74T.js +0 -40
- package/bin/chunks/chunk-T7DGRVTP.js +0 -458
- package/bin/types/src/agent/jev/block-catalog.d.ts +0 -95
- package/bin/types/src/agent/jev/component-select.d.ts +0 -102
- package/bin/types/src/blocks/library-profile.d.ts +0 -9
- package/bin/types/src/blocks/metadata.d.ts +0 -65
- package/bin/vitris-blocks.js +0 -238
- package/blocks/CONVENTIONS.md +0 -121
- package/blocks/INDEX.md +0 -130
- package/blocks/about/about-awards/README.md +0 -36
- package/blocks/about/about-awards/styles.css +0 -13
- package/blocks/about/about-awards/template.html +0 -1
- package/blocks/about/about-credentials/README.md +0 -33
- package/blocks/about/about-credentials/block.meta.json +0 -85
- package/blocks/about/about-credentials/styles.css +0 -4
- package/blocks/about/about-credentials/template.html +0 -1
- package/blocks/about/about-founder/README.md +0 -35
- package/blocks/about/about-founder/styles.css +0 -9
- package/blocks/about/about-founder/template.html +0 -1
- package/blocks/about/about-mission/README.md +0 -31
- package/blocks/about/about-mission/styles.css +0 -5
- package/blocks/about/about-mission/template.html +0 -1
- package/blocks/about/about-statement/README.md +0 -28
- package/blocks/about/about-statement/styles.css +0 -7
- package/blocks/about/about-statement/template.html +0 -1
- package/blocks/about/about-story/README.md +0 -35
- package/blocks/about/about-story/styles.css +0 -5
- package/blocks/about/about-story/template.html +0 -1
- package/blocks/about/about-timeline/README.md +0 -33
- package/blocks/about/about-timeline/styles.css +0 -8
- package/blocks/about/about-timeline/template.html +0 -1
- package/blocks/about/about-values/README.md +0 -31
- package/blocks/about/about-values/styles.css +0 -3
- package/blocks/about/about-values/template.html +0 -1
- package/blocks/blog/blog-featured/README.md +0 -39
- package/blocks/blog/blog-featured/styles.css +0 -12
- package/blocks/blog/blog-featured/template.html +0 -1
- package/blocks/blog/blog-index/README.md +0 -34
- package/blocks/blog/blog-index/styles.css +0 -6
- package/blocks/blog/blog-index/template.html +0 -1
- package/blocks/blog/blog-post-header/README.md +0 -31
- package/blocks/blog/blog-post-header/styles.css +0 -8
- package/blocks/blog/blog-post-header/template.html +0 -1
- package/blocks/contact/contact-cards/README.md +0 -32
- package/blocks/contact/contact-cards/styles.css +0 -7
- package/blocks/contact/contact-cards/template.html +0 -1
- package/blocks/contact/contact-chips/README.md +0 -41
- package/blocks/contact/contact-chips/styles.css +0 -13
- package/blocks/contact/contact-chips/template.html +0 -1
- package/blocks/contact/contact-hours/README.md +0 -41
- package/blocks/contact/contact-hours/block.meta.json +0 -87
- package/blocks/contact/contact-hours/styles.css +0 -8
- package/blocks/contact/contact-hours/template.html +0 -1
- package/blocks/contact/contact-map/README.md +0 -39
- package/blocks/contact/contact-map/styles.css +0 -10
- package/blocks/contact/contact-map/template.html +0 -1
- package/blocks/contact/contact-offices/README.md +0 -32
- package/blocks/contact/contact-offices/styles.css +0 -8
- package/blocks/contact/contact-offices/template.html +0 -1
- package/blocks/contact/contact-phone-first/README.md +0 -33
- package/blocks/contact/contact-phone-first/block.meta.json +0 -86
- package/blocks/contact/contact-phone-first/styles.css +0 -11
- package/blocks/contact/contact-phone-first/template.html +0 -1
- package/blocks/contact/contact-split/README.md +0 -43
- package/blocks/contact/contact-split/styles.css +0 -12
- package/blocks/contact/contact-split/template.html +0 -1
- package/blocks/contact/contact-visit/README.md +0 -36
- package/blocks/contact/contact-visit/block.meta.json +0 -88
- package/blocks/contact/contact-visit/styles.css +0 -13
- package/blocks/contact/contact-visit/template.html +0 -1
- package/blocks/contact/service-areas/README.md +0 -32
- package/blocks/contact/service-areas/styles.css +0 -9
- package/blocks/contact/service-areas/template.html +0 -1
- package/blocks/content/glossary/README.md +0 -35
- package/blocks/content/glossary/styles.css +0 -6
- package/blocks/content/glossary/template.html +0 -1
- package/blocks/content/list-split/README.md +0 -33
- package/blocks/content/list-split/styles.css +0 -13
- package/blocks/content/list-split/template.html +0 -1
- package/blocks/content/prose-split/README.md +0 -32
- package/blocks/content/prose-split/styles.css +0 -12
- package/blocks/content/prose-split/template.html +0 -1
- package/blocks/content/specification-ledger/README.md +0 -32
- package/blocks/content/specification-ledger/block.meta.json +0 -85
- package/blocks/content/specification-ledger/styles.css +0 -10
- package/blocks/content/specification-ledger/template.html +0 -1
- package/blocks/cta/cta-band/README.md +0 -33
- package/blocks/cta/cta-band/styles.css +0 -11
- package/blocks/cta/cta-band/template.html +0 -1
- package/blocks/cta/cta-card/README.md +0 -35
- package/blocks/cta/cta-card/styles.css +0 -8
- package/blocks/cta/cta-card/template.html +0 -1
- package/blocks/cta/cta-floating-bar/README.md +0 -28
- package/blocks/cta/cta-floating-bar/styles.css +0 -8
- package/blocks/cta/cta-floating-bar/template.html +0 -1
- package/blocks/cta/cta-inline/README.md +0 -30
- package/blocks/cta/cta-inline/styles.css +0 -9
- package/blocks/cta/cta-inline/template.html +0 -1
- package/blocks/cta/cta-newsletter/README.md +0 -34
- package/blocks/cta/cta-newsletter/styles.css +0 -8
- package/blocks/cta/cta-newsletter/template.html +0 -1
- package/blocks/cta/cta-photo-fan/README.md +0 -36
- package/blocks/cta/cta-photo-fan/styles.css +0 -14
- package/blocks/cta/cta-photo-fan/template.html +0 -1
- package/blocks/cta/cta-split/README.md +0 -38
- package/blocks/cta/cta-split/styles.css +0 -10
- package/blocks/cta/cta-split/template.html +0 -1
- package/blocks/faq/faq-accordion/README.md +0 -36
- package/blocks/faq/faq-accordion/styles.css +0 -6
- package/blocks/faq/faq-accordion/template.html +0 -1
- package/blocks/faq/faq-grouped/README.md +0 -40
- package/blocks/faq/faq-grouped/styles.css +0 -20
- package/blocks/faq/faq-grouped/template.html +0 -1
- package/blocks/faq/faq-split/README.md +0 -37
- package/blocks/faq/faq-split/styles.css +0 -5
- package/blocks/faq/faq-split/template.html +0 -1
- package/blocks/faq/faq-tabs/README.md +0 -36
- package/blocks/faq/faq-tabs/styles.css +0 -3
- package/blocks/faq/faq-tabs/template.html +0 -1
- package/blocks/feature/feature-bento/README.md +0 -33
- package/blocks/feature/feature-bento/styles.css +0 -7
- package/blocks/feature/feature-bento/template.html +0 -1
- package/blocks/feature/feature-compare-table/README.md +0 -44
- package/blocks/feature/feature-compare-table/styles.css +0 -15
- package/blocks/feature/feature-compare-table/template.html +0 -1
- package/blocks/feature/feature-comparison/README.md +0 -34
- package/blocks/feature/feature-comparison/styles.css +0 -6
- package/blocks/feature/feature-comparison/template.html +0 -1
- package/blocks/feature/feature-grid-3/README.md +0 -34
- package/blocks/feature/feature-grid-3/styles.css +0 -8
- package/blocks/feature/feature-grid-3/template.html +0 -1
- package/blocks/feature/feature-icon-list/README.md +0 -39
- package/blocks/feature/feature-icon-list/styles.css +0 -9
- package/blocks/feature/feature-icon-list/template.html +0 -1
- package/blocks/feature/feature-spotlight/README.md +0 -39
- package/blocks/feature/feature-spotlight/styles.css +0 -5
- package/blocks/feature/feature-spotlight/template.html +0 -1
- package/blocks/feature/feature-stats-band/README.md +0 -33
- package/blocks/feature/feature-stats-band/styles.css +0 -8
- package/blocks/feature/feature-stats-band/template.html +0 -1
- package/blocks/feature/feature-tabs/README.md +0 -38
- package/blocks/feature/feature-tabs/styles.css +0 -7
- package/blocks/feature/feature-tabs/template.html +0 -1
- package/blocks/feature/feature-thumb-list/README.md +0 -38
- package/blocks/feature/feature-thumb-list/styles.css +0 -13
- package/blocks/feature/feature-thumb-list/template.html +0 -1
- package/blocks/feature/feature-zigzag/README.md +0 -31
- package/blocks/feature/feature-zigzag/styles.css +0 -6
- package/blocks/feature/feature-zigzag/template.html +0 -1
- package/blocks/footer/footer-columns/README.md +0 -39
- package/blocks/footer/footer-columns/styles.css +0 -16
- package/blocks/footer/footer-columns/template.html +0 -1
- package/blocks/footer/footer-compact/README.md +0 -33
- package/blocks/footer/footer-compact/styles.css +0 -12
- package/blocks/footer/footer-compact/template.html +0 -1
- package/blocks/footer/footer-cta/README.md +0 -37
- package/blocks/footer/footer-cta/styles.css +0 -18
- package/blocks/footer/footer-cta/template.html +0 -1
- package/blocks/footer/footer-social/README.md +0 -37
- package/blocks/footer/footer-social/styles.css +0 -17
- package/blocks/footer/footer-social/template.html +0 -1
- package/blocks/footer/footer-wordmark/README.md +0 -40
- package/blocks/footer/footer-wordmark/styles.css +0 -19
- package/blocks/footer/footer-wordmark/template.html +0 -1
- package/blocks/gallery/gallery-before-after/README.md +0 -31
- package/blocks/gallery/gallery-before-after/styles.css +0 -6
- package/blocks/gallery/gallery-before-after/template.html +0 -1
- package/blocks/gallery/gallery-carousel/README.md +0 -32
- package/blocks/gallery/gallery-carousel/styles.css +0 -7
- package/blocks/gallery/gallery-carousel/template.html +0 -1
- package/blocks/gallery/gallery-grid/README.md +0 -39
- package/blocks/gallery/gallery-grid/styles.css +0 -13
- package/blocks/gallery/gallery-grid/template.html +0 -1
- package/blocks/gallery/gallery-masonry/README.md +0 -33
- package/blocks/gallery/gallery-masonry/styles.css +0 -4
- package/blocks/gallery/gallery-masonry/template.html +0 -1
- package/blocks/gallery/gallery-mosaic-split/README.md +0 -40
- package/blocks/gallery/gallery-mosaic-split/styles.css +0 -15
- package/blocks/gallery/gallery-mosaic-split/template.html +0 -1
- package/blocks/hero/hero-asymmetric/README.md +0 -34
- package/blocks/hero/hero-asymmetric/styles.css +0 -13
- package/blocks/hero/hero-asymmetric/template.html +0 -10
- package/blocks/hero/hero-before-after/README.md +0 -38
- package/blocks/hero/hero-before-after/styles.css +0 -8
- package/blocks/hero/hero-before-after/template.html +0 -19
- package/blocks/hero/hero-editorial/README.md +0 -34
- package/blocks/hero/hero-editorial/block.meta.json +0 -85
- package/blocks/hero/hero-editorial/styles.css +0 -6
- package/blocks/hero/hero-editorial/template.html +0 -10
- package/blocks/hero/hero-evidence/README.md +0 -32
- package/blocks/hero/hero-evidence/block.meta.json +0 -85
- package/blocks/hero/hero-evidence/styles.css +0 -13
- package/blocks/hero/hero-evidence/template.html +0 -1
- package/blocks/hero/hero-form/README.md +0 -46
- package/blocks/hero/hero-form/styles.css +0 -11
- package/blocks/hero/hero-form/template.html +0 -15
- package/blocks/hero/hero-menu/README.md +0 -36
- package/blocks/hero/hero-menu/styles.css +0 -7
- package/blocks/hero/hero-menu/template.html +0 -10
- package/blocks/hero/hero-overlay/README.md +0 -35
- package/blocks/hero/hero-overlay/styles.css +0 -14
- package/blocks/hero/hero-overlay/template.html +0 -10
- package/blocks/hero/hero-page/README.md +0 -35
- package/blocks/hero/hero-page/styles.css +0 -19
- package/blocks/hero/hero-page/template.html +0 -1
- package/blocks/hero/hero-product/README.md +0 -41
- package/blocks/hero/hero-product/styles.css +0 -11
- package/blocks/hero/hero-product/template.html +0 -14
- package/blocks/hero/hero-service/README.md +0 -37
- package/blocks/hero/hero-service/block.meta.json +0 -85
- package/blocks/hero/hero-service/styles.css +0 -17
- package/blocks/hero/hero-service/template.html +0 -1
- package/blocks/hero/hero-split/README.md +0 -36
- package/blocks/hero/hero-split/styles.css +0 -7
- package/blocks/hero/hero-split/template.html +0 -11
- package/blocks/hero/hero-statement/README.md +0 -33
- package/blocks/hero/hero-statement/styles.css +0 -8
- package/blocks/hero/hero-statement/template.html +0 -1
- package/blocks/hero/hero-stats/README.md +0 -37
- package/blocks/hero/hero-stats/styles.css +0 -10
- package/blocks/hero/hero-stats/template.html +0 -10
- package/blocks/hero/hero-video-still/README.md +0 -36
- package/blocks/hero/hero-video-still/styles.css +0 -9
- package/blocks/hero/hero-video-still/template.html +0 -13
- package/blocks/icons.md +0 -44
- package/blocks/incentives/incentive-banner/README.md +0 -28
- package/blocks/incentives/incentive-banner/styles.css +0 -7
- package/blocks/incentives/incentive-banner/template.html +0 -1
- package/blocks/incentives/incentive-cards/README.md +0 -31
- package/blocks/incentives/incentive-cards/styles.css +0 -4
- package/blocks/incentives/incentive-cards/template.html +0 -1
- package/blocks/navbar/nav-announcement/README.md +0 -35
- package/blocks/navbar/nav-announcement/styles.css +0 -10
- package/blocks/navbar/nav-announcement/template.html +0 -14
- package/blocks/navbar/nav-centered/README.md +0 -35
- package/blocks/navbar/nav-centered/styles.css +0 -11
- package/blocks/navbar/nav-centered/template.html +0 -12
- package/blocks/navbar/nav-minimal/README.md +0 -29
- package/blocks/navbar/nav-minimal/styles.css +0 -5
- package/blocks/navbar/nav-minimal/template.html +0 -6
- package/blocks/navbar/nav-split/README.md +0 -34
- package/blocks/navbar/nav-split/styles.css +0 -11
- package/blocks/navbar/nav-split/template.html +0 -11
- package/blocks/navbar/nav-utility/README.md +0 -37
- package/blocks/navbar/nav-utility/styles.css +0 -17
- package/blocks/navbar/nav-utility/template.html +0 -12
- package/blocks/pricing/menu-featured/README.md +0 -34
- package/blocks/pricing/menu-featured/styles.css +0 -4
- package/blocks/pricing/menu-featured/template.html +0 -1
- package/blocks/pricing/menu-sections/README.md +0 -33
- package/blocks/pricing/menu-sections/styles.css +0 -9
- package/blocks/pricing/menu-sections/template.html +0 -1
- package/blocks/pricing/pricing-table/README.md +0 -40
- package/blocks/pricing/pricing-table/styles.css +0 -9
- package/blocks/pricing/pricing-table/template.html +0 -1
- package/blocks/pricing/pricing-tiers/README.md +0 -34
- package/blocks/pricing/pricing-tiers/styles.css +0 -7
- package/blocks/pricing/pricing-tiers/template.html +0 -1
- package/blocks/pricing/pricing-toggle/README.md +0 -34
- package/blocks/pricing/pricing-toggle/styles.css +0 -10
- package/blocks/pricing/pricing-toggle/template.html +0 -1
- package/blocks/process/process-carousel/README.md +0 -33
- package/blocks/process/process-carousel/styles.css +0 -5
- package/blocks/process/process-carousel/template.html +0 -1
- package/blocks/process/process-split/README.md +0 -35
- package/blocks/process/process-split/styles.css +0 -6
- package/blocks/process/process-split/template.html +0 -1
- package/blocks/process/process-stepper/README.md +0 -40
- package/blocks/process/process-stepper/styles.css +0 -11
- package/blocks/process/process-stepper/template.html +0 -1
- package/blocks/process/process-steps/README.md +0 -35
- package/blocks/process/process-steps/styles.css +0 -6
- package/blocks/process/process-steps/template.html +0 -1
- package/blocks/process/process-sticky/README.md +0 -38
- package/blocks/process/process-sticky/styles.css +0 -12
- package/blocks/process/process-sticky/template.html +0 -1
- package/blocks/process/process-timeline/README.md +0 -35
- package/blocks/process/process-timeline/styles.css +0 -10
- package/blocks/process/process-timeline/template.html +0 -1
- package/blocks/services/services-cards/README.md +0 -34
- package/blocks/services/services-cards/styles.css +0 -3
- package/blocks/services/services-cards/template.html +0 -1
- package/blocks/services/services-carousel/README.md +0 -34
- package/blocks/services/services-carousel/styles.css +0 -6
- package/blocks/services/services-carousel/template.html +0 -1
- package/blocks/services/services-list/README.md +0 -32
- package/blocks/services/services-list/block.meta.json +0 -85
- package/blocks/services/services-list/styles.css +0 -10
- package/blocks/services/services-list/template.html +0 -1
- package/blocks/services/services-menu/README.md +0 -39
- package/blocks/services/services-menu/styles.css +0 -6
- package/blocks/services/services-menu/template.html +0 -1
- package/blocks/services/services-packages/README.md +0 -34
- package/blocks/services/services-packages/styles.css +0 -6
- package/blocks/services/services-packages/template.html +0 -1
- package/blocks/services/services-panels/README.md +0 -36
- package/blocks/services/services-panels/styles.css +0 -15
- package/blocks/services/services-panels/template.html +0 -1
- package/blocks/services/services-photo-grid/README.md +0 -39
- package/blocks/services/services-photo-grid/styles.css +0 -10
- package/blocks/services/services-photo-grid/template.html +0 -1
- package/blocks/services/services-priority/README.md +0 -33
- package/blocks/services/services-priority/block.meta.json +0 -86
- package/blocks/services/services-priority/styles.css +0 -16
- package/blocks/services/services-priority/template.html +0 -1
- package/blocks/stats/stats-cards/README.md +0 -31
- package/blocks/stats/stats-cards/styles.css +0 -4
- package/blocks/stats/stats-cards/template.html +0 -1
- package/blocks/stats/stats-mosaic/README.md +0 -27
- package/blocks/stats/stats-mosaic/styles.css +0 -9
- package/blocks/stats/stats-mosaic/template.html +0 -1
- package/blocks/stats/stats-row/README.md +0 -29
- package/blocks/stats/stats-row/styles.css +0 -8
- package/blocks/stats/stats-row/template.html +0 -1
- package/blocks/stats/stats-split/README.md +0 -35
- package/blocks/stats/stats-split/styles.css +0 -3
- package/blocks/stats/stats-split/template.html +0 -1
- package/blocks/team/team-featured/README.md +0 -42
- package/blocks/team/team-featured/styles.css +0 -9
- package/blocks/team/team-featured/template.html +0 -1
- package/blocks/team/team-grid/README.md +0 -35
- package/blocks/team/team-grid/styles.css +0 -8
- package/blocks/team/team-grid/template.html +0 -1
- package/blocks/team/team-list/README.md +0 -32
- package/blocks/team/team-list/styles.css +0 -7
- package/blocks/team/team-list/template.html +0 -1
- package/blocks/testimonial/testimonial-carousel/README.md +0 -32
- package/blocks/testimonial/testimonial-carousel/styles.css +0 -7
- package/blocks/testimonial/testimonial-carousel/template.html +0 -1
- package/blocks/testimonial/testimonial-grid/README.md +0 -32
- package/blocks/testimonial/testimonial-grid/styles.css +0 -5
- package/blocks/testimonial/testimonial-grid/template.html +0 -1
- package/blocks/testimonial/testimonial-mosaic/README.md +0 -38
- package/blocks/testimonial/testimonial-mosaic/styles.css +0 -14
- package/blocks/testimonial/testimonial-mosaic/template.html +0 -1
- package/blocks/testimonial/testimonial-platform/README.md +0 -34
- package/blocks/testimonial/testimonial-platform/styles.css +0 -17
- package/blocks/testimonial/testimonial-platform/template.html +0 -1
- package/blocks/testimonial/testimonial-rating/README.md +0 -28
- package/blocks/testimonial/testimonial-rating/styles.css +0 -6
- package/blocks/testimonial/testimonial-rating/template.html +0 -1
- package/blocks/testimonial/testimonial-spotlight/README.md +0 -31
- package/blocks/testimonial/testimonial-spotlight/styles.css +0 -9
- package/blocks/testimonial/testimonial-spotlight/template.html +0 -1
- package/blocks/testimonial/testimonial-switcher/README.md +0 -39
- package/blocks/testimonial/testimonial-switcher/styles.css +0 -23
- package/blocks/testimonial/testimonial-switcher/template.html +0 -1
- package/blocks/testimonial/testimonial-wall/README.md +0 -34
- package/blocks/testimonial/testimonial-wall/styles.css +0 -7
- package/blocks/testimonial/testimonial-wall/template.html +0 -1
- package/blocks/trust-strip/trust-badges/README.md +0 -30
- package/blocks/trust-strip/trust-badges/styles.css +0 -5
- package/blocks/trust-strip/trust-badges/template.html +0 -1
- package/blocks/trust-strip/trust-certs/README.md +0 -31
- package/blocks/trust-strip/trust-certs/styles.css +0 -12
- package/blocks/trust-strip/trust-certs/template.html +0 -1
- package/blocks/trust-strip/trust-logos/README.md +0 -32
- package/blocks/trust-strip/trust-logos/styles.css +0 -5
- package/blocks/trust-strip/trust-logos/template.html +0 -1
- package/blocks/trust-strip/trust-quote/README.md +0 -29
- package/blocks/trust-strip/trust-quote/styles.css +0 -5
- package/blocks/trust-strip/trust-quote/template.html +0 -1
- package/blocks/trust-strip/trust-reviews/README.md +0 -35
- package/blocks/trust-strip/trust-reviews/styles.css +0 -9
- package/blocks/trust-strip/trust-reviews/template.html +0 -1
- package/blocks/work/case-alternating/README.md +0 -34
- package/blocks/work/case-alternating/block.meta.json +0 -86
- package/blocks/work/case-alternating/styles.css +0 -7
- package/blocks/work/case-alternating/template.html +0 -1
- package/blocks/work/case-carousel/README.md +0 -26
- package/blocks/work/case-carousel/styles.css +0 -7
- package/blocks/work/case-carousel/template.html +0 -1
- package/blocks/work/case-header/README.md +0 -38
- package/blocks/work/case-header/styles.css +0 -18
- package/blocks/work/case-header/template.html +0 -1
- package/blocks/work/project-evidence/README.md +0 -35
- package/blocks/work/project-evidence/block.meta.json +0 -87
- package/blocks/work/project-evidence/styles.css +0 -12
- package/blocks/work/project-evidence/template.html +0 -1
- package/blocks/work/project-grid/README.md +0 -38
- package/blocks/work/project-grid/styles.css +0 -9
- package/blocks/work/project-grid/template.html +0 -1
|
@@ -7,19 +7,19 @@ import {
|
|
|
7
7
|
import {
|
|
8
8
|
gatherBlankOnboard,
|
|
9
9
|
persistOnboard
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-5YSPWKFF.js";
|
|
11
11
|
import {
|
|
12
12
|
persistSiteInputs,
|
|
13
13
|
recordManagedKit,
|
|
14
|
-
|
|
15
|
-
} from "./chunk-
|
|
14
|
+
resolveSiteInputsLive
|
|
15
|
+
} from "./chunk-FRABKM65.js";
|
|
16
16
|
import {
|
|
17
17
|
initialState,
|
|
18
18
|
parseGraphYaml
|
|
19
19
|
} from "./chunk-BBV7PMFC.js";
|
|
20
20
|
import {
|
|
21
21
|
findHarnessRoot
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-VTI32UGJ.js";
|
|
23
23
|
import {
|
|
24
24
|
save
|
|
25
25
|
} from "./chunk-T6PE4KN4.js";
|
|
@@ -66,7 +66,7 @@ async function createSite(opts) {
|
|
|
66
66
|
}
|
|
67
67
|
let inputs;
|
|
68
68
|
try {
|
|
69
|
-
inputs =
|
|
69
|
+
inputs = await resolveSiteInputsLive(opts);
|
|
70
70
|
if (mode === "preserve" && (inputs.template || inputs.content !== void 0)) throw Error("Template and additional content inputs require redesign mode");
|
|
71
71
|
} catch (error) {
|
|
72
72
|
return { ok: false, exitCode: EXIT_CODES.CONFIG_OR_CLI_ERROR, error: error instanceof Error ? error.message : String(error) };
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
KNOWLEDGE_RELEASE
|
|
3
3
|
} from "./chunk-BIEDSEL2.js";
|
|
4
|
-
import {
|
|
5
|
-
COMPOSITION_LESSON_RELEASE,
|
|
6
|
-
resolveDesignAuthoring
|
|
7
|
-
} from "./chunk-6H3T46F5.js";
|
|
8
4
|
import {
|
|
9
5
|
json
|
|
10
6
|
} from "./chunk-T6PE4KN4.js";
|
|
@@ -97,9 +93,9 @@ function complementaryFit(pool, limit, tie, precise = false) {
|
|
|
97
93
|
}
|
|
98
94
|
|
|
99
95
|
// src/agent/reference-library.ts
|
|
100
|
-
import { createHash as
|
|
101
|
-
import { existsSync as
|
|
102
|
-
import { isAbsolute as isAbsolute2, join as
|
|
96
|
+
import { createHash as createHash7 } from "node:crypto";
|
|
97
|
+
import { existsSync as existsSync7, readFileSync as readFileSync7, readdirSync, statSync } from "node:fs";
|
|
98
|
+
import { isAbsolute as isAbsolute2, join as join7, relative as relative4, resolve as resolve5, sep as sep2 } from "node:path";
|
|
103
99
|
|
|
104
100
|
// src/agent/design-calibration.ts
|
|
105
101
|
import { createHash } from "node:crypto";
|
|
@@ -202,21 +198,42 @@ function calibrationPackHash(kernel) {
|
|
|
202
198
|
}
|
|
203
199
|
|
|
204
200
|
// src/agent/composition-context.ts
|
|
205
|
-
import { createHash as
|
|
206
|
-
import { existsSync as
|
|
207
|
-
import { join as
|
|
201
|
+
import { createHash as createHash5 } from "node:crypto";
|
|
202
|
+
import { existsSync as existsSync5, readFileSync as readFileSync5 } from "node:fs";
|
|
203
|
+
import { join as join5 } from "node:path";
|
|
208
204
|
|
|
209
205
|
// src/knowledge/composition.ts
|
|
210
|
-
import { createHash as
|
|
211
|
-
import { existsSync as
|
|
212
|
-
import { dirname as dirname2, join as
|
|
206
|
+
import { createHash as createHash4 } from "node:crypto";
|
|
207
|
+
import { existsSync as existsSync4, lstatSync, readFileSync as readFileSync4 } from "node:fs";
|
|
208
|
+
import { dirname as dirname2, join as join4, relative as relative2, resolve as resolve3 } from "node:path";
|
|
213
209
|
|
|
214
|
-
// src/
|
|
210
|
+
// src/agent/composition-authoring.ts
|
|
215
211
|
import { createHash as createHash2 } from "node:crypto";
|
|
216
212
|
import { existsSync as existsSync2, readFileSync as readFileSync2 } from "node:fs";
|
|
217
|
-
import { join as join2
|
|
213
|
+
import { join as join2 } from "node:path";
|
|
214
|
+
var COMPOSITION_LESSON_RELEASE = "2026-09-28.1";
|
|
215
|
+
function resolveDesignAuthoring(root) {
|
|
216
|
+
const path = join2(root, "launch.json");
|
|
217
|
+
const launch = existsSync2(path) ? JSON.parse(readFileSync2(path, "utf8")) : {};
|
|
218
|
+
const raw = launch.designAuthoring;
|
|
219
|
+
if (raw === void 0) return policy("theme-v1", null);
|
|
220
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw)) throw new Error("launch.json designAuthoring must be an object");
|
|
221
|
+
const config = raw;
|
|
222
|
+
if ((config.mode === "theme-v1" || config.mode === "blocks-v0") && (config.lessonRelease === void 0 || config.lessonRelease === null)) return policy("theme-v1", null);
|
|
223
|
+
if (config.mode === "composition-v1" && config.lessonRelease === COMPOSITION_LESSON_RELEASE) return policy("composition-v1", COMPOSITION_LESSON_RELEASE);
|
|
224
|
+
throw new Error(`Unsupported launch.json designAuthoring mode/release: ${String(config.mode)}/${String(config.lessonRelease)}. Use theme-v1, or composition-v1 with ${COMPOSITION_LESSON_RELEASE}.`);
|
|
225
|
+
}
|
|
226
|
+
function policy(mode, lessonRelease) {
|
|
227
|
+
const hash2 = createHash2("sha256").update(JSON.stringify({ mode, lessonRelease })).digest("hex");
|
|
228
|
+
return { mode, lessonRelease, hash: hash2 };
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// src/knowledge/pack.ts
|
|
232
|
+
import { createHash as createHash3 } from "node:crypto";
|
|
233
|
+
import { existsSync as existsSync3, readFileSync as readFileSync3 } from "node:fs";
|
|
234
|
+
import { join as join3, relative, resolve as resolve2 } from "node:path";
|
|
218
235
|
function sha256(bytes) {
|
|
219
|
-
return
|
|
236
|
+
return createHash3("sha256").update(bytes).digest("hex");
|
|
220
237
|
}
|
|
221
238
|
function confined(dir, file) {
|
|
222
239
|
if (!file || file.includes("..") || file.startsWith("/") || /^[A-Za-z]:/.test(file)) return void 0;
|
|
@@ -226,11 +243,11 @@ function confined(dir, file) {
|
|
|
226
243
|
return target;
|
|
227
244
|
}
|
|
228
245
|
function knowledgeV2Dir(kernel) {
|
|
229
|
-
return
|
|
246
|
+
return join3(resolve2(kernel), "design-system", "knowledge", "v2");
|
|
230
247
|
}
|
|
231
248
|
function readJson(path) {
|
|
232
249
|
try {
|
|
233
|
-
return JSON.parse(
|
|
250
|
+
return JSON.parse(readFileSync3(path, "utf8"));
|
|
234
251
|
} catch {
|
|
235
252
|
return void 0;
|
|
236
253
|
}
|
|
@@ -238,16 +255,16 @@ function readJson(path) {
|
|
|
238
255
|
function verifyKnowledgeV2(kernel) {
|
|
239
256
|
const dir = knowledgeV2Dir(kernel);
|
|
240
257
|
const errors = [];
|
|
241
|
-
const manifestPath =
|
|
242
|
-
if (!
|
|
258
|
+
const manifestPath = join3(dir, "manifest.json");
|
|
259
|
+
if (!existsSync3(manifestPath)) return ["Missing design-system/knowledge/v2 pack"];
|
|
243
260
|
const manifest = readJson(manifestPath);
|
|
244
261
|
if (!manifest || manifest.schemaVersion !== 1) errors.push("v2 manifest schema mismatch");
|
|
245
262
|
if (manifest && manifest.knowledgeRelease !== KNOWLEDGE_RELEASE) errors.push("v2 release mismatch");
|
|
246
263
|
if (manifest && manifest.labeledPreferenceData !== false) errors.push("v2 pack must not claim labeled preference data");
|
|
247
264
|
for (const file of manifest?.files || []) {
|
|
248
265
|
const target = confined(dir, file.path);
|
|
249
|
-
if (!target || !
|
|
250
|
-
else if (sha256(
|
|
266
|
+
if (!target || !existsSync3(target)) errors.push(`Missing or unconfined v2 file: ${file.path}`);
|
|
267
|
+
else if (sha256(readFileSync3(target)) !== file.sha256) errors.push(`v2 hash mismatch: ${file.path}`);
|
|
251
268
|
}
|
|
252
269
|
return errors;
|
|
253
270
|
}
|
|
@@ -256,15 +273,15 @@ function loadKnowledgeV2(siteOrKernel) {
|
|
|
256
273
|
if (!kernel) return void 0;
|
|
257
274
|
const dir = knowledgeV2Dir(kernel);
|
|
258
275
|
const errors = verifyKnowledgeV2(kernel);
|
|
259
|
-
const siteConfig = readJson(
|
|
276
|
+
const siteConfig = readJson(join3(resolve2(siteOrKernel), "site.json"));
|
|
260
277
|
if (siteConfig?.knowledgeRelease && siteConfig.knowledgeRelease !== KNOWLEDGE_RELEASE) {
|
|
261
278
|
errors.push(`Site pins knowledge release ${siteConfig.knowledgeRelease}; installed kernel provides ${KNOWLEDGE_RELEASE}. Review and upgrade explicitly.`);
|
|
262
279
|
}
|
|
263
|
-
const sources = readJson(
|
|
264
|
-
const requirements = readJson(
|
|
265
|
-
const extensions = readJson(
|
|
266
|
-
const replacements = readJson(
|
|
267
|
-
const assets = readJson(
|
|
280
|
+
const sources = readJson(join3(dir, "sources.json")) || [];
|
|
281
|
+
const requirements = readJson(join3(dir, "requirements.json")) || [];
|
|
282
|
+
const extensions = readJson(join3(dir, "lesson-extensions.json")) || [];
|
|
283
|
+
const replacements = readJson(join3(dir, "replacements.json")) || [];
|
|
284
|
+
const assets = readJson(join3(dir, "assets.json")) || [];
|
|
268
285
|
for (const source of sources) {
|
|
269
286
|
if (sha256(source.summary) !== source.summarySha256) errors.push(`Source summary hash mismatch: ${source.id}`);
|
|
270
287
|
if (source.reviewStatus === "live-checked" && !source.lastReviewed) errors.push(`Live-checked source missing review date: ${source.id}`);
|
|
@@ -289,14 +306,14 @@ function coverageReport(pack) {
|
|
|
289
306
|
}
|
|
290
307
|
|
|
291
308
|
// src/knowledge/composition.ts
|
|
292
|
-
var sha = (bytes) =>
|
|
309
|
+
var sha = (bytes) => createHash4("sha256").update(bytes).digest("hex");
|
|
293
310
|
var hex = (value) => typeof value === "string" && /^[a-f0-9]{64}$/.test(value);
|
|
294
311
|
var unique = (values) => new Set(values).size === values.length;
|
|
295
312
|
function confined2(dir, path) {
|
|
296
313
|
if (!path || path.includes("..") || path.startsWith("/") || path.includes("\\") || /^[A-Za-z]:/.test(path)) throw new Error(`Unconfined composition pack path: ${path}`);
|
|
297
314
|
const target = resolve3(dir, path);
|
|
298
315
|
if (relative2(dir, target).startsWith("..")) throw new Error(`Unconfined composition pack path: ${path}`);
|
|
299
|
-
for (let cursor = target; cursor !== dir; cursor = dirname2(cursor)) if (
|
|
316
|
+
for (let cursor = target; cursor !== dir; cursor = dirname2(cursor)) if (existsSync4(cursor) && lstatSync(cursor).isSymbolicLink()) throw new Error(`Symlink in composition pack path: ${path}`);
|
|
300
317
|
return target;
|
|
301
318
|
}
|
|
302
319
|
function object(value, label) {
|
|
@@ -318,10 +335,10 @@ function loadCompositionPack(siteOrKernel, requestedRelease = COMPOSITION_LESSON
|
|
|
318
335
|
if (requestedRelease !== COMPOSITION_LESSON_RELEASE) throw new Error(`Unknown composition lesson release ${requestedRelease}`);
|
|
319
336
|
const kernel = resolveKernelRoot(siteOrKernel);
|
|
320
337
|
if (!kernel) throw new Error("Installed harness root is unavailable for composition lessons");
|
|
321
|
-
const dir =
|
|
322
|
-
const manifestPath =
|
|
323
|
-
if (!
|
|
324
|
-
const manifestBytes =
|
|
338
|
+
const dir = join4(kernel, "design-system/knowledge/v3");
|
|
339
|
+
const manifestPath = join4(dir, "manifest.json");
|
|
340
|
+
if (!existsSync4(manifestPath)) throw new Error(`Missing composition lesson release ${requestedRelease}`);
|
|
341
|
+
const manifestBytes = readFileSync4(manifestPath);
|
|
325
342
|
const manifest = parsed(manifestBytes, "manifest");
|
|
326
343
|
if (manifest.schemaVersion !== 1 || manifest.lessonRelease !== requestedRelease || manifest.standardsRelease !== KNOWLEDGE_RELEASE || manifest.labeledPreferenceData !== false) throw new Error("Composition manifest version or dependency mismatch");
|
|
327
344
|
const v2Errors = verifyKnowledgeV2(kernel);
|
|
@@ -334,8 +351,8 @@ function loadCompositionPack(siteOrKernel, requestedRelease = COMPOSITION_LESSON
|
|
|
334
351
|
if (typeof file.path !== "string" || !hex(file.sha256)) throw new Error("Invalid composition manifest file entry");
|
|
335
352
|
if (bytes.has(file.path)) throw new Error(`Duplicate composition file ${file.path}`);
|
|
336
353
|
const target = confined2(dir, file.path);
|
|
337
|
-
if (!
|
|
338
|
-
const content =
|
|
354
|
+
if (!existsSync4(target)) throw new Error(`Missing composition file ${file.path}`);
|
|
355
|
+
const content = readFileSync4(target);
|
|
339
356
|
if (sha(content) !== file.sha256) throw new Error(`Composition hash mismatch: ${file.path}`);
|
|
340
357
|
bytes.set(file.path, content);
|
|
341
358
|
}
|
|
@@ -388,11 +405,11 @@ function loadCompositionPack(siteOrKernel, requestedRelease = COMPOSITION_LESSON
|
|
|
388
405
|
|
|
389
406
|
// src/agent/composition-context.ts
|
|
390
407
|
var COMPOSITION_SELECTOR_VERSION = "composition-selector-1";
|
|
391
|
-
var sha2 = (value) =>
|
|
408
|
+
var sha2 = (value) => createHash5("sha256").update(value).digest("hex");
|
|
392
409
|
var read = (root, path) => {
|
|
393
|
-
const file =
|
|
394
|
-
if (!
|
|
395
|
-
return JSON.parse(
|
|
410
|
+
const file = join5(root, path);
|
|
411
|
+
if (!existsSync5(file)) return void 0;
|
|
412
|
+
return JSON.parse(readFileSync5(file, "utf8"));
|
|
396
413
|
};
|
|
397
414
|
function compositionSignalsFromSite(root, page) {
|
|
398
415
|
const narrative = read(root, "onboarding/narrative-brief.json");
|
|
@@ -503,18 +520,18 @@ function selectCompositionLessons(input) {
|
|
|
503
520
|
};
|
|
504
521
|
}
|
|
505
522
|
function compositionContextForStage(root, stage, page, limit) {
|
|
506
|
-
const
|
|
507
|
-
if (
|
|
508
|
-
const pack = loadCompositionPack(root,
|
|
509
|
-
const receipt = selectCompositionLessons({ pack, stage, page, signals: compositionSignalsFromSite(root, page), policyHash:
|
|
510
|
-
return { policy, pack, receipt };
|
|
523
|
+
const policy2 = resolveDesignAuthoring(root);
|
|
524
|
+
if (policy2.mode !== "composition-v1") return void 0;
|
|
525
|
+
const pack = loadCompositionPack(root, policy2.lessonRelease);
|
|
526
|
+
const receipt = selectCompositionLessons({ pack, stage, page, signals: compositionSignalsFromSite(root, page), policyHash: policy2.hash, limit });
|
|
527
|
+
return { policy: policy2, pack, receipt };
|
|
511
528
|
}
|
|
512
529
|
|
|
513
530
|
// src/agent/reference-studies.ts
|
|
514
|
-
import { createHash as
|
|
515
|
-
import { existsSync as
|
|
516
|
-
import { isAbsolute, join as
|
|
517
|
-
var hash = (v) =>
|
|
531
|
+
import { createHash as createHash6 } from "node:crypto";
|
|
532
|
+
import { existsSync as existsSync6, readFileSync as readFileSync6 } from "node:fs";
|
|
533
|
+
import { isAbsolute, join as join6, relative as relative3, resolve as resolve4, sep } from "node:path";
|
|
534
|
+
var hash = (v) => createHash6("sha256").update(v).digest("hex");
|
|
518
535
|
function confined3(base, path) {
|
|
519
536
|
const target = resolve4(base, path), rel = relative3(base, target);
|
|
520
537
|
if (!rel || isAbsolute(path) || isAbsolute(rel) || rel === ".." || rel.startsWith(`..${sep}`)) throw new Error(`Study path escapes release: ${path}`);
|
|
@@ -523,14 +540,14 @@ function confined3(base, path) {
|
|
|
523
540
|
function loadReferenceStudies(kernel, release = "2026-10-05.1") {
|
|
524
541
|
if (!["2026-10-05.1", "2026-10-06.1", "2026-10-06.2"].includes(release)) throw new Error(`Unsupported original study release: ${release}`);
|
|
525
542
|
const dataRoot = process.env.VITRIS_REFERENCE_DATA ? resolve4(process.env.VITRIS_REFERENCE_DATA) : kernel;
|
|
526
|
-
const base =
|
|
527
|
-
if (!
|
|
528
|
-
const bytes =
|
|
543
|
+
const base = join6(dataRoot, release === "2026-10-05.1" ? "design-system/compositions/v2" : release === "2026-10-06.1" ? "design-system/compositions/v3" : "design-system/compositions/v4"), manifestPath = join6(base, "manifest.json");
|
|
544
|
+
if (!existsSync6(manifestPath)) throw new Error("Original reference study release unavailable. Corrected teaching releases are optional data; set VITRIS_REFERENCE_DATA to the verified teaching bundle root (see docs/DISTRIBUTION.md).");
|
|
545
|
+
const bytes = readFileSync6(manifestPath), manifest = JSON.parse(bytes.toString());
|
|
529
546
|
if (manifest.schemaVersion !== 1 || manifest.release !== release || manifest.labeledPreferenceData !== false || !Array.isArray(manifest.files)) throw new Error("Unsupported original study manifest");
|
|
530
547
|
const readPinned = (pin) => {
|
|
531
548
|
const path = confined3(base, pin.path);
|
|
532
|
-
if (!
|
|
533
|
-
return
|
|
549
|
+
if (!existsSync6(path) || hash(readFileSync6(path)) !== pin.sha256) throw new Error(`Missing or changed original study file: ${pin.path}`);
|
|
550
|
+
return readFileSync6(path);
|
|
534
551
|
};
|
|
535
552
|
const catalog = JSON.parse(readPinned(manifest.catalog).toString());
|
|
536
553
|
if (catalog.schemaVersion !== 1 || catalog.release !== manifest.release || !Array.isArray(catalog.studies)) throw new Error("Unsupported original study catalog");
|
|
@@ -614,15 +631,15 @@ var referenceReleaseDirectory = (release = REFERENCE_RELEASE) => {
|
|
|
614
631
|
throw new Error(`Unsupported reference release: ${release}`);
|
|
615
632
|
};
|
|
616
633
|
var REFERENCE_FAMILIES = ["swiss", "editorial", "expressive-type", "quiet-luxury", "documentary", "campaign", "hospitality", "maximalism", "handmade", "industrial", "technical", "retro", "athletic", "civic", "text-first", "spatial"];
|
|
617
|
-
var referenceHash = (value) =>
|
|
618
|
-
var read2 = (path) => JSON.parse(
|
|
634
|
+
var referenceHash = (value) => createHash7("sha256").update(value).digest("hex");
|
|
635
|
+
var read2 = (path) => JSON.parse(readFileSync7(path, "utf8"));
|
|
619
636
|
function confinedReferencePath(base, path) {
|
|
620
637
|
const target = resolve5(base, path), rel = relative4(resolve5(base), target);
|
|
621
638
|
if (isAbsolute2(path) || !rel || rel === ".." || rel.startsWith(`..${sep2}`) || isAbsolute2(rel)) throw new Error(`Reference path escapes release: ${path}`);
|
|
622
639
|
return target;
|
|
623
640
|
}
|
|
624
641
|
function referencePolicy(root) {
|
|
625
|
-
const launch =
|
|
642
|
+
const launch = existsSync7(join7(root, "launch.json")) ? read2(join7(root, "launch.json")) : {};
|
|
626
643
|
const raw = launch.designReferences;
|
|
627
644
|
if (raw === void 0) return void 0;
|
|
628
645
|
if (!raw || typeof raw !== "object" || Array.isArray(raw)) throw new Error("designReferences must be an object");
|
|
@@ -692,27 +709,27 @@ function validateReferenceCatalog(catalog) {
|
|
|
692
709
|
return errors;
|
|
693
710
|
}
|
|
694
711
|
function loadReferenceCatalog(root, kernel, release = referencePolicy(root)?.release || REFERENCE_RELEASE) {
|
|
695
|
-
const base =
|
|
696
|
-
const manifestPath =
|
|
697
|
-
if (!
|
|
712
|
+
const base = join7(kernel || resolveKernelRoot(root) || root, `design-system/references/${referenceReleaseDirectory(release)}`);
|
|
713
|
+
const manifestPath = join7(base, "manifest.json");
|
|
714
|
+
if (!existsSync7(manifestPath)) throw new Error("Reference release unavailable; restore the pinned harness package");
|
|
698
715
|
const manifest = read2(manifestPath);
|
|
699
716
|
if (manifest.schemaVersion !== 1 || manifest.release !== release || manifest.labeledPreferenceData !== false) throw new Error("Unsupported reference manifest");
|
|
700
|
-
const body =
|
|
717
|
+
const body = readFileSync7(confinedReferencePath(base, manifest.catalog.path));
|
|
701
718
|
if (referenceHash(body) !== manifest.catalog.sha256) throw new Error("Reference catalog hash mismatch");
|
|
702
719
|
const catalog = JSON.parse(body.toString());
|
|
703
720
|
const errors = validateReferenceCatalog(catalog);
|
|
704
721
|
if (errors.length) throw new Error(`Reference catalog quarantined: ${errors.join("; ")}`);
|
|
705
722
|
validateReferenceDependencies(catalog, resolve5(base, "../../.."), base);
|
|
706
|
-
return { base, kernel: resolve5(base, "../../.."), manifest, catalog, manifestHash: referenceHash(
|
|
723
|
+
return { base, kernel: resolve5(base, "../../.."), manifest, catalog, manifestHash: referenceHash(readFileSync7(manifestPath)) };
|
|
707
724
|
}
|
|
708
725
|
function validateReferenceDependencies(catalog, releaseKernel, base) {
|
|
709
726
|
for (const record of catalog.records) for (const view of record.temporalEvidence || []) {
|
|
710
727
|
const path = confinedReferencePath(base, view.recording.path);
|
|
711
|
-
if (!
|
|
728
|
+
if (!existsSync7(path) || referenceHash(readFileSync7(path)) !== view.recording.sha256) throw new Error(`Missing or changed reference recording: ${record.id}`);
|
|
712
729
|
}
|
|
713
730
|
for (const record of catalog.records) for (const view of record.views) if (view.capture) {
|
|
714
731
|
const path = confinedReferencePath(base, view.capture.path);
|
|
715
|
-
if (!
|
|
732
|
+
if (!existsSync7(path) || referenceHash(readFileSync7(path)) !== view.capture.sha256) throw new Error(`Missing or changed reference capture: ${record.id}/${view.id}`);
|
|
716
733
|
}
|
|
717
734
|
const lessons = new Set(loadCompositionPack(releaseKernel).lessons.map((l) => l.id)), studies = loadReferenceStudies(releaseKernel, catalog.release);
|
|
718
735
|
const studyIds = new Set(studies.catalog.studies.map((s) => s.id)), referenceIds = new Set(catalog.records.map((r) => r.id));
|
|
@@ -725,7 +742,7 @@ function validateReferenceDependencies(catalog, releaseKernel, base) {
|
|
|
725
742
|
}
|
|
726
743
|
function referenceSignals(root, release = referencePolicy(root)?.release || REFERENCE_RELEASE) {
|
|
727
744
|
const signals = compositionSignalsFromSite(root);
|
|
728
|
-
const text = (path) =>
|
|
745
|
+
const text = (path) => existsSync7(join7(root, path)) ? read2(join7(root, path)) : {};
|
|
729
746
|
const business = text("onboarding/business.json"), request = text("agent/request.json"), story = text("onboarding/storyboard.json"), narrative = text("onboarding/narrative-brief.json"), media = text("onboarding/media-inventory.json");
|
|
730
747
|
const businessText = JSON.stringify([business.offer, business.audience, business.engagement]);
|
|
731
748
|
const extra = [];
|
|
@@ -800,13 +817,13 @@ function selectReferences(pack, signals, acceptedIds, workingLimit = 4) {
|
|
|
800
817
|
return { schemaVersion: 1, selectorVersion: REFERENCE_SELECTOR, release: pack.catalog.release, manifestHash: pack.manifestHash, catalogHash: pack.manifest.catalog.sha256, inputSignalHash: referenceHash(JSON.stringify(signals)), signals, eligible, excluded, shortlist, selected, accepted: !!acceptedIds, gaps: selected.length < 3 ? ["Fewer than three appropriate references; expand researched coverage or establish missing brief signals"] : [], inspectedEvidence: [], ties: [...new Set(eligible.map((r) => r.score))].map((score) => ({ score, ids: eligible.filter((r) => r.score === score).map((r) => r.id) })).filter((t) => t.ids.length > 1) };
|
|
801
818
|
}
|
|
802
819
|
function frozenReferenceSignals(root, accepted) {
|
|
803
|
-
const runs =
|
|
804
|
-
for (const name of
|
|
805
|
-
const path =
|
|
820
|
+
const runs = join7(root, "agent/runs");
|
|
821
|
+
for (const name of existsSync7(runs) ? readdirSync(runs).filter((n) => n.endsWith(".design-context.json")) : []) {
|
|
822
|
+
const path = join7(runs, name);
|
|
806
823
|
if (statSync(path).size > 2e6) continue;
|
|
807
824
|
const wrapper = read2(path), m = wrapper.manifest;
|
|
808
|
-
const receipt = m?.referenceSelection, preparation =
|
|
809
|
-
if (m?.nodeId !== "reference-analysis" || receipt?.inputSignalHash !== accepted.inputSignalHash || receipt.manifestHash !== accepted.manifestHash || !
|
|
825
|
+
const receipt = m?.referenceSelection, preparation = join7(root, "agent/preparations", name.slice(0, -".design-context.json".length) + ".json");
|
|
826
|
+
if (m?.nodeId !== "reference-analysis" || receipt?.inputSignalHash !== accepted.inputSignalHash || receipt.manifestHash !== accepted.manifestHash || !existsSync7(preparation)) continue;
|
|
810
827
|
const p = read2(preparation);
|
|
811
828
|
if (p.nodeId === "reference-analysis" && ["prepared", "consumed"].includes(p.status) && referenceHash(JSON.stringify(receipt.signals)) === accepted.inputSignalHash) return receipt.signals;
|
|
812
829
|
}
|
|
@@ -846,17 +863,17 @@ function selectCorrectedReferences(pack, signals, acceptedIds, workingLimit = 3)
|
|
|
846
863
|
return { schemaVersion: 1, selectorVersion: referenceSelectorVersion(pack.catalog.release), release: pack.catalog.release, manifestHash: pack.manifestHash, catalogHash: pack.manifest.catalog.sha256, inputSignalHash, signals, eligible, excluded, shortlist, selected, accepted: !!acceptedIds, gaps, inspectedEvidence: [], ties: [...new Set(eligible.map((r) => r.score))].map((score) => ({ score, ids: eligible.filter((r) => r.score === score).map((r) => r.id) })).filter((t) => t.ids.length > 1) };
|
|
847
864
|
}
|
|
848
865
|
function referenceContext(root, stage, kernel) {
|
|
849
|
-
const
|
|
850
|
-
if (!
|
|
851
|
-
const pack = loadReferenceCatalog(root, kernel,
|
|
852
|
-
if (
|
|
853
|
-
const path =
|
|
854
|
-
const analysis =
|
|
866
|
+
const policy2 = referencePolicy(root);
|
|
867
|
+
if (!policy2 || !["reference-analysis", "direction", "storyboard", "representative", "representative-quality", "pages", "visual-review", "content-review", "refine"].includes(stage)) return void 0;
|
|
868
|
+
const pack = loadReferenceCatalog(root, kernel, policy2.release);
|
|
869
|
+
if (policy2.manifestHash && policy2.manifestHash !== pack.manifestHash) throw new Error("Pinned reference manifest changed");
|
|
870
|
+
const path = join7(root, "onboarding/reference-analysis.json");
|
|
871
|
+
const analysis = existsSync7(path) ? read2(path) : void 0;
|
|
855
872
|
const accepted = stage !== "reference-analysis" ? analysis?.referenceSelection : void 0;
|
|
856
|
-
if (accepted &&
|
|
873
|
+
if (accepted && policy2.release !== REFERENCE_RELEASE && accepted.selectorVersion !== referenceSelectorVersion(policy2.release)) throw new Error("Accepted selector version changed; explicitly revise reference analysis");
|
|
857
874
|
if (accepted && accepted.manifestHash !== pack.manifestHash) throw new Error("Accepted reference release changed; explicitly revise reference analysis");
|
|
858
875
|
for (const chosen of accepted?.selected || []) if (!pack.catalog.records.some((r) => r.id === chosen.id && r.revision === chosen.revision)) throw new Error(`Accepted reference revision changed: ${chosen.id}`);
|
|
859
|
-
const receipt = selectReferences(pack, accepted &&
|
|
876
|
+
const receipt = selectReferences(pack, accepted && policy2.release !== REFERENCE_RELEASE ? frozenReferenceSignals(root, accepted) : referenceSignals(root), accepted?.selected.map((r) => r.id), 3);
|
|
860
877
|
const summaries = receipt.selected.map((s) => {
|
|
861
878
|
const r = pack.catalog.records.find((r2) => r2.id === s.id);
|
|
862
879
|
return { id: s.id, revision: s.revision, reason: s.reasons.join(", "), summary: `${r.title}: ${r.adds}`, avoid: r.avoidWhen.join("; "), handle: `reference-${s.id}-r${s.revision}` };
|
|
@@ -869,12 +886,12 @@ function referenceContext(root, stage, kernel) {
|
|
|
869
886
|
});
|
|
870
887
|
const discoveryText = JSON.stringify(receipt, null, 2);
|
|
871
888
|
expansions.push({ id: "reference-discovery", hash: referenceHash(discoveryText), chars: discoveryText.length, text: discoveryText });
|
|
872
|
-
const teaching = referenceStudyExpansions(pack.kernel, receipt.signals, receipt.selected.map((r) => r.id), accepted?.teachingSelected,
|
|
873
|
-
if (
|
|
889
|
+
const teaching = referenceStudyExpansions(pack.kernel, receipt.signals, receipt.selected.map((r) => r.id), accepted?.teachingSelected, policy2.release);
|
|
890
|
+
if (policy2.teachingManifestHash && policy2.teachingManifestHash !== teaching.pack.manifestHash) throw new Error("Pinned original teaching manifest changed");
|
|
874
891
|
if (accepted?.teachingManifestHash && accepted.teachingManifestHash !== teaching.pack.manifestHash) throw new Error("Accepted original teaching release changed; explicitly revise reference analysis");
|
|
875
892
|
expansions.push(...teaching.expansions);
|
|
876
893
|
const teachingText = teaching.selected.map((s) => `- Original study ${s.id}@${s.revision}: ${s.idea} Expand ${s.handle}; inspect its pinned desktop/mobile homepage and interior previews. Fictional facts never transfer.`).join("\n");
|
|
877
|
-
return { policy, pack, receipt: { ...receipt, gaps: [...receipt.gaps, ...teaching.gaps], teachingManifestHash: teaching.pack.manifestHash, teachingSelected: teaching.selected }, text: [text, teachingText, ...teaching.gaps].filter(Boolean).join("\n"), expansions };
|
|
894
|
+
return { policy: policy2, pack, receipt: { ...receipt, gaps: [...receipt.gaps, ...teaching.gaps], teachingManifestHash: teaching.pack.manifestHash, teachingSelected: teaching.selected }, text: [text, teachingText, ...teaching.gaps].filter(Boolean).join("\n"), expansions };
|
|
878
895
|
}
|
|
879
896
|
function referenceCoverage(catalog) {
|
|
880
897
|
const screened = catalog.records.filter((r) => ["live-screened", "deep-reviewed"].includes(r.evidenceLevel)), deep = screened.filter((r) => r.evidenceLevel === "deep-reviewed");
|
|
@@ -892,6 +909,8 @@ export {
|
|
|
892
909
|
calibrationPackDir,
|
|
893
910
|
loadCalibrationManifest,
|
|
894
911
|
calibrationPackHash,
|
|
912
|
+
COMPOSITION_LESSON_RELEASE,
|
|
913
|
+
resolveDesignAuthoring,
|
|
895
914
|
loadKnowledgeV2,
|
|
896
915
|
lessonExtension,
|
|
897
916
|
coverageReport,
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
sourceRevision,
|
|
8
8
|
verifyRefine,
|
|
9
9
|
withMutationLock
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-FRABKM65.js";
|
|
11
11
|
import {
|
|
12
12
|
assertRequestId,
|
|
13
13
|
parseChangePlan,
|
|
@@ -15,11 +15,9 @@ import {
|
|
|
15
15
|
parseSiteIdentity
|
|
16
16
|
} from "./chunk-M4LNHYYR.js";
|
|
17
17
|
import {
|
|
18
|
-
buildVerified
|
|
19
|
-
} from "./chunk-E5Y46VBX.js";
|
|
20
|
-
import {
|
|
18
|
+
buildVerified,
|
|
21
19
|
findHarnessRoot
|
|
22
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-VTI32UGJ.js";
|
|
23
21
|
import {
|
|
24
22
|
files,
|
|
25
23
|
fingerprint,
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-2NW7KSPA.js";
|
|
4
4
|
import {
|
|
5
5
|
verifyPreservedSite
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-QRWGFLUU.js";
|
|
7
7
|
import {
|
|
8
8
|
EXIT_CODES
|
|
9
9
|
} from "./chunk-JCRGE6AL.js";
|
|
@@ -13,17 +13,15 @@ import {
|
|
|
13
13
|
import {
|
|
14
14
|
gradeAll,
|
|
15
15
|
sourceRevision
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-FRABKM65.js";
|
|
17
17
|
import {
|
|
18
18
|
parseReleaseRecord
|
|
19
19
|
} from "./chunk-M4LNHYYR.js";
|
|
20
20
|
import {
|
|
21
21
|
buildVerified,
|
|
22
|
+
findHarnessRoot,
|
|
22
23
|
isPreserveSite
|
|
23
|
-
} from "./chunk-
|
|
24
|
-
import {
|
|
25
|
-
findHarnessRoot
|
|
26
|
-
} from "./chunk-HNORQ74T.js";
|
|
24
|
+
} from "./chunk-VTI32UGJ.js";
|
|
27
25
|
import {
|
|
28
26
|
json,
|
|
29
27
|
save
|
|
@@ -6,10 +6,10 @@ import {
|
|
|
6
6
|
planKitUpgrade,
|
|
7
7
|
recoverKitUpgrade,
|
|
8
8
|
rollbackKitUpgrade
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-FRABKM65.js";
|
|
10
10
|
import {
|
|
11
11
|
findHarnessRoot
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-VTI32UGJ.js";
|
|
13
13
|
import {
|
|
14
14
|
json,
|
|
15
15
|
save
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-XL2DRAYI.js";
|
|
4
4
|
import {
|
|
5
5
|
sourceRevision
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-FRABKM65.js";
|
|
7
7
|
import {
|
|
8
8
|
previewServer
|
|
9
9
|
} from "./chunk-WEFDVXFX.js";
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
providerConsoleWarning,
|
|
23
23
|
readOnlyEmbedProvider,
|
|
24
24
|
unresolvedCaptureBlockers
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-VTI32UGJ.js";
|
|
26
26
|
import {
|
|
27
27
|
save,
|
|
28
28
|
within
|
|
@@ -6,11 +6,11 @@ import {
|
|
|
6
6
|
selectStageKnowledge,
|
|
7
7
|
signalsFromSite,
|
|
8
8
|
siteWidgets
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-FRABKM65.js";
|
|
10
10
|
import {
|
|
11
11
|
coverageReport,
|
|
12
12
|
loadKnowledgeV2
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-HL6JVA4A.js";
|
|
14
14
|
import {
|
|
15
15
|
KNOWLEDGE_RELEASE
|
|
16
16
|
} from "./chunk-BIEDSEL2.js";
|