@warpgogol/werkstatt-shared 0.14.0 → 0.15.0
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 +31 -13
- package/README.uk.md +25 -15
- package/package.json +519 -762
- package/src/{share/agent → agent}/ard-catalog.ts +6 -1
- package/src/{share/agent → agent}/dns-aid.test.ts +2 -2
- package/src/{share/agent → agent}/manifest.ts +15 -1
- package/src/{share/agent → agent}/search.ts +6 -1
- package/src/{share → agent}/tests/api-catalog.test.ts +2 -2
- package/src/{share → agent}/tests/ard-catalog.test.ts +2 -2
- package/src/{share → agent}/tests/capability.test.ts +1 -1
- package/src/{share → agent}/tests/fleet-catalog.test.ts +1 -1
- package/src/{share → agent}/tests/knowledge.test.ts +2 -2
- package/src/{share → agent}/tests/manifest.test.ts +1 -1
- package/src/{share → agent}/tests/mcp-card.test.ts +2 -2
- package/src/agent/tests/omit-empty.test.ts +33 -0
- package/src/{share → agent}/tests/openapi.test.ts +2 -2
- package/src/{share → agent}/tests/proof.test.ts +1 -1
- package/src/{share → attribution}/material-credits.ts +4 -4
- package/src/{share → checks}/check-hints.ts +6 -1
- package/src/checks/index.ts +4 -1
- package/src/checks/lib/astro-site-url.ts +6 -1
- package/src/checks/lib/i18n.ts +14 -0
- package/src/checks/result-helpers.ts +22 -5
- package/src/checks/tests/remediation-auto-populate.test.ts +83 -0
- package/src/{share → client-scripts}/counter-utils.ts +6 -2
- package/src/{share/scripts → client-scripts}/external-link-qr.ts +11 -16
- package/src/{share/scripts → client-scripts}/external-links.ts +12 -1
- package/src/{share/scripts → client-scripts}/gsap-counter.ts +8 -3
- package/src/client-scripts/index.ts +35 -0
- package/src/{share/scripts → client-scripts}/inline-number-animation.ts +1 -1
- package/src/{share/scripts → client-scripts}/lenis.ts +6 -1
- package/src/{share/scripts → client-scripts}/lordicon.ts +6 -1
- package/src/{share/scripts → client-scripts}/orchestrator.ts +10 -1
- package/src/{share/scripts → client-scripts}/scheduler.ts +6 -1
- package/src/client-scripts/scroll-spy.ts +106 -0
- package/src/client-scripts/tests/external-link-qr.test.ts +8 -0
- package/src/client-scripts/tests/external-links.test.ts +25 -0
- package/src/client-scripts/tests/gsap-counter.test.ts +8 -0
- package/src/client-scripts/tests/gsap-mountain-journey.test.ts +8 -0
- package/src/client-scripts/tests/gsap-parallax.test.ts +8 -0
- package/src/client-scripts/tests/gsap-reveal.test.ts +8 -0
- package/src/client-scripts/tests/gsap-stagger.test.ts +8 -0
- package/src/client-scripts/tests/inline-number-animation.test.ts +8 -0
- package/src/client-scripts/tests/lenis.test.ts +8 -0
- package/src/client-scripts/tests/live-photos.test.ts +8 -0
- package/src/client-scripts/tests/lordicon.test.ts +8 -0
- package/src/client-scripts/tests/orchestrator.test.ts +47 -0
- package/src/client-scripts/tests/scheduler.test.ts +23 -0
- package/src/client-scripts/tests/scroll-spy.test.ts +204 -0
- package/src/{share/scripts → client-scripts/tests}/video-player.test.ts +51 -31
- package/src/component/contracts.ts +206 -0
- package/src/component/index.ts +11 -0
- package/src/{share → content}/content-reference.ts +3 -3
- package/src/{share/content → content}/entity-id.ts +6 -3
- package/src/content/index.ts +3 -0
- package/src/{share/content → content}/merge.ts +6 -1
- package/src/content/system-manifest.test.ts +107 -0
- package/src/content/system-manifest.ts +12 -94
- package/src/{share → content}/tests/resolve-field-path.test.ts +1 -1
- package/src/{share → content}/tests/substitute-deep.test.ts +1 -1
- package/src/content-discipline/index.ts +19 -0
- package/src/{share/content-discipline → content-discipline}/parsers.ts +2 -2
- package/src/{share/env.d.ts → env.d.ts} +6 -3
- package/src/fingerprint/canonical-json.ts +731 -0
- package/src/fingerprint/index.ts +12 -0
- package/src/fingerprint/primitives.ts +72 -0
- package/src/{share/i18n → i18n}/localization.ts +6 -2
- package/src/integration/adapters.ts +10 -71
- package/src/integration/dispatch.ts +1 -1
- package/src/integration/funnel.ts +6 -1
- package/src/integration/index.ts +101 -4
- package/src/integration/lagebild-destination-adapter.ts +108 -0
- package/src/integration/lagebild-ingress.ts +7 -12
- package/src/integration/orchestration.ts +11 -10
- package/src/integration/tests/deliver-event.test.ts +1 -1
- package/src/integration/tests/dispatch.test.ts +4 -4
- package/src/integration/tests/hub-runtime.test.ts +22 -14
- package/src/integration/vitest.config.ts +8 -0
- package/src/kernel/desired-state.ts +227 -0
- package/src/kernel/diagnostic.ts +289 -0
- package/src/kernel/fs-atomic.ts +131 -0
- package/src/kernel/index.ts +15 -0
- package/src/kernel/tests/fs-atomic.test.ts +150 -0
- package/src/kernel/tests/workspace-io.test.ts +187 -0
- package/src/kernel/types.ts +459 -0
- package/src/kernel/workspace-io.ts +248 -0
- package/src/{share → knowledge}/tests/claim.test.ts +1 -1
- package/src/{share → knowledge}/tests/derivation.test.ts +1 -1
- package/src/{share → knowledge}/tests/freshness.test.ts +1 -1
- package/src/{share → knowledge}/tests/ledger.test.ts +1 -1
- package/src/{share → knowledge}/tests/plan.test.ts +1 -1
- package/src/{share → knowledge}/tests/source.test.ts +1 -1
- package/src/legal/index.ts +15 -0
- package/src/{share/middleware → middleware}/access-protection.ts +8 -8
- package/src/{share → node}/dev-props-validator.ts +6 -1
- package/src/{share → node}/import-scan.ts +23 -3
- package/src/{share → node}/semantic/derived-prices-loader.ts +4 -2
- package/src/{share → node}/semantic/markdown-twin-provenance.ts +1 -1
- package/src/node/tests/derived-prices-loader.test.ts +59 -0
- package/src/node/tests/markdown-twin-provenance.test.ts +152 -0
- package/src/observability/env-resolver.ts +6 -1
- package/src/observability/index.ts +6 -1
- package/src/observability/otlp-converter.ts +6 -1
- package/src/observability/otlp-transport.ts +6 -1
- package/src/observability/pusher.ts +6 -1
- package/src/observability/redact.ts +6 -1
- package/src/observability/typed-refs.ts +6 -2
- package/src/observability/vitest.config.ts +1 -0
- package/src/{share → offers}/formula-eval.ts +3 -3
- package/src/{share → offers}/tests/formula-eval.test.ts +2 -2
- package/src/onboarding/index.ts +1 -0
- package/src/{share → onboarding}/tests/onboarding-yaml.test.ts +1 -1
- package/src/ontology/archetype-registry.ts +6 -1
- package/src/ontology/archetypes/index.json +33 -1
- package/src/ontology/archetypes/index.yaml +27 -1
- package/src/ontology/archetypes/sections/entity-grid.yaml +46 -0
- package/src/ontology/archetypes/sections/exit-diagram.yaml +43 -0
- package/src/ontology/biome-token-projection.ts +6 -1
- package/src/ontology/cosmic/index.ts +6 -1
- package/src/ontology/cosmic/moon-catalog.ts +6 -1
- package/src/ontology/cosmic/planet-catalog.ts +6 -1
- package/src/ontology/cosmic/star-catalog.ts +6 -1
- package/src/ontology/enums.ts +6 -1
- package/src/ontology/external-surfaces/index.ts +1 -1
- package/src/ontology/index.ts +6 -2
- package/src/ontology/manifest.ts +26 -4
- package/src/ontology/operations/artifact-store.ts +45 -0
- package/src/ontology/operations/dht.ts +98 -0
- package/src/ontology/operations/handoff.ts +92 -0
- package/src/ontology/operations/index.ts +187 -1
- package/src/ontology/operations/leitstand.ts +99 -0
- package/src/ontology/operations/materialization.ts +90 -0
- package/src/ontology/operations/mission.ts +111 -0
- package/src/ontology/operations/naming-policy.ts +132 -0
- package/src/ontology/operations/notausgang.ts +64 -0
- package/src/ontology/operations/release.ts +121 -0
- package/src/ontology/operations/sternsystem.ts +192 -0
- package/src/ontology/operations/werkstatt.ts +48 -0
- package/src/ontology/schemas/biome.ts +7 -2
- package/src/ontology/schemas/capability.ts +1 -1
- package/src/ontology/schemas/constellation.ts +6 -1
- package/src/ontology/schemas/index.ts +6 -2
- package/src/ontology/schemas/manifest-resolver.ts +6 -1
- package/src/ontology/schemas/page-entry.ts +9 -5
- package/src/ontology/schemas/system/growth.ts +6 -1
- package/src/ontology/schemas/system/manifest.ts +40 -1
- package/src/ontology/schemas/system/page-output.ts +7 -6
- package/src/ontology/schemas/system/tests/growth.test.ts +22 -0
- package/src/ontology/schemas/system/tests/integrations.test.ts +12 -0
- package/src/ontology/schemas/system/tests/manifest.test.ts +22 -0
- package/src/ontology/schemas/system/tests/page-output.test.ts +13 -0
- package/src/ontology/schemas/system/tests/release.test.ts +22 -0
- package/src/ontology/schemas/system/tests/text.test.ts +18 -0
- package/src/ontology/schemas/system/tests/verification.test.ts +12 -0
- package/src/ontology/schemas/system/text.ts +15 -0
- package/src/ontology/schemas/system.ts +6 -2
- package/src/ontology/schemas/tests/biome.test.ts +19 -0
- package/src/ontology/schemas/tests/capability.test.ts +22 -0
- package/src/ontology/schemas/tests/constellation.test.ts +22 -0
- package/src/ontology/schemas/tests/dns-records.test.ts +13 -0
- package/src/ontology/schemas/tests/manifest-resolver.test.ts +13 -0
- package/src/ontology/schemas/tests/page-entry.test.ts +22 -0
- package/src/ontology/schemas/tests/section-archetype.test.ts +12 -0
- package/src/ontology/schemas/tests/site-family.test.ts +18 -0
- package/src/ontology/schemas/tests/system.test.ts +20 -0
- package/src/ontology/shared-section-props/body-fragments.ts +2 -0
- package/src/ontology/tests/sternsystem-owner.test.ts +1 -1
- package/src/ontology/vitest.config.ts +1 -0
- package/src/{share → page}/page.ts +13 -9
- package/src/{share → page}/tests/dev-props-validator.test.ts +1 -1
- package/src/{share → page}/tests/hero-section-numbering-parity.test.ts +1 -1
- package/src/passport/index.ts +6 -1
- package/src/passport/key-rotate.ts +10 -2
- package/src/passport/schema.ts +6 -1
- package/src/passport/sign.ts +8 -3
- package/src/passport/vitest.config.ts +1 -0
- package/src/pbt/index.test.ts +95 -0
- package/src/pbt/index.ts +251 -0
- package/src/plugin/plugin-contract.ts +1 -1
- package/src/{share → policy}/entitlement.ts +24 -4
- package/src/{share → policy}/feature-policy.ts +8 -3
- package/src/{share → policy}/visibility.ts +7 -2
- package/src/redirects/redirects.ts +117 -0
- package/src/{share → redirects/tests}/redirects.test.ts +1 -1
- package/src/remediation/remediation-catalog.ts +316 -0
- package/src/{share/routes → routes}/template-filter.ts +1 -1
- package/src/{share → runtime}/runtime-context.ts +7 -2
- package/src/{share → runtime}/shared-context.ts +1 -1
- package/src/{share/schemas → schemas}/claims.ts +2 -2
- package/src/{share/schemas → schemas}/effects.ts +6 -1
- package/src/{share/schemas → schemas}/features.ts +1 -1
- package/src/{share/schemas → schemas}/index.ts +3 -3
- package/src/{share/schemas → schemas}/navigation.ts +6 -1
- package/src/{share/schemas → schemas}/page-base.ts +6 -2
- package/src/{share/schemas → schemas}/person.ts +1 -1
- package/src/{share/schemas → schemas}/standard-list-item.ts +1 -1
- package/src/schemas/tests/claim-records.test.ts +52 -0
- package/src/schemas/tests/claims.test.ts +23 -0
- package/src/schemas/tests/effects.test.ts +116 -0
- package/src/schemas/tests/features.test.ts +61 -0
- package/src/schemas/tests/horizontal-align.test.ts +16 -0
- package/src/schemas/tests/icon-color.test.ts +16 -0
- package/src/schemas/tests/live-photo.test.ts +40 -0
- package/src/schemas/tests/material-credit.test.ts +51 -0
- package/src/schemas/tests/media.test.ts +26 -0
- package/src/schemas/tests/navigation.test.ts +58 -0
- package/src/schemas/tests/page-base.test.ts +19 -0
- package/src/schemas/tests/participant.test.ts +26 -0
- package/src/schemas/tests/person.test.ts +12 -0
- package/src/schemas/tests/print.test.ts +30 -0
- package/src/schemas/tests/section-background.test.ts +31 -0
- package/src/schemas/tests/section-body.test.ts +16 -0
- package/src/schemas/tests/section-cards.test.ts +17 -0
- package/src/schemas/tests/section-cta.test.ts +41 -0
- package/src/schemas/tests/section-header.test.ts +31 -0
- package/src/schemas/tests/section-image.test.ts +24 -0
- package/src/schemas/tests/section-motion.test.ts +29 -0
- package/src/schemas/tests/section-shell.test.ts +42 -0
- package/src/schemas/tests/section-stats.test.ts +17 -0
- package/src/schemas/tests/site-background.test.ts +33 -0
- package/src/schemas/tests/standard-list-item.test.ts +16 -0
- package/src/{share → sections}/rfc0042-utils.ts +1 -1
- package/src/{share/semantic → semantic}/block-extractors/index.ts +20 -1
- package/src/{share/semantic → semantic}/business-projection.ts +95 -1
- package/src/semantic/canonical-uri.ts +54 -0
- package/src/{share/semantic → semantic}/extract.ts +100 -1
- package/src/semantic/fact-extraction.test.ts +47 -0
- package/src/semantic/fact-extraction.ts +46 -0
- package/src/semantic/freshness.ts +67 -0
- package/src/{share/semantic → semantic}/ids.ts +6 -1
- package/src/{share/semantic → semantic}/index.ts +9 -2
- package/src/{share/semantic → semantic}/jsonld/breadcrumb.ts +6 -2
- package/src/{share/semantic → semantic}/jsonld/context.ts +6 -2
- package/src/{share/semantic → semantic}/jsonld/faq.ts +6 -2
- package/src/{share/semantic → semantic}/jsonld/initiative.ts +6 -1
- package/src/{share/semantic → semantic}/jsonld/organization.ts +6 -1
- package/src/{share/semantic → semantic}/jsonld/person.ts +6 -2
- package/src/{share/semantic → semantic}/jsonld/service.ts +6 -2
- package/src/semantic/jsonld/shared.ts +36 -0
- package/src/semantic/jsonld/tests/article.test.ts +89 -0
- package/src/semantic/jsonld/tests/breadcrumb.test.ts +62 -0
- package/src/semantic/jsonld/tests/collection-list.test.ts +39 -0
- package/src/semantic/jsonld/tests/faq.test.ts +60 -0
- package/src/semantic/jsonld/tests/initiative.test.ts +56 -0
- package/src/semantic/jsonld/tests/organization.test.ts +123 -0
- package/src/semantic/jsonld/tests/person.test.ts +89 -0
- package/src/semantic/jsonld/tests/service.test.ts +65 -0
- package/src/semantic/jsonld/tests/shared.test.ts +41 -0
- package/src/semantic/jsonld/tests/video.test.ts +84 -0
- package/src/semantic/jsonld/tests/webpage.test.ts +93 -0
- package/src/semantic/jsonld/tests/website.test.ts +27 -0
- package/src/semantic/jsonld/types.ts +24 -0
- package/src/{share/semantic → semantic}/jsonld/webpage.ts +6 -1
- package/src/semantic/jsonld/website.ts +32 -0
- package/src/{share/semantic → semantic}/jsonld.ts +6 -1
- package/src/{share/semantic → semantic}/llms.ts +41 -3
- package/src/{share/semantic → semantic}/models.ts +27 -38
- package/src/{share/semantic → semantic}/organization-profile.ts +3 -0
- package/src/{share/semantic → semantic}/page-builders/markdown-page.ts +6 -3
- package/src/{share/semantic → semantic}/page-utils.ts +6 -3
- package/src/semantic/tests/ai.test.ts +55 -0
- package/src/semantic/tests/block-extraction.test.ts +34 -0
- package/src/{share/tests/breadcrumbs.test.ts → semantic/tests/breadcrumbs-0229.test.ts} +1 -1
- package/src/semantic/tests/breadcrumbs.test.ts +127 -0
- package/src/{share → semantic}/tests/build-page-price-markers.test.ts +2 -2
- package/src/semantic/tests/build-page.test.ts +122 -0
- package/src/semantic/tests/business-projection.test.ts +367 -0
- package/src/semantic/tests/canonical-uri.test.ts +56 -0
- package/src/semantic/tests/extract.test.ts +209 -0
- package/src/semantic/tests/feed.test.ts +113 -0
- package/src/semantic/tests/freshness.pbt.test.ts +108 -0
- package/src/semantic/tests/helpers.ts +32 -0
- package/src/semantic/tests/ids.test.ts +118 -0
- package/src/{share/tests/image-sitemap.test.ts → semantic/tests/image-sitemap-0150.test.ts} +1 -1
- package/src/semantic/tests/image-sitemap.test.ts +109 -0
- package/src/{share → semantic}/tests/jsonld-service.test.ts +2 -2
- package/src/{share → semantic}/tests/jsonld-video.test.ts +3 -3
- package/src/{share → semantic}/tests/jsonld-webpage.test.ts +3 -3
- package/src/semantic/tests/jsonld.test.ts +61 -0
- package/src/{share → semantic}/tests/llms-0789.test.ts +2 -2
- package/src/semantic/tests/llms-policy.test.ts +60 -0
- package/src/semantic/tests/llms.test.ts +164 -0
- package/src/semantic/tests/markdown-hygiene.test.ts +72 -0
- package/src/semantic/tests/markdown-page.test.ts +97 -0
- package/src/{share → semantic}/tests/organization-jsonld.test.ts +3 -3
- package/src/semantic/tests/organization-profile.test.ts +107 -0
- package/src/{share/tests/output-projection.test.ts → semantic/tests/output-projection-0143.test.ts} +1 -1
- package/src/semantic/tests/output-projection.test.ts +77 -0
- package/src/semantic/tests/page-markdown.test.ts +98 -0
- package/src/semantic/tests/page-utils.test.ts +88 -0
- package/src/{share/tests/price-marker-resolver.test.ts → semantic/tests/price-marker-resolver-0767.test.ts} +2 -2
- package/src/semantic/tests/price-marker-resolver.test.ts +90 -0
- package/src/semantic/tests/project-claims.pbt.test.ts +60 -0
- package/src/semantic/tests/robots.test.ts +70 -0
- package/src/{share/semantic → semantic}/tests/split-sentences.test.ts +1 -1
- package/src/{share → semantic}/tests/twin-path.test.ts +1 -1
- package/src/semantic/tests/update-stamp.test.ts +102 -0
- package/src/signing/index.ts +13 -0
- package/src/signing/key.ts +139 -0
- package/src/signing/sign.ts +66 -0
- package/src/signing/types.ts +29 -0
- package/src/{share/slug → slug}/slug-url.ts +4 -1
- package/src/stack/run-tool.ts +108 -0
- package/src/stack/stack-checks.ts +124 -0
- package/src/stack/tests/run-tool.test.ts +138 -0
- package/src/stack/tests/stack-checks.test.ts +141 -0
- package/src/stack/tests/walk-files.test.ts +131 -0
- package/src/stack/walk-files.ts +114 -0
- package/src/surface/blueprint.ts +342 -66
- package/src/surface/decision-composer.ts +6 -1
- package/src/surface/geo.ts +6 -1
- package/src/surface/index.ts +11 -7
- package/src/surface/types.ts +2 -2
- package/src/surface/vitest.config.ts +1 -0
- package/src/tests/signing-core.test.ts +129 -0
- package/src/{share → text}/css-value-normalize.ts +6 -1
- package/src/text/string-utils.ts +24 -0
- package/src/{share → text}/tests/text-normalize.test.ts +5 -0
- package/src/{share → text}/text-normalize.ts +4 -3
- package/src/{share → text}/wrap-inline-numbers.ts +1 -1
- package/src/types/axiom-study.d.ts +36 -0
- package/src/types/hls-js-light.d.ts +21 -0
- package/src/types/qrcode-browser.d.ts +23 -0
- package/src/typography/fix.pbt.test.ts +208 -0
- package/src/typography/fix.ts +148 -0
- package/src/typography/index.ts +54 -0
- package/src/typography/locale-defaults.ts +97 -0
- package/src/typography/rules-tier1.test.ts +459 -0
- package/src/typography/rules-tier1.ts +925 -0
- package/src/typography/rules-tier2-locale.pbt.test.ts +190 -0
- package/src/typography/rules-tier2-locale.test.ts +286 -0
- package/src/typography/rules-tier2-locale.ts +399 -0
- package/src/typography/rules-tier2-structure.test.ts +330 -0
- package/src/typography/rules-tier2-structure.ts +378 -0
- package/src/typography/rules-tier3-advisory.test.ts +290 -0
- package/src/typography/rules-tier3-advisory.ts +239 -0
- package/src/typography/text-surface.test.ts +244 -0
- package/src/typography/text-surface.ts +448 -0
- package/src/index.ts +0 -14
- package/src/integration/port-barrel.ts +0 -105
- package/src/share/content/index.ts +0 -16
- package/src/share/content-discipline/index.ts +0 -14
- package/src/share/index.ts +0 -86
- package/src/share/legal/index.ts +0 -1
- package/src/share/redirects.ts +0 -54
- package/src/share/scripts/index.ts +0 -26
- package/src/share/semantic/jsonld/shared.ts +0 -31
- package/src/share/semantic/jsonld/types.ts +0 -18
- package/src/share/semantic/jsonld/website.ts +0 -27
- package/src/share/string-utils.ts +0 -19
- package/src/share/types/axiom-study.d.ts +0 -22
- package/src/share/types/hls-js-light.d.ts +0 -16
- package/src/share/types/qrcode-browser.d.ts +0 -18
- package/src/share/utility-registry.yaml +0 -36
- package/src/share/vitest.config.ts +0 -8
- package/src/surface/blueprint-schema.ts +0 -314
- package/src/surface/blueprint-types.ts +0 -256
- /package/src/{share/agent → agent}/api-catalog.ts +0 -0
- /package/src/{share/agent → agent}/capability.ts +0 -0
- /package/src/{share/agent → agent}/dns-aid.ts +0 -0
- /package/src/{share/agent → agent}/fleet-catalog.ts +0 -0
- /package/src/{share/agent → agent}/index.ts +0 -0
- /package/src/{share/agent → agent}/knowledge.ts +0 -0
- /package/src/{share/agent → agent}/mcp-card.ts +0 -0
- /package/src/{share/agent → agent}/omit-empty.ts +0 -0
- /package/src/{share/agent → agent}/openapi.ts +0 -0
- /package/src/{share/agent → agent}/proof.ts +0 -0
- /package/src/{share/agent → agent}/search.test.ts +0 -0
- /package/src/{share → attribution}/attribution-display.ts +0 -0
- /package/src/{share/scripts → client-scripts}/gsap-mountain-journey.ts +0 -0
- /package/src/{share/scripts → client-scripts}/gsap-parallax.ts +0 -0
- /package/src/{share/scripts → client-scripts}/gsap-reveal.ts +0 -0
- /package/src/{share/scripts → client-scripts}/gsap-stagger.ts +0 -0
- /package/src/{share/scripts → client-scripts}/live-photos.ts +0 -0
- /package/src/{share/scripts → client-scripts}/video-player.ts +0 -0
- /package/src/{share/content → content}/resolve-field-path.ts +0 -0
- /package/src/{share/content → content}/substitute-deep.ts +0 -0
- /package/src/{share → content}/tests/content-ref-index.test.ts +0 -0
- /package/src/{share/content-discipline → content-discipline}/types.ts +0 -0
- /package/src/{share → image-provider}/image-provider.ts +0 -0
- /package/src/{share/knowledge → knowledge}/claim.ts +0 -0
- /package/src/{share/knowledge → knowledge}/derivation.ts +0 -0
- /package/src/{share/knowledge → knowledge}/freshness.ts +0 -0
- /package/src/{share/knowledge → knowledge}/index.ts +0 -0
- /package/src/{share/knowledge → knowledge}/ledger.ts +0 -0
- /package/src/{share/knowledge → knowledge}/plan.ts +0 -0
- /package/src/{share/knowledge → knowledge}/source.ts +0 -0
- /package/src/{share/legal → legal}/translation-policy.ts +0 -0
- /package/src/{share/middleware → middleware}/language-redirect.ts +0 -0
- /package/src/{share/middleware → middleware}/tests/access-protection.test.ts +0 -0
- /package/src/{share → node}/fs/index.ts +0 -0
- /package/src/{share/tests/markdown-twin-provenance.test.ts → node/tests/markdown-twin-provenance-0613.test.ts} +0 -0
- /package/src/{share → offers}/offer-capacity.ts +0 -0
- /package/src/{share/onboarding-yaml/index.ts → onboarding/yaml.ts} +0 -0
- /package/src/{share → ontology}/tests/ontology-role-by-cosmic-name.test.ts +0 -0
- /package/src/{share/routes → routes}/tests/template-filter.test.ts +0 -0
- /package/src/{share/schemas → schemas}/claim-records.ts +0 -0
- /package/src/{share/schemas → schemas}/horizontal-align.ts +0 -0
- /package/src/{share/schemas → schemas}/icon-color.ts +0 -0
- /package/src/{share/schemas → schemas}/live-photo.ts +0 -0
- /package/src/{share/schemas → schemas}/material-credit.ts +0 -0
- /package/src/{share/schemas → schemas}/media.ts +0 -0
- /package/src/{share/schemas → schemas}/participant.ts +0 -0
- /package/src/{share/schemas → schemas}/print.ts +0 -0
- /package/src/{share/schemas → schemas}/section-background.ts +0 -0
- /package/src/{share/schemas → schemas}/section-body.ts +0 -0
- /package/src/{share/schemas → schemas}/section-cards.ts +0 -0
- /package/src/{share/schemas → schemas}/section-cta.ts +0 -0
- /package/src/{share/schemas → schemas}/section-header.ts +0 -0
- /package/src/{share/schemas → schemas}/section-image.ts +0 -0
- /package/src/{share/schemas → schemas}/section-motion.ts +0 -0
- /package/src/{share/schemas → schemas}/section-shell.ts +0 -0
- /package/src/{share/schemas → schemas}/section-stats.ts +0 -0
- /package/src/{share/schemas → schemas}/site-background.ts +0 -0
- /package/src/{share/semantic → semantic}/ai.ts +0 -0
- /package/src/{share/semantic → semantic}/block-extraction.ts +0 -0
- /package/src/{share/semantic → semantic}/breadcrumbs.ts +0 -0
- /package/src/{share/semantic → semantic}/build-page.ts +0 -0
- /package/src/{share/semantic → semantic}/feed.ts +0 -0
- /package/src/{share/semantic → semantic}/image-sitemap.ts +0 -0
- /package/src/{share/semantic → semantic}/jsonld/article.ts +0 -0
- /package/src/{share/semantic → semantic}/jsonld/collection-list.ts +0 -0
- /package/src/{share/semantic → semantic}/jsonld/video.ts +0 -0
- /package/src/{share/semantic → semantic}/llms-policy.ts +0 -0
- /package/src/{share/semantic → semantic}/markdown-hygiene.ts +0 -0
- /package/src/{share/semantic → semantic}/output-projection.ts +0 -0
- /package/src/{share/semantic → semantic}/page-markdown.ts +0 -0
- /package/src/{share/semantic → semantic}/price-marker-resolver.ts +0 -0
- /package/src/{share/semantic → semantic}/robots.ts +0 -0
- /package/src/{share/semantic → semantic}/update-stamp.ts +0 -0
- /package/src/{share/slug → slug}/heading-slugger.ts +0 -0
- /package/src/{share/slug → slug}/index.ts +0 -0
- /package/src/{share/slug → slug}/slug-id.ts +0 -0
- /package/src/{share/slug → slug}/strategies.ts +0 -0
- /package/src/{share/slug → slug}/tests/slug.test.ts +0 -0
- /package/src/{share → text}/tests/text-normalize.pbt.test.ts +0 -0
- /package/src/{share → text}/text-position.ts +0 -0
|
@@ -6,14 +6,18 @@ Every page .md file under apps/<app>/src/content/pages/ must conform to PageEntr
|
|
|
6
6
|
Exports BlockEntrySchema and PageEntrySchema — pure declarative schemas, no I/O.
|
|
7
7
|
</purpose>
|
|
8
8
|
<non-goals>
|
|
9
|
-
<item>Do not implement the buildPage pipeline here — that lives in @warpgogol/werkstatt-shared/
|
|
9
|
+
<item>Do not implement the buildPage pipeline here — that lives in @warpgogol/werkstatt-shared/page.</item>
|
|
10
10
|
<item>Do not parse YAML here; callers provide parsed objects to schema.parse().</item>
|
|
11
11
|
<item>Do not validate cross-system.yaml references — that is page.block.validate's job.</item>
|
|
12
12
|
</non-goals>
|
|
13
13
|
</MODULE_CONTRACT>
|
|
14
14
|
<CHANGE_SUMMARY>
|
|
15
|
-
<item>
|
|
16
|
-
|
|
15
|
+
<item>RFC-1097: step 6 — compass.migrate codemod run
|
|
16
|
+
|
|
17
|
+
Mechanical v1 to v2 header migration across the workspace: 942 files rewritten — CHANGE_SUMMARY windows collapsed into history, forbidden v1 blocks stripped, KEY_DECISIONS seeded from @ai-invariant comments (5 files) or TODO placeholders (103 files), blocks reordered to canonical order.</item>
|
|
18
|
+
<item>RFC-1097: sweep — werkstatt-engine clean
|
|
19
|
+
|
|
20
|
+
Sweep batch 4: 73 Compass headers on headerless engine files (certification, component-runtime, isolation, evolution, testing), real KEY_DECISIONS on 75 files (kernel, cache, dht, swim, gitmesh, runtime), ~80 purpose expansions (CONTRACT-02/PURPOSE-02), non-goals on 13 CONTRACT-03 files, CS-07 history literal fix repo-wide (253 files). Policy: .template.ts/.template.astro excludedPaths. werkstatt-engine now 0 diagnostics.</item>
|
|
17
21
|
</CHANGE_SUMMARY>
|
|
18
22
|
*/
|
|
19
23
|
|
|
@@ -35,8 +39,8 @@ const PRINT_REGIONS = [
|
|
|
35
39
|
] as const;
|
|
36
40
|
|
|
37
41
|
// ---------------------------------------------------------------------------
|
|
38
|
-
// VisibilityExprSchema (re-declared here to avoid cross-package dep on @warpgogol/werkstatt-shared/
|
|
39
|
-
// page.block.validate uses the canonical one from @warpgogol/werkstatt-shared/
|
|
42
|
+
// VisibilityExprSchema (re-declared here to avoid cross-package dep on @warpgogol/werkstatt-shared/page)
|
|
43
|
+
// page.block.validate uses the canonical one from @warpgogol/werkstatt-shared/page;
|
|
40
44
|
// the schema here is for Astro content-collection integration.
|
|
41
45
|
// ---------------------------------------------------------------------------
|
|
42
46
|
|
|
@@ -8,7 +8,12 @@ Exports growthVendorSchema as the canonical vendor config shape, reused by @warp
|
|
|
8
8
|
</MODULE_CONTRACT>
|
|
9
9
|
<CHANGE_SUMMARY>
|
|
10
10
|
<item>RFC-0303 Phase 3: extracted from schemas/system.ts as part of the domain split.</item>
|
|
11
|
-
<item>
|
|
11
|
+
<item>RFC-1097: step 6 — compass.migrate codemod run
|
|
12
|
+
|
|
13
|
+
Mechanical v1 to v2 header migration across the workspace: 942 files rewritten — CHANGE_SUMMARY windows collapsed into history, forbidden v1 blocks stripped, KEY_DECISIONS seeded from @ai-invariant comments (5 files) or TODO placeholders (103 files), blocks reordered to canonical order.</item>
|
|
14
|
+
<item>RFC-1097: sweep — werkstatt-engine clean
|
|
15
|
+
|
|
16
|
+
Sweep batch 4: 73 Compass headers on headerless engine files (certification, component-runtime, isolation, evolution, testing), real KEY_DECISIONS on 75 files (kernel, cache, dht, swim, gitmesh, runtime), ~80 purpose expansions (CONTRACT-02/PURPOSE-02), non-goals on 13 CONTRACT-03 files, CS-07 history literal fix repo-wide (253 files). Policy: .template.ts/.template.astro excludedPaths. werkstatt-engine now 0 diagnostics.</item>
|
|
12
17
|
</CHANGE_SUMMARY>
|
|
13
18
|
*/
|
|
14
19
|
|
|
@@ -9,6 +9,9 @@
|
|
|
9
9
|
<item>RFC-0303 Phase 3: extracted from schemas/system.ts as part of the domain split.</item>
|
|
10
10
|
<item>RFC-0377: added optional `audience` field to the per-page pin schema.</item>
|
|
11
11
|
<item>ADR-0062: added `ctaTarget` to identity, `sectionNav` + `ctaTarget` to page pins, created `systemCollectionSchema` for content collection typing.</item>
|
|
12
|
+
<item>RFC-1106: step 2 — extend systemManifestSchema
|
|
13
|
+
|
|
14
|
+
Add identity.legal (RFC-0096) and seo.anchorText.extraStopPhrases (RFC-0911) to systemManifestSchema — the two interface-only fields with living consumers. No dead fields found: all other interface fields already exist in the schema.</item>
|
|
12
15
|
</CHANGE_SUMMARY>
|
|
13
16
|
*/
|
|
14
17
|
|
|
@@ -16,7 +19,7 @@ import { z } from "zod";
|
|
|
16
19
|
|
|
17
20
|
import { systemSharedContextSchema, systemGrowthSchema } from "./growth.ts";
|
|
18
21
|
import { systemReleaseSchema } from "./release.ts";
|
|
19
|
-
import { systemTextSchema } from "./text.ts";
|
|
22
|
+
import { systemTextSchema, systemTypographySchema } from "./text.ts";
|
|
20
23
|
import { systemIntegrationsSchema } from "./integrations.ts";
|
|
21
24
|
import { systemVerificationSchema } from "./verification.ts";
|
|
22
25
|
import { semanticPageTypeSchema, articleMetadataSchema, pageOutputSchema } from "./page-output.ts";
|
|
@@ -87,6 +90,18 @@ export const systemManifestSchema = z.object({
|
|
|
87
90
|
* Used by resolve-route.ts to populate `ctaTarget` in PageRouteData.
|
|
88
91
|
*/
|
|
89
92
|
ctaTarget: z.string().min(1).optional(),
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* RFC-0096: Operator details consumed by legal.scaffold to fill
|
|
96
|
+
* Impressum / Datenschutz stubs.
|
|
97
|
+
*/
|
|
98
|
+
legal: z
|
|
99
|
+
.object({
|
|
100
|
+
responsibleName: z.string().min(1).optional(),
|
|
101
|
+
address: z.string().min(1).optional(),
|
|
102
|
+
email: z.string().min(1).optional(),
|
|
103
|
+
})
|
|
104
|
+
.optional(),
|
|
90
105
|
}),
|
|
91
106
|
|
|
92
107
|
/**
|
|
@@ -294,6 +309,12 @@ export const systemManifestSchema = z.object({
|
|
|
294
309
|
*/
|
|
295
310
|
text: systemTextSchema.optional(),
|
|
296
311
|
|
|
312
|
+
/**
|
|
313
|
+
* RFC-1070: typography validator configuration. Allowed tokens and
|
|
314
|
+
* per-locale abbreviation overrides. Client-writable.
|
|
315
|
+
*/
|
|
316
|
+
typography: systemTypographySchema.optional(),
|
|
317
|
+
|
|
297
318
|
/**
|
|
298
319
|
* RFC-0169: subscription billing binding. `billing.stripeCustomerId` is the
|
|
299
320
|
* Stripe customer whose active Entitlements gate this site's paid modules.
|
|
@@ -494,6 +515,8 @@ export const systemManifestSchema = z.object({
|
|
|
494
515
|
* `responsibilityBlock.swapOrder` is true, the page handler swaps
|
|
495
516
|
* primaryItems/secondaryItems and labels.primary/labels.secondary at
|
|
496
517
|
* render time. Default false = render as authored in content.
|
|
518
|
+
* RFC-1087: `codeHighlightTheme` selects the Shiki theme for build-time
|
|
519
|
+
* syntax highlighting. Default "github-light" when absent.
|
|
497
520
|
*/
|
|
498
521
|
ui: z
|
|
499
522
|
.object({
|
|
@@ -502,6 +525,7 @@ export const systemManifestSchema = z.object({
|
|
|
502
525
|
swapOrder: z.boolean().optional().default(false),
|
|
503
526
|
})
|
|
504
527
|
.optional(),
|
|
528
|
+
codeHighlightTheme: z.string().min(1).optional(),
|
|
505
529
|
})
|
|
506
530
|
.optional(),
|
|
507
531
|
|
|
@@ -511,6 +535,21 @@ export const systemManifestSchema = z.object({
|
|
|
511
535
|
* When absent, search.verification.validate emits SEARCH-VERIFY-01.
|
|
512
536
|
*/
|
|
513
537
|
verification: systemVerificationSchema.optional(),
|
|
538
|
+
|
|
539
|
+
/**
|
|
540
|
+
* RFC-0911: SEO validator configuration extension point.
|
|
541
|
+
* Sites extend the built-in de/uk anchor-text stop-list via
|
|
542
|
+
* `seo.anchorText.extraStopPhrases` (lang → phrases).
|
|
543
|
+
*/
|
|
544
|
+
seo: z
|
|
545
|
+
.object({
|
|
546
|
+
anchorText: z
|
|
547
|
+
.object({
|
|
548
|
+
extraStopPhrases: z.record(z.string(), z.array(z.string())).optional(),
|
|
549
|
+
})
|
|
550
|
+
.optional(),
|
|
551
|
+
})
|
|
552
|
+
.optional(),
|
|
514
553
|
});
|
|
515
554
|
|
|
516
555
|
export type SystemManifest = z.infer<typeof systemManifestSchema>;
|
|
@@ -7,6 +7,9 @@
|
|
|
7
7
|
</MODULE_CONTRACT>
|
|
8
8
|
<CHANGE_SUMMARY>
|
|
9
9
|
<item>RFC-0303 Phase 3: extracted from schemas/system.ts as part of the domain split.</item>
|
|
10
|
+
<item>RFC-1106: step 4 — single-source SemanticPageType
|
|
11
|
+
|
|
12
|
+
semanticPageTypeSchema (ontology/schemas/system/page-output.ts) is now the sole declaration of the closed DNA-19 vocabulary. semantic/models.ts derives the type via z.infer and SEMANTIC_PAGE_TYPES via schema.options — the hand-synced union/array and stale circular-dependency comments are deleted.</item>
|
|
10
13
|
</CHANGE_SUMMARY>
|
|
11
14
|
*/
|
|
12
15
|
|
|
@@ -15,13 +18,11 @@ import { z } from "zod";
|
|
|
15
18
|
/**
|
|
16
19
|
* RFC-0042/RFC-0050: the semantic role of a page. Drives semantic model
|
|
17
20
|
* construction and the default llms inclusion depth. Mirrors
|
|
18
|
-
* SemanticPageType in @warpgogol/werkstatt-shared/
|
|
21
|
+
* SemanticPageType in @warpgogol/werkstatt-shared/semantic.
|
|
19
22
|
*/
|
|
20
|
-
//
|
|
21
|
-
//
|
|
22
|
-
//
|
|
23
|
-
// compile-time contract. They are kept in sync manually to avoid a circular
|
|
24
|
-
// dependency between `ontology` and `share`.
|
|
23
|
+
// RFC-1106: this schema is the sole declaration of the SemanticPageType closed
|
|
24
|
+
// vocabulary (DNA-19). `semantic/models.ts` derives the type and the runtime
|
|
25
|
+
// array from it — do not declare a parallel union elsewhere.
|
|
25
26
|
export const semanticPageTypeSchema = z.enum([
|
|
26
27
|
"home",
|
|
27
28
|
"about",
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { systemGrowthSchema, growthVendorSchema } from "../growth.ts";
|
|
3
|
+
|
|
4
|
+
describe("growthVendorSchema", () => {
|
|
5
|
+
it("is defined", () => {
|
|
6
|
+
expect(growthVendorSchema).toBeDefined();
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
it("rejects null", () => {
|
|
10
|
+
expect(() => growthVendorSchema.parse(null)).toThrow();
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
describe("systemGrowthSchema", () => {
|
|
15
|
+
it("is defined", () => {
|
|
16
|
+
expect(systemGrowthSchema).toBeDefined();
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it("rejects null", () => {
|
|
20
|
+
expect(() => systemGrowthSchema.parse(null)).toThrow();
|
|
21
|
+
});
|
|
22
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { systemIntegrationsSchema } from "../integrations.ts";
|
|
3
|
+
|
|
4
|
+
describe("systemIntegrationsSchema", () => {
|
|
5
|
+
it("is defined", () => {
|
|
6
|
+
expect(systemIntegrationsSchema).toBeDefined();
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
it("rejects null", () => {
|
|
10
|
+
expect(() => systemIntegrationsSchema.parse(null)).toThrow();
|
|
11
|
+
});
|
|
12
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { systemManifestSchema, systemCollectionSchema } from "../manifest.ts";
|
|
3
|
+
|
|
4
|
+
describe("systemManifestSchema", () => {
|
|
5
|
+
it("is defined", () => {
|
|
6
|
+
expect(systemManifestSchema).toBeDefined();
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
it("rejects null", () => {
|
|
10
|
+
expect(() => systemManifestSchema.parse(null)).toThrow();
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
describe("systemCollectionSchema", () => {
|
|
15
|
+
it("is defined", () => {
|
|
16
|
+
expect(systemCollectionSchema).toBeDefined();
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it("rejects null", () => {
|
|
20
|
+
expect(() => systemCollectionSchema.parse(null)).toThrow();
|
|
21
|
+
});
|
|
22
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { semanticPageTypeSchema } from "../page-output.ts";
|
|
3
|
+
|
|
4
|
+
describe("semanticPageTypeSchema", () => {
|
|
5
|
+
it("accepts valid page types", () => {
|
|
6
|
+
const result = semanticPageTypeSchema.safeParse("home");
|
|
7
|
+
expect(result.success).toBe(true);
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it("rejects invalid page type", () => {
|
|
11
|
+
expect(() => semanticPageTypeSchema.parse("invalid-type")).toThrow();
|
|
12
|
+
});
|
|
13
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { systemPassportSchema, systemReleaseSchema } from "../release.ts";
|
|
3
|
+
|
|
4
|
+
describe("systemPassportSchema", () => {
|
|
5
|
+
it("is defined", () => {
|
|
6
|
+
expect(systemPassportSchema).toBeDefined();
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
it("rejects null", () => {
|
|
10
|
+
expect(() => systemPassportSchema.parse(null)).toThrow();
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
describe("systemReleaseSchema", () => {
|
|
15
|
+
it("is defined", () => {
|
|
16
|
+
expect(systemReleaseSchema).toBeDefined();
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it("rejects null", () => {
|
|
20
|
+
expect(() => systemReleaseSchema.parse(null)).toThrow();
|
|
21
|
+
});
|
|
22
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { systemTextSchema, systemTextNormalizeSchema } from "../text.ts";
|
|
3
|
+
|
|
4
|
+
describe("systemTextSchema", () => {
|
|
5
|
+
it("is defined", () => {
|
|
6
|
+
expect(systemTextSchema).toBeDefined();
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
it("rejects null", () => {
|
|
10
|
+
expect(() => systemTextSchema.parse(null)).toThrow();
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
describe("systemTextNormalizeSchema", () => {
|
|
15
|
+
it("is defined", () => {
|
|
16
|
+
expect(systemTextNormalizeSchema).toBeDefined();
|
|
17
|
+
});
|
|
18
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { systemVerificationSchema } from "../verification.ts";
|
|
3
|
+
|
|
4
|
+
describe("systemVerificationSchema", () => {
|
|
5
|
+
it("is defined", () => {
|
|
6
|
+
expect(systemVerificationSchema).toBeDefined();
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
it("rejects null", () => {
|
|
10
|
+
expect(() => systemVerificationSchema.parse(null)).toThrow();
|
|
11
|
+
});
|
|
12
|
+
});
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
</MODULE_CONTRACT>
|
|
8
8
|
<CHANGE_SUMMARY>
|
|
9
9
|
<item>RFC-0303 Phase 3: extracted from schemas/system.ts as part of the domain split.</item>
|
|
10
|
+
<item>RFC-1070: added systemTypographySchema for typography validator configuration.</item>
|
|
10
11
|
</CHANGE_SUMMARY>
|
|
11
12
|
*/
|
|
12
13
|
|
|
@@ -49,6 +50,20 @@ export const systemTextNormalizeSchema = z
|
|
|
49
50
|
})
|
|
50
51
|
.strict();
|
|
51
52
|
|
|
53
|
+
/**
|
|
54
|
+
* The `typography` block in system.yaml (RFC-1070). Controls typography validator
|
|
55
|
+
* configuration: allowed tokens and per-locale abbreviation overrides.
|
|
56
|
+
* CLIENT-WRITABLE.
|
|
57
|
+
*/
|
|
58
|
+
export const systemTypographySchema = z
|
|
59
|
+
.object({
|
|
60
|
+
/** Additional allowed tokens exempt from TYPO-CASE-01 and TYPO-APOS rules. */
|
|
61
|
+
allowedTokens: z.array(z.string()).optional(),
|
|
62
|
+
/** Per-locale abbreviation overrides. Merged into built-in locale defaults. */
|
|
63
|
+
abbreviations: z.record(z.string(), z.array(z.string())).optional(),
|
|
64
|
+
})
|
|
65
|
+
.strict();
|
|
66
|
+
|
|
52
67
|
export const systemTextSchema = z
|
|
53
68
|
.object({
|
|
54
69
|
normalize: systemTextNormalizeSchema.optional(),
|
|
@@ -13,10 +13,14 @@ Stored at apps/<app-slug>/system.yaml.
|
|
|
13
13
|
</non-goals>
|
|
14
14
|
</MODULE_CONTRACT>
|
|
15
15
|
<CHANGE_SUMMARY>
|
|
16
|
-
<item>Wave 1 (RFC-0025): Initial creation.</item>
|
|
17
|
-
<item>Wave 1 (RFC-0027): Added growth block — vendor adapter binding, active funnels, active experiments.</item>
|
|
18
16
|
<item>RFC-0328: Added "legal" to semanticPageTypeSchema.</item>
|
|
19
17
|
<item>RFC-0303 Phase 3: split the flat 822-line file into sub-modules under system/; this file is now the re-export shim.</item>
|
|
18
|
+
<item>RFC-1097: step 6 — compass.migrate codemod run
|
|
19
|
+
|
|
20
|
+
Mechanical v1 to v2 header migration across the workspace: 942 files rewritten — CHANGE_SUMMARY windows collapsed into history, forbidden v1 blocks stripped, KEY_DECISIONS seeded from @ai-invariant comments (5 files) or TODO placeholders (103 files), blocks reordered to canonical order.</item>
|
|
21
|
+
<item>RFC-1097: sweep — werkstatt-engine clean
|
|
22
|
+
|
|
23
|
+
Sweep batch 4: 73 Compass headers on headerless engine files (certification, component-runtime, isolation, evolution, testing), real KEY_DECISIONS on 75 files (kernel, cache, dht, swim, gitmesh, runtime), ~80 purpose expansions (CONTRACT-02/PURPOSE-02), non-goals on 13 CONTRACT-03 files, CS-07 history literal fix repo-wide (253 files). Policy: .template.ts/.template.astro excludedPaths. werkstatt-engine now 0 diagnostics.</item>
|
|
20
24
|
</CHANGE_SUMMARY>
|
|
21
25
|
*/
|
|
22
26
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { biomeProvenanceSchema, biomeAxesSchema } from "../biome.ts";
|
|
3
|
+
|
|
4
|
+
describe("biomeProvenanceSchema", () => {
|
|
5
|
+
it("is defined", () => {
|
|
6
|
+
expect(biomeProvenanceSchema).toBeDefined();
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
it("rejects null", () => {
|
|
10
|
+
expect(() => biomeProvenanceSchema.parse(null)).toThrow();
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
describe("biomeAxesSchema", () => {
|
|
15
|
+
it("is defined and parseable", () => {
|
|
16
|
+
expect(biomeAxesSchema).toBeDefined();
|
|
17
|
+
expect(() => biomeAxesSchema.parse(null)).toThrow();
|
|
18
|
+
});
|
|
19
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { capabilityInputOutputSchema, capabilityRecordSchema } from "../capability.ts";
|
|
3
|
+
|
|
4
|
+
describe("capabilityInputOutputSchema", () => {
|
|
5
|
+
it("is defined", () => {
|
|
6
|
+
expect(capabilityInputOutputSchema).toBeDefined();
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
it("rejects null", () => {
|
|
10
|
+
expect(() => capabilityInputOutputSchema.parse(null)).toThrow();
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
describe("capabilityRecordSchema", () => {
|
|
15
|
+
it("is defined", () => {
|
|
16
|
+
expect(capabilityRecordSchema).toBeDefined();
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it("rejects null", () => {
|
|
20
|
+
expect(() => capabilityRecordSchema.parse(null)).toThrow();
|
|
21
|
+
});
|
|
22
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { constellationSlotSchema, constellationSchema } from "../constellation.ts";
|
|
3
|
+
|
|
4
|
+
describe("constellationSlotSchema", () => {
|
|
5
|
+
it("is defined", () => {
|
|
6
|
+
expect(constellationSlotSchema).toBeDefined();
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
it("rejects null", () => {
|
|
10
|
+
expect(() => constellationSlotSchema.parse(null)).toThrow();
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
describe("constellationSchema", () => {
|
|
15
|
+
it("is defined", () => {
|
|
16
|
+
expect(constellationSchema).toBeDefined();
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it("rejects null", () => {
|
|
20
|
+
expect(() => constellationSchema.parse(null)).toThrow();
|
|
21
|
+
});
|
|
22
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { dnsRecordTypeSchema } from "../dns-records.ts";
|
|
3
|
+
|
|
4
|
+
describe("dnsRecordTypeSchema", () => {
|
|
5
|
+
it("accepts valid DNS record types", () => {
|
|
6
|
+
const result = dnsRecordTypeSchema.safeParse("A");
|
|
7
|
+
expect(result.success).toBe(true);
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it("rejects invalid type", () => {
|
|
11
|
+
expect(() => dnsRecordTypeSchema.parse("INVALID")).toThrow();
|
|
12
|
+
});
|
|
13
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { getSectionPropsSchema } from "../manifest-resolver.ts";
|
|
3
|
+
|
|
4
|
+
describe("getSectionPropsSchema", () => {
|
|
5
|
+
it("is an async function", () => {
|
|
6
|
+
expect(typeof getSectionPropsSchema).toBe("function");
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
it("returns null for unknown archetype", async () => {
|
|
10
|
+
const result = await getSectionPropsSchema("nonexistent-archetype", "/nonexistent");
|
|
11
|
+
expect(result).toBeNull();
|
|
12
|
+
});
|
|
13
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { BlockEntrySchema, PageEntrySchema } from "../page-entry.ts";
|
|
3
|
+
|
|
4
|
+
describe("BlockEntrySchema", () => {
|
|
5
|
+
it("is defined", () => {
|
|
6
|
+
expect(BlockEntrySchema).toBeDefined();
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
it("rejects null", () => {
|
|
10
|
+
expect(() => BlockEntrySchema.parse(null)).toThrow();
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
describe("PageEntrySchema", () => {
|
|
15
|
+
it("is defined", () => {
|
|
16
|
+
expect(PageEntrySchema).toBeDefined();
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it("rejects null", () => {
|
|
20
|
+
expect(() => PageEntrySchema.parse(null)).toThrow();
|
|
21
|
+
});
|
|
22
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { sectionArchetypeSchema } from "../section-archetype.ts";
|
|
3
|
+
|
|
4
|
+
describe("sectionArchetypeSchema", () => {
|
|
5
|
+
it("is defined", () => {
|
|
6
|
+
expect(sectionArchetypeSchema).toBeDefined();
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
it("rejects null", () => {
|
|
10
|
+
expect(() => sectionArchetypeSchema.parse(null)).toThrow();
|
|
11
|
+
});
|
|
12
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { siteFamilySchema, SiteFamilyContract } from "../site-family.ts";
|
|
3
|
+
|
|
4
|
+
describe("siteFamilySchema", () => {
|
|
5
|
+
it("is defined", () => {
|
|
6
|
+
expect(siteFamilySchema).toBeDefined();
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
it("rejects null", () => {
|
|
10
|
+
expect(() => siteFamilySchema.parse(null)).toThrow();
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
describe("SiteFamilyContract", () => {
|
|
15
|
+
it("is the same schema as siteFamilySchema", () => {
|
|
16
|
+
expect(SiteFamilyContract).toBe(siteFamilySchema);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import * as systemModule from "../system.ts";
|
|
3
|
+
|
|
4
|
+
describe("system.ts barrel re-exports", () => {
|
|
5
|
+
it("re-exports systemManifestSchema", () => {
|
|
6
|
+
expect(systemModule.systemManifestSchema).toBeDefined();
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
it("re-exports systemIntegrationsSchema", () => {
|
|
10
|
+
expect(systemModule.systemIntegrationsSchema).toBeDefined();
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
it("re-exports systemPassportSchema", () => {
|
|
14
|
+
expect(systemModule.systemPassportSchema).toBeDefined();
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
it("re-exports systemReleaseSchema", () => {
|
|
18
|
+
expect(systemModule.systemReleaseSchema).toBeDefined();
|
|
19
|
+
});
|
|
20
|
+
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { test, expect, describe } from "vitest";
|
|
2
|
-
import { systemConfigSchema } from "@warpgogol/werkstatt-
|
|
2
|
+
import { systemConfigSchema } from "@warpgogol/werkstatt-shared/ontology/operations";
|
|
3
3
|
|
|
4
4
|
const validBaseEntry = {
|
|
5
5
|
schemaVersion: "system-config/v1",
|
|
@@ -11,17 +11,21 @@ pipeline for each block defined in a page's content.
|
|
|
11
11
|
</non-goals>
|
|
12
12
|
</MODULE_CONTRACT>
|
|
13
13
|
<CHANGE_SUMMARY>
|
|
14
|
-
<item>Wave 1 (RFC-0026): Initial creation — ResolvedPage/ResolvedBlock types and buildPage pipeline.</item>
|
|
15
|
-
<item>Moved SectionProps into shared package for cross-app consumption.</item>
|
|
16
|
-
<item>RFC-0091: PLANET_IMPORT_PATHS and BLOCK_TYPE_TO_COSMIC_NAME now derived from registry; import from @warpgogol/werkstatt-shared/ontology/archetypes instead of literal constants.</item>
|
|
17
14
|
<item>RFC-0262: add the optional BuildPageOptions.validateProps dev-time fail-fast hook, called once per resolved shell and content block.</item>
|
|
18
15
|
<item>RFC-0263: hideSectionNumber injection now keyed off registry-derived roleByCosmicName[planetName] === "hero" instead of the hardcoded UNNUMBERED_HERO_PLANETS literal set (deleted).</item>
|
|
19
|
-
<item>RFC-0264: relocated SectionProps/SectionPageOverride here from the @warpgogol/werkstatt-shared
|
|
16
|
+
<item>RFC-0264: relocated SectionProps/SectionPageOverride here from the @warpgogol/werkstatt-shared root barrel (its natural domain owner); consumers now import from @warpgogol/werkstatt-shared/page.</item>
|
|
17
|
+
<item>RFC-1097: step 6 — compass.migrate codemod run
|
|
18
|
+
|
|
19
|
+
Mechanical v1 to v2 header migration across the workspace: 942 files rewritten — CHANGE_SUMMARY windows collapsed into history, forbidden v1 blocks stripped, KEY_DECISIONS seeded from @ai-invariant comments (5 files) or TODO placeholders (103 files), blocks reordered to canonical order.</item>
|
|
20
|
+
<item>RFC-1097: sweep — werkstatt-engine clean
|
|
21
|
+
|
|
22
|
+
Sweep batch 4: 73 Compass headers on headerless engine files (certification, component-runtime, isolation, evolution, testing), real KEY_DECISIONS on 75 files (kernel, cache, dht, swim, gitmesh, runtime), ~80 purpose expansions (CONTRACT-02/PURPOSE-02), non-goals on 13 CONTRACT-03 files, CS-07 history literal fix repo-wide (253 files). Policy: .template.ts/.template.astro excludedPaths. werkstatt-engine now 0 diagnostics.</item>
|
|
23
|
+
<history>RFC-0091</history>
|
|
20
24
|
</CHANGE_SUMMARY>
|
|
21
25
|
*/
|
|
22
26
|
|
|
23
|
-
import type { RuntimeContext } from "
|
|
24
|
-
import { evalVisibility, type ResolvedFeatureGraph, EMPTY_FEATURE_GRAPH } from "
|
|
27
|
+
import type { RuntimeContext } from "../runtime/runtime-context.ts";
|
|
28
|
+
import { evalVisibility, type ResolvedFeatureGraph, EMPTY_FEATURE_GRAPH } from "../policy/visibility.ts";
|
|
25
29
|
import {
|
|
26
30
|
planetImportPaths as registryPlanetImportPaths,
|
|
27
31
|
blockTypeToCosmicName as registryBlockTypeToCosmicName,
|
|
@@ -48,7 +52,7 @@ export interface BlockEntry {
|
|
|
48
52
|
type?: string; // CMS-facing archetype slug — validated by page.block.validate
|
|
49
53
|
use?: string; // PlanetName or MoonName — normalized from type for internal resolution
|
|
50
54
|
props: Record<string, unknown>;
|
|
51
|
-
visibility?: import("
|
|
55
|
+
visibility?: import("../policy/visibility.ts").VisibilityExpr;
|
|
52
56
|
/** Block layer — shell blocks render before content blocks (RFC-0036). */
|
|
53
57
|
layer?: "shell" | "section";
|
|
54
58
|
}
|
|
@@ -89,7 +93,7 @@ export interface ResolvedBlock {
|
|
|
89
93
|
/** Props already evaluated and ready to spread into the component. */
|
|
90
94
|
readonly props: Record<string, unknown>;
|
|
91
95
|
/** The raw visibility expression (retained for attribution / debugging). null if absent. */
|
|
92
|
-
readonly visibility: import("
|
|
96
|
+
readonly visibility: import("../policy/visibility.ts").VisibilityExpr | null;
|
|
93
97
|
/** Block layer — shell blocks are prepended and render before content blocks (RFC-0036). */
|
|
94
98
|
readonly layer?: "shell" | "section";
|
|
95
99
|
}
|
|
@@ -111,7 +115,7 @@ export interface ResolvedPage {
|
|
|
111
115
|
}
|
|
112
116
|
|
|
113
117
|
// RFC-0035: Universal Section Props Contract — every resolved content block's
|
|
114
|
-
// props extend this shape. RFC-0264: relocated from the @warpgogol/werkstatt-shared
|
|
118
|
+
// props extend this shape. RFC-0264: relocated from the @warpgogol/werkstatt-shared root
|
|
115
119
|
// barrel to page.ts (its natural domain owner); re-exported from the `./page`
|
|
116
120
|
// subpath.
|
|
117
121
|
export interface SectionProps {
|
package/src/passport/index.ts
CHANGED
|
@@ -7,7 +7,12 @@
|
|
|
7
7
|
</non-goals>
|
|
8
8
|
</MODULE_CONTRACT>
|
|
9
9
|
<CHANGE_SUMMARY>
|
|
10
|
-
<item>
|
|
10
|
+
<item>RFC-1097: step 6 — compass.migrate codemod run
|
|
11
|
+
|
|
12
|
+
Mechanical v1 to v2 header migration across the workspace: 942 files rewritten — CHANGE_SUMMARY windows collapsed into history, forbidden v1 blocks stripped, KEY_DECISIONS seeded from @ai-invariant comments (5 files) or TODO placeholders (103 files), blocks reordered to canonical order.</item>
|
|
13
|
+
<item>RFC-1097: sweep — werkstatt-engine clean
|
|
14
|
+
|
|
15
|
+
Sweep batch 4: 73 Compass headers on headerless engine files (certification, component-runtime, isolation, evolution, testing), real KEY_DECISIONS on 75 files (kernel, cache, dht, swim, gitmesh, runtime), ~80 purpose expansions (CONTRACT-02/PURPOSE-02), non-goals on 13 CONTRACT-03 files, CS-07 history literal fix repo-wide (253 files). Policy: .template.ts/.template.astro excludedPaths. werkstatt-engine now 0 diagnostics.</item>
|
|
11
16
|
</CHANGE_SUMMARY>
|
|
12
17
|
*/
|
|
13
18
|
|