@warpgogol/werkstatt-shared 0.2.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.
Files changed (403) hide show
  1. package/package.json +352 -0
  2. package/src/checks/index.ts +24 -0
  3. package/src/checks/lib/astro-site-url.ts +30 -0
  4. package/src/checks/lib/i18n.ts +30 -0
  5. package/src/checks/result-helpers.ts +102 -0
  6. package/src/checks/suppressions-config.ts +195 -0
  7. package/src/index.ts +14 -0
  8. package/src/integration/README.md +38 -0
  9. package/src/integration/adapters.ts +143 -0
  10. package/src/integration/crm-buffer.ts +491 -0
  11. package/src/integration/dispatch.ts +106 -0
  12. package/src/integration/funnel.ts +379 -0
  13. package/src/integration/index.ts +56 -0
  14. package/src/integration/lifecycle.ts +155 -0
  15. package/src/integration/orchestration.ts +439 -0
  16. package/src/integration/port-barrel.ts +124 -0
  17. package/src/integration/port.ts +143 -0
  18. package/src/integration/qstash.ts +134 -0
  19. package/src/integration/sharding.ts +133 -0
  20. package/src/integration/tests/deliver-event.test.ts +52 -0
  21. package/src/integration/tests/dispatch.test.ts +88 -0
  22. package/src/integration/tests/funnel-bridge.test.ts +46 -0
  23. package/src/integration/tests/hub-runtime.test.ts +128 -0
  24. package/src/integration/tests/lifecycle.test.ts +69 -0
  25. package/src/integration/tests/qstash.test.ts +83 -0
  26. package/src/integration/tests/sharding.test.ts +64 -0
  27. package/src/integration/vitest.config.ts +8 -0
  28. package/src/integration-adapter-supabase-crm/adapter.ts +437 -0
  29. package/src/integration-adapter-supabase-crm/client.ts +605 -0
  30. package/src/integration-adapter-supabase-crm/index.ts +28 -0
  31. package/src/integration-adapter-supabase-crm/pipedrive-sync-target.ts +482 -0
  32. package/src/integration-adapter-supabase-crm/supabase-rest.ts +89 -0
  33. package/src/integration-adapter-supabase-crm/tenant-registry.ts +334 -0
  34. package/src/integration-adapter-supabase-crm/tests/change-balance.pbt.test.ts +83 -0
  35. package/src/integration-adapter-supabase-crm/tests/funnel-persistence.test.ts +409 -0
  36. package/src/integration-adapter-supabase-crm/tests/lifecycle-sync.test.ts +288 -0
  37. package/src/integration-adapter-supabase-crm/tests/stage-map.test.ts +80 -0
  38. package/src/integration-adapter-supabase-crm/vitest.config.ts +8 -0
  39. package/src/integration-adapter-supabase-crm/worker.ts +223 -0
  40. package/src/observability/conventions.ts +93 -0
  41. package/src/observability/env-resolver.ts +57 -0
  42. package/src/observability/index.ts +57 -0
  43. package/src/observability/metric-registry.ts +184 -0
  44. package/src/observability/otlp-converter.ts +125 -0
  45. package/src/observability/otlp-json.ts +135 -0
  46. package/src/observability/otlp-transport.ts +68 -0
  47. package/src/observability/pusher.ts +142 -0
  48. package/src/observability/redact.ts +27 -0
  49. package/src/observability/tests/conventions.test.ts +100 -0
  50. package/src/observability/tests/metric-registry.test.ts +117 -0
  51. package/src/observability/tests/otlp-converter.pbt.test.ts +77 -0
  52. package/src/observability/tests/otlp-converter.test.ts +157 -0
  53. package/src/observability/tests/otlp-json.test.ts +120 -0
  54. package/src/observability/tests/pusher.test.ts +75 -0
  55. package/src/observability/tests/redact.pbt.test.ts +71 -0
  56. package/src/observability/tests/redact.test.ts +37 -0
  57. package/src/observability/typed-refs.ts +137 -0
  58. package/src/observability/vitest.config.ts +8 -0
  59. package/src/ontology/analytics/matomo-binding.yaml +172 -0
  60. package/src/ontology/analytics/matomo-fleet.registry.yaml +26 -0
  61. package/src/ontology/analytics/messkanon.yaml +151 -0
  62. package/src/ontology/archetype-registry.ts +61 -0
  63. package/src/ontology/archetypes/components/brand-label.yaml +19 -0
  64. package/src/ontology/archetypes/components/copyright.yaml +19 -0
  65. package/src/ontology/archetypes/components/currency-aware-price-display.yaml +19 -0
  66. package/src/ontology/archetypes/components/currency-selector.yaml +19 -0
  67. package/src/ontology/archetypes/components/footer-promo.yaml +19 -0
  68. package/src/ontology/archetypes/components/lang-switcher.yaml +19 -0
  69. package/src/ontology/archetypes/components/layout.yaml +19 -0
  70. package/src/ontology/archetypes/components/live-photo.yaml +20 -0
  71. package/src/ontology/archetypes/components/material-credit.yaml +20 -0
  72. package/src/ontology/archetypes/components/media.yaml +21 -0
  73. package/src/ontology/archetypes/components/nachweis-card.yaml +34 -0
  74. package/src/ontology/archetypes/components/nachweis-detail.yaml +43 -0
  75. package/src/ontology/archetypes/components/nachweis-list.yaml +37 -0
  76. package/src/ontology/archetypes/components/nachweis-verify.yaml +31 -0
  77. package/src/ontology/archetypes/components/not-found.yaml +22 -0
  78. package/src/ontology/archetypes/components/offer-capacity.yaml +21 -0
  79. package/src/ontology/archetypes/components/passport-header.yaml +19 -0
  80. package/src/ontology/archetypes/components/passport-provenance.yaml +20 -0
  81. package/src/ontology/archetypes/components/passport-score-grid.yaml +20 -0
  82. package/src/ontology/archetypes/components/passport-star-map.yaml +20 -0
  83. package/src/ontology/archetypes/components/person-profile.yaml +20 -0
  84. package/src/ontology/archetypes/components/pulsar.yaml +20 -0
  85. package/src/ontology/archetypes/components/responsive-image.yaml +19 -0
  86. package/src/ontology/archetypes/components/scroll-to-top.yaml +22 -0
  87. package/src/ontology/archetypes/components/social-meta.yaml +20 -0
  88. package/src/ontology/archetypes/components/structured-data.yaml +19 -0
  89. package/src/ontology/archetypes/index.json +1003 -0
  90. package/src/ontology/archetypes/index.yaml +821 -0
  91. package/src/ontology/archetypes/sections/approach.yaml +23 -0
  92. package/src/ontology/archetypes/sections/article-list.yaml +30 -0
  93. package/src/ontology/archetypes/sections/audience-cards.yaml +30 -0
  94. package/src/ontology/archetypes/sections/breadcrumbs.yaml +21 -0
  95. package/src/ontology/archetypes/sections/chat-widget.yaml +37 -0
  96. package/src/ontology/archetypes/sections/comparison-cards.yaml +31 -0
  97. package/src/ontology/archetypes/sections/controlled-responsibility-block.yaml +34 -0
  98. package/src/ontology/archetypes/sections/credits.yaml +29 -0
  99. package/src/ontology/archetypes/sections/donation-card.yaml +53 -0
  100. package/src/ontology/archetypes/sections/donation-use.yaml +23 -0
  101. package/src/ontology/archetypes/sections/dynamic-status-block.yaml +35 -0
  102. package/src/ontology/archetypes/sections/faq-list.yaml +26 -0
  103. package/src/ontology/archetypes/sections/final-cta.yaml +53 -0
  104. package/src/ontology/archetypes/sections/hero-decision-card.yaml +65 -0
  105. package/src/ontology/archetypes/sections/hero.yaml +50 -0
  106. package/src/ontology/archetypes/sections/impact.yaml +23 -0
  107. package/src/ontology/archetypes/sections/markdown.yaml +43 -0
  108. package/src/ontology/archetypes/sections/mountain-journey.yaml +43 -0
  109. package/src/ontology/archetypes/sections/navigation.yaml +20 -0
  110. package/src/ontology/archetypes/sections/notausgang-block.yaml +41 -0
  111. package/src/ontology/archetypes/sections/open-source-registry.yaml +26 -0
  112. package/src/ontology/archetypes/sections/ownership-block.yaml +57 -0
  113. package/src/ontology/archetypes/sections/people.yaml +48 -0
  114. package/src/ontology/archetypes/sections/price-card.yaml +50 -0
  115. package/src/ontology/archetypes/sections/problem.yaml +23 -0
  116. package/src/ontology/archetypes/sections/send-message.yaml +63 -0
  117. package/src/ontology/archetypes/sections/service-metadata-block.yaml +40 -0
  118. package/src/ontology/archetypes/sections/social-proof.yaml +27 -0
  119. package/src/ontology/archetypes/sections/transparency.yaml +32 -0
  120. package/src/ontology/archetypes/sections/trust-strip.yaml +42 -0
  121. package/src/ontology/archetypes/sections/video-section.yaml +27 -0
  122. package/src/ontology/archetypes/sections/women.yaml +29 -0
  123. package/src/ontology/biome-token-projection.ts +229 -0
  124. package/src/ontology/biomes/check-concrete-blueprint.yaml +118 -0
  125. package/src/ontology/biomes/handwerk-material-warm.yaml +135 -0
  126. package/src/ontology/biomes/nonprofit-trust.yaml +123 -0
  127. package/src/ontology/blueprints/offer.yaml +39 -0
  128. package/src/ontology/blueprints/prompts/local-market-signal.md +13 -0
  129. package/src/ontology/blueprints/prompts/website-local-narrative.md +24 -0
  130. package/src/ontology/blueprints/ratgeber.yaml +62 -0
  131. package/src/ontology/blueprints/website-local.yaml +309 -0
  132. package/src/ontology/blueprints/website-service.yaml +84 -0
  133. package/src/ontology/capabilities/lead.submit.yaml +44 -0
  134. package/src/ontology/cosmic/index.ts +48 -0
  135. package/src/ontology/cosmic/moon-catalog.ts +173 -0
  136. package/src/ontology/cosmic/planet-catalog.ts +82 -0
  137. package/src/ontology/cosmic/star-catalog.ts +337 -0
  138. package/src/ontology/enums.ts +159 -0
  139. package/src/ontology/external-surfaces/index.ts +158 -0
  140. package/src/ontology/external-surfaces/jsonld-types.yaml +135 -0
  141. package/src/ontology/external-surfaces/sitemap-shape.yaml +6 -0
  142. package/src/ontology/external-surfaces/url-schema.yaml +95 -0
  143. package/src/ontology/growth/events/contact-email-click.yaml +21 -0
  144. package/src/ontology/growth/events/contact-form-submit.yaml +25 -0
  145. package/src/ontology/growth/events/contact-phone-click.yaml +21 -0
  146. package/src/ontology/growth/events/contact-route-click.yaml +21 -0
  147. package/src/ontology/growth/events/contact-submit.yaml +28 -0
  148. package/src/ontology/growth/events/contact-whatsapp-click.yaml +21 -0
  149. package/src/ontology/growth/events/cta-click.yaml +30 -0
  150. package/src/ontology/growth/events/donation-confirmed.yaml +32 -0
  151. package/src/ontology/growth/events/donation-form-start.yaml +21 -0
  152. package/src/ontology/growth/events/donation-form-submit.yaml +29 -0
  153. package/src/ontology/growth/events/donation-intent.yaml +29 -0
  154. package/src/ontology/growth/events/form-error.yaml +27 -0
  155. package/src/ontology/growth/events/form-start.yaml +21 -0
  156. package/src/ontology/growth/events/form-submit.yaml +21 -0
  157. package/src/ontology/growth/events/outbound-click.yaml +25 -0
  158. package/src/ontology/growth/events/page-view.yaml +24 -0
  159. package/src/ontology/growth/events/passport-view.yaml +28 -0
  160. package/src/ontology/growth/events/star-map-navigate.yaml +30 -0
  161. package/src/ontology/index.ts +165 -0
  162. package/src/ontology/manifest.ts +344 -0
  163. package/src/ontology/operations/index.ts +1 -0
  164. package/src/ontology/schemas/biome.ts +303 -0
  165. package/src/ontology/schemas/capability.ts +104 -0
  166. package/src/ontology/schemas/constellation.ts +114 -0
  167. package/src/ontology/schemas/dns-records.ts +53 -0
  168. package/src/ontology/schemas/index.ts +95 -0
  169. package/src/ontology/schemas/manifest-resolver.ts +123 -0
  170. package/src/ontology/schemas/page-entry.ts +213 -0
  171. package/src/ontology/schemas/section-archetype.ts +109 -0
  172. package/src/ontology/schemas/site-family.ts +98 -0
  173. package/src/ontology/schemas/system/growth.ts +80 -0
  174. package/src/ontology/schemas/system/integrations.ts +143 -0
  175. package/src/ontology/schemas/system/manifest.ts +492 -0
  176. package/src/ontology/schemas/system/page-output.ts +99 -0
  177. package/src/ontology/schemas/system/release.ts +58 -0
  178. package/src/ontology/schemas/system/text.ts +58 -0
  179. package/src/ontology/schemas/system.ts +53 -0
  180. package/src/ontology/shared-section-props/body-fragments.ts +182 -0
  181. package/src/ontology/shared-section-props/catalog.ts +195 -0
  182. package/src/ontology/shared-section-props/common.ts +178 -0
  183. package/src/ontology/shared-section-props/index.ts +34 -0
  184. package/src/ontology/shared-section-props/visual-header.ts +163 -0
  185. package/src/ontology/site-families/charity-donation-trust/cultural-rules.yaml +6 -0
  186. package/src/ontology/site-families/charity-donation-trust/family.yaml +44 -0
  187. package/src/ontology/site-families/charity-donation-trust/linguistic-rules.yaml +6 -0
  188. package/src/ontology/site-families/check-quality-operator/cultural-rules.yaml +6 -0
  189. package/src/ontology/site-families/check-quality-operator/family.yaml +40 -0
  190. package/src/ontology/site-families/check-quality-operator/linguistic-rules.yaml +6 -0
  191. package/src/ontology/site-families/handwerk-trust-engineering/cultural-rules.yaml +6 -0
  192. package/src/ontology/site-families/handwerk-trust-engineering/family.yaml +53 -0
  193. package/src/ontology/site-families/handwerk-trust-engineering/linguistic-rules.yaml +6 -0
  194. package/src/ontology/tests/catalogs.pbt.test.ts +89 -0
  195. package/src/ontology/tests/enums.test.ts +203 -0
  196. package/src/ontology/tests/sternsystem-owner.test.ts +63 -0
  197. package/src/ontology/vitest.config.ts +8 -0
  198. package/src/passport/dht-sign.test.ts +99 -0
  199. package/src/passport/dht-sign.ts +73 -0
  200. package/src/passport/identity-sign.test.ts +134 -0
  201. package/src/passport/identity-sign.ts +85 -0
  202. package/src/passport/index.ts +53 -0
  203. package/src/passport/key-rotate.ts +133 -0
  204. package/src/passport/schema.ts +198 -0
  205. package/src/passport/sign.ts +225 -0
  206. package/src/passport/tests/schema.pbt.test.ts +93 -0
  207. package/src/passport/tests/schema.test.ts +222 -0
  208. package/src/passport/vitest.config.ts +8 -0
  209. package/src/share/agent/api-catalog.ts +77 -0
  210. package/src/share/agent/capability.ts +68 -0
  211. package/src/share/agent/dns-aid.test.ts +74 -0
  212. package/src/share/agent/dns-aid.ts +53 -0
  213. package/src/share/agent/fleet-catalog.ts +149 -0
  214. package/src/share/agent/index.ts +29 -0
  215. package/src/share/agent/knowledge.ts +96 -0
  216. package/src/share/agent/manifest.ts +126 -0
  217. package/src/share/agent/mcp-card.ts +63 -0
  218. package/src/share/agent/omit-empty.ts +77 -0
  219. package/src/share/agent/openapi.ts +157 -0
  220. package/src/share/agent/proof.ts +61 -0
  221. package/src/share/attribution-display.ts +86 -0
  222. package/src/share/check-hints.ts +38 -0
  223. package/src/share/content/entity-id.ts +65 -0
  224. package/src/share/content/index.ts +16 -0
  225. package/src/share/content/merge.ts +86 -0
  226. package/src/share/content/resolve-field-path.ts +39 -0
  227. package/src/share/content/substitute-deep.ts +47 -0
  228. package/src/share/content-discipline/index.ts +14 -0
  229. package/src/share/content-discipline/parsers.ts +66 -0
  230. package/src/share/content-discipline/types.ts +118 -0
  231. package/src/share/content-reference.ts +333 -0
  232. package/src/share/counter-utils.ts +75 -0
  233. package/src/share/css-value-normalize.ts +48 -0
  234. package/src/share/dev-props-validator.ts +131 -0
  235. package/src/share/entitlement.ts +172 -0
  236. package/src/share/env.d.ts +73 -0
  237. package/src/share/feature-policy.ts +367 -0
  238. package/src/share/formula-eval.ts +364 -0
  239. package/src/share/fs/index.ts +96 -0
  240. package/src/share/i18n/localization.ts +57 -0
  241. package/src/share/image-provider.ts +314 -0
  242. package/src/share/index.ts +86 -0
  243. package/src/share/knowledge/claim.ts +129 -0
  244. package/src/share/knowledge/derivation.ts +55 -0
  245. package/src/share/knowledge/freshness.ts +127 -0
  246. package/src/share/knowledge/index.ts +23 -0
  247. package/src/share/knowledge/ledger.ts +222 -0
  248. package/src/share/knowledge/plan.ts +122 -0
  249. package/src/share/knowledge/source.ts +170 -0
  250. package/src/share/legal/translation-policy.ts +133 -0
  251. package/src/share/material-credits.ts +181 -0
  252. package/src/share/middleware/language-redirect.ts +49 -0
  253. package/src/share/offer-capacity.ts +149 -0
  254. package/src/share/onboarding-yaml/index.ts +162 -0
  255. package/src/share/page.ts +351 -0
  256. package/src/share/redirects.test.ts +62 -0
  257. package/src/share/redirects.ts +54 -0
  258. package/src/share/rfc0042-utils.ts +95 -0
  259. package/src/share/runtime-context.ts +70 -0
  260. package/src/share/schemas/claim-records.ts +69 -0
  261. package/src/share/schemas/claims.ts +150 -0
  262. package/src/share/schemas/effects.ts +212 -0
  263. package/src/share/schemas/features.ts +147 -0
  264. package/src/share/schemas/horizontal-align.ts +22 -0
  265. package/src/share/schemas/icon-color.ts +27 -0
  266. package/src/share/schemas/index.ts +43 -0
  267. package/src/share/schemas/live-photo.ts +53 -0
  268. package/src/share/schemas/material-credit.ts +292 -0
  269. package/src/share/schemas/media.ts +220 -0
  270. package/src/share/schemas/navigation.ts +74 -0
  271. package/src/share/schemas/page-base.ts +33 -0
  272. package/src/share/schemas/participant.ts +247 -0
  273. package/src/share/schemas/person.ts +24 -0
  274. package/src/share/schemas/print.ts +93 -0
  275. package/src/share/schemas/section-background.ts +106 -0
  276. package/src/share/schemas/section-body.ts +138 -0
  277. package/src/share/schemas/section-cards.ts +37 -0
  278. package/src/share/schemas/section-cta.ts +74 -0
  279. package/src/share/schemas/section-header.ts +77 -0
  280. package/src/share/schemas/section-image.ts +77 -0
  281. package/src/share/schemas/section-motion.ts +52 -0
  282. package/src/share/schemas/section-shell.ts +63 -0
  283. package/src/share/schemas/section-stats.ts +37 -0
  284. package/src/share/schemas/site-background.ts +78 -0
  285. package/src/share/schemas/standard-list-item.ts +38 -0
  286. package/src/share/scripts/external-links.ts +45 -0
  287. package/src/share/scripts/gsap-counter.ts +168 -0
  288. package/src/share/scripts/gsap-mountain-journey.ts +236 -0
  289. package/src/share/scripts/gsap-parallax.ts +50 -0
  290. package/src/share/scripts/gsap-reveal.ts +65 -0
  291. package/src/share/scripts/gsap-stagger.ts +54 -0
  292. package/src/share/scripts/index.ts +25 -0
  293. package/src/share/scripts/inline-number-animation.ts +120 -0
  294. package/src/share/scripts/lenis.ts +109 -0
  295. package/src/share/scripts/live-photos.ts +250 -0
  296. package/src/share/scripts/lordicon.ts +94 -0
  297. package/src/share/scripts/orchestrator.ts +138 -0
  298. package/src/share/scripts/scheduler.ts +53 -0
  299. package/src/share/scripts/video-player.ts +116 -0
  300. package/src/share/semantic/ai.ts +140 -0
  301. package/src/share/semantic/block-extraction.ts +52 -0
  302. package/src/share/semantic/block-extractors/index.ts +502 -0
  303. package/src/share/semantic/breadcrumbs.ts +120 -0
  304. package/src/share/semantic/build-page.ts +309 -0
  305. package/src/share/semantic/business-projection.ts +278 -0
  306. package/src/share/semantic/derived-prices-loader.ts +36 -0
  307. package/src/share/semantic/extract.ts +118 -0
  308. package/src/share/semantic/feed.ts +124 -0
  309. package/src/share/semantic/ids.ts +76 -0
  310. package/src/share/semantic/image-sitemap.ts +153 -0
  311. package/src/share/semantic/index.ts +36 -0
  312. package/src/share/semantic/jsonld/article.ts +47 -0
  313. package/src/share/semantic/jsonld/breadcrumb.ts +47 -0
  314. package/src/share/semantic/jsonld/collection-list.ts +30 -0
  315. package/src/share/semantic/jsonld/context.ts +46 -0
  316. package/src/share/semantic/jsonld/faq.ts +49 -0
  317. package/src/share/semantic/jsonld/initiative.ts +53 -0
  318. package/src/share/semantic/jsonld/organization.ts +101 -0
  319. package/src/share/semantic/jsonld/person.ts +71 -0
  320. package/src/share/semantic/jsonld/service.ts +80 -0
  321. package/src/share/semantic/jsonld/shared.ts +31 -0
  322. package/src/share/semantic/jsonld/types.ts +18 -0
  323. package/src/share/semantic/jsonld/webpage.ts +98 -0
  324. package/src/share/semantic/jsonld/website.ts +27 -0
  325. package/src/share/semantic/jsonld.ts +75 -0
  326. package/src/share/semantic/llms-policy.ts +74 -0
  327. package/src/share/semantic/llms.ts +394 -0
  328. package/src/share/semantic/markdown-hygiene.ts +68 -0
  329. package/src/share/semantic/markdown-twin-provenance.ts +242 -0
  330. package/src/share/semantic/models.ts +402 -0
  331. package/src/share/semantic/organization-profile.ts +160 -0
  332. package/src/share/semantic/output-projection.ts +131 -0
  333. package/src/share/semantic/page-builders/markdown-page.ts +84 -0
  334. package/src/share/semantic/page-markdown.ts +234 -0
  335. package/src/share/semantic/page-utils.ts +125 -0
  336. package/src/share/semantic/price-marker-resolver.ts +92 -0
  337. package/src/share/semantic/robots.ts +127 -0
  338. package/src/share/semantic/update-stamp.ts +136 -0
  339. package/src/share/shared-context.ts +177 -0
  340. package/src/share/string-utils.ts +19 -0
  341. package/src/share/tests/api-catalog.test.ts +97 -0
  342. package/src/share/tests/breadcrumbs.test.ts +126 -0
  343. package/src/share/tests/build-page-price-markers.test.ts +160 -0
  344. package/src/share/tests/capability.test.ts +107 -0
  345. package/src/share/tests/claim.test.ts +90 -0
  346. package/src/share/tests/content-ref-index.test.ts +328 -0
  347. package/src/share/tests/create-dev-props-validator.test.ts +38 -0
  348. package/src/share/tests/derivation.test.ts +39 -0
  349. package/src/share/tests/dev-props-validator.test.ts +88 -0
  350. package/src/share/tests/fleet-catalog.test.ts +134 -0
  351. package/src/share/tests/formula-eval.test.ts +619 -0
  352. package/src/share/tests/freshness.test.ts +60 -0
  353. package/src/share/tests/hero-section-numbering-parity.test.ts +51 -0
  354. package/src/share/tests/image-sitemap.test.ts +101 -0
  355. package/src/share/tests/jsonld-service.test.ts +282 -0
  356. package/src/share/tests/knowledge.test.ts +86 -0
  357. package/src/share/tests/ledger.test.ts +125 -0
  358. package/src/share/tests/llms-0789.test.ts +63 -0
  359. package/src/share/tests/manifest.test.ts +100 -0
  360. package/src/share/tests/markdown-twin-provenance.test.ts +108 -0
  361. package/src/share/tests/mcp-card.test.ts +57 -0
  362. package/src/share/tests/onboarding-yaml.test.ts +111 -0
  363. package/src/share/tests/ontology-role-by-cosmic-name.test.ts +28 -0
  364. package/src/share/tests/openapi.test.ts +116 -0
  365. package/src/share/tests/organization-jsonld.test.ts +74 -0
  366. package/src/share/tests/output-projection.test.ts +61 -0
  367. package/src/share/tests/plan.test.ts +97 -0
  368. package/src/share/tests/price-marker-resolver.test.ts +141 -0
  369. package/src/share/tests/proof.test.ts +72 -0
  370. package/src/share/tests/resolve-field-path.test.ts +52 -0
  371. package/src/share/tests/source.test.ts +81 -0
  372. package/src/share/tests/substitute-deep.test.ts +65 -0
  373. package/src/share/tests/text-normalize.pbt.test.ts +143 -0
  374. package/src/share/tests/text-normalize.test.ts +285 -0
  375. package/src/share/tests/twin-path.test.ts +43 -0
  376. package/src/share/text-normalize.ts +548 -0
  377. package/src/share/text-position.ts +19 -0
  378. package/src/share/types/hls-js-light.d.ts +16 -0
  379. package/src/share/visibility.ts +167 -0
  380. package/src/share/vitest.config.ts +8 -0
  381. package/src/share/wrap-inline-numbers.ts +139 -0
  382. package/src/surface/blueprint-schema.ts +314 -0
  383. package/src/surface/blueprint-types.ts +256 -0
  384. package/src/surface/blueprint.ts +300 -0
  385. package/src/surface/breaker.ts +57 -0
  386. package/src/surface/decision-composer.ts +156 -0
  387. package/src/surface/eligibility.ts +372 -0
  388. package/src/surface/evidence-records.ts +97 -0
  389. package/src/surface/fleet.ts +60 -0
  390. package/src/surface/geo.ts +170 -0
  391. package/src/surface/governance.ts +146 -0
  392. package/src/surface/index.ts +216 -0
  393. package/src/surface/io/index.ts +18 -0
  394. package/src/surface/io/surface-module-context-io.ts +60 -0
  395. package/src/surface/io/visibility-outcomes-io.ts +46 -0
  396. package/src/surface/module-context.ts +120 -0
  397. package/src/surface/substance.ts +161 -0
  398. package/src/surface/tests/eligibility.pbt.test.ts +137 -0
  399. package/src/surface/tests/eligibility.test.ts +302 -0
  400. package/src/surface/types.ts +289 -0
  401. package/src/surface/visibility.ts +57 -0
  402. package/src/surface/vitest.config.ts +8 -0
  403. package/tsconfig.json +17 -0
@@ -0,0 +1,19 @@
1
+ id: copyright
2
+ displayName: Copyright
3
+ version: 1.0.0
4
+ semanticRole: component-copyright
5
+ description: |
6
+ Starter RFC-0072 archetype seeded from existing manifest metadata.
7
+ expectedIntents:
8
+ - fulfill-legal-requirement
9
+ - display-compliance
10
+ expectedIndustryFit:
11
+ - non-profit
12
+ layoutHint: split
13
+ propsSchema:
14
+ $shape: zod
15
+ shape: |
16
+ z.object({}).passthrough()
17
+ acceptedCosmicNames:
18
+ - Charon
19
+ constraints: {}
@@ -0,0 +1,19 @@
1
+ id: currency-aware-price-display
2
+ displayName: Currency Aware Price Display
3
+ version: 1.0.0
4
+ semanticRole: component-currency-aware-price-display
5
+ description: |
6
+ Currency-aware price display with pre-rendered variants (RFC-0743).
7
+ Pre-renders all currency variants server-side; client script toggles visibility.
8
+ expectedIntents:
9
+ - pricing
10
+ - trust
11
+ expectedIndustryFit: []
12
+ layoutHint: single-column
13
+ propsSchema:
14
+ $shape: zod
15
+ shape: |
16
+ z.object({}).passthrough()
17
+ acceptedCosmicNames:
18
+ - Rosalind
19
+ constraints: {}
@@ -0,0 +1,19 @@
1
+ id: currency-selector
2
+ displayName: Currency Selector
3
+ version: 1.0.0
4
+ semanticRole: component-currency-selector
5
+ description: |
6
+ Currency selector dropdown for multi-currency sites (RFC-0743).
7
+ Renders available target currencies and persists selection in localStorage.
8
+ expectedIntents:
9
+ - orient-visitor
10
+ - guide-navigation
11
+ expectedIndustryFit: []
12
+ layoutHint: split
13
+ propsSchema:
14
+ $shape: zod
15
+ shape: |
16
+ z.object({}).passthrough()
17
+ acceptedCosmicNames:
18
+ - Portia
19
+ constraints: {}
@@ -0,0 +1,19 @@
1
+ id: footer-promo
2
+ displayName: Footer Promo
3
+ version: 1.0.0
4
+ semanticRole: component-footer-promo
5
+ description: |
6
+ Starter RFC-0072 archetype seeded from existing manifest metadata.
7
+ expectedIntents:
8
+ - convert-visitor
9
+ - drive-contact
10
+ expectedIndustryFit:
11
+ - non-profit
12
+ layoutHint: horizontal-row
13
+ propsSchema:
14
+ $shape: zod
15
+ shape: |
16
+ z.object({}).passthrough()
17
+ acceptedCosmicNames:
18
+ - Nereid
19
+ constraints: {}
@@ -0,0 +1,19 @@
1
+ id: lang-switcher
2
+ displayName: Lang Switcher
3
+ version: 1.0.0
4
+ semanticRole: component-lang-switcher
5
+ description: |
6
+ Starter RFC-0072 archetype seeded from existing manifest metadata.
7
+ expectedIntents:
8
+ - orient-visitor
9
+ - guide-navigation
10
+ expectedIndustryFit:
11
+ - non-profit
12
+ layoutHint: split
13
+ propsSchema:
14
+ $shape: zod
15
+ shape: |
16
+ z.object({}).passthrough()
17
+ acceptedCosmicNames:
18
+ - Ophelia
19
+ constraints: {}
@@ -0,0 +1,19 @@
1
+ id: layout
2
+ displayName: Layout
3
+ version: 1.0.0
4
+ semanticRole: component-layout
5
+ description: |
6
+ Starter RFC-0072 archetype seeded from existing manifest metadata.
7
+ expectedIntents:
8
+ - orient-visitor
9
+ - guide-navigation
10
+ expectedIndustryFit:
11
+ - non-profit
12
+ layoutHint: split
13
+ propsSchema:
14
+ $shape: zod
15
+ shape: |
16
+ z.object({}).passthrough()
17
+ acceptedCosmicNames:
18
+ - Umbriel
19
+ constraints: {}
@@ -0,0 +1,20 @@
1
+ id: live-photo
2
+ displayName: Living photo
3
+ version: 1.0.0
4
+ semanticRole: component-live-photo
5
+ description: |
6
+ RFC-0202 living photo: a looping, muted, decorative <video> overlaid on a static
7
+ <ResponsiveImage> (RFC-0152) that always remains the resting state / poster / fallback.
8
+ The clip is the sibling `<image-name>.webm`, resolved by convention (no authored path).
9
+ expectedIntents:
10
+ - orient-visitor
11
+ expectedIndustryFit:
12
+ - non-profit
13
+ layoutHint: split
14
+ propsSchema:
15
+ $shape: zod
16
+ shape: |
17
+ z.object({}).passthrough()
18
+ acceptedCosmicNames:
19
+ - Aegaeon
20
+ constraints: {}
@@ -0,0 +1,20 @@
1
+ id: material-credit
2
+ displayName: Material credit
3
+ version: 1.0.0
4
+ semanticRole: component-material-credit
5
+ description: |
6
+ RFC-0220 disclosure primitive for visible material credits and structured
7
+ CreativeWork provenance data.
8
+ expectedIntents:
9
+ - disclose-material-provenance
10
+ - render-credits
11
+ - emit-structured-credit-data
12
+ expectedIndustryFit: []
13
+ layoutHint: single-column
14
+ propsSchema:
15
+ $shape: zod
16
+ shape: |
17
+ z.object({}).passthrough()
18
+ acceptedCosmicNames:
19
+ - Cordelia
20
+ constraints: {}
@@ -0,0 +1,21 @@
1
+ id: media
2
+ displayName: Media
3
+ version: 1.0.0
4
+ semanticRole: component-media
5
+ description: |
6
+ RFC-0210 unified media primitive: one component renders every <video> on the platform,
7
+ profile-driven — feature (content video with controls, HLS-first ABR + MP4 fallback + captions),
8
+ background (muted looping decorative loop), and ambient (living photo, RFC-0202, delegated to
9
+ <LivePhoto>). Derived delivery formats come from the GENERATED video manifest.
10
+ expectedIntents:
11
+ - orient-visitor
12
+ - demonstrate-expertise
13
+ expectedIndustryFit: []
14
+ layoutHint: split
15
+ propsSchema:
16
+ $shape: zod
17
+ shape: |
18
+ z.object({}).passthrough()
19
+ acceptedCosmicNames:
20
+ - Sycorax
21
+ constraints: {}
@@ -0,0 +1,34 @@
1
+ id: nachweis-card
2
+ displayName: Nachweis Card
3
+ version: 1.0.0
4
+ semanticRole: trust-card
5
+ description: |
6
+ Semantic article displaying a Nachweis record: result/scope, context/limitations,
7
+ quote, source, what was verified, what was not verified, and status.
8
+ RFC-0708.
9
+ expectedIntents:
10
+ - verify
11
+ expectedIndustryFit:
12
+ - non-profit
13
+ layoutHint: card-grid
14
+ propsSchema:
15
+ $shape: zod
16
+ shape: |
17
+ z.object({
18
+ slug: z.string(),
19
+ title: z.string(),
20
+ result: z.string(),
21
+ scope: z.string().optional(),
22
+ context: z.string().optional(),
23
+ limitations: z.string().optional(),
24
+ quote: z.string().optional(),
25
+ quoteLang: z.string().optional(),
26
+ source: z.string().optional(),
27
+ verifiedScope: z.string().optional(),
28
+ notVerifiedScope: z.string().optional(),
29
+ status: z.enum(["draft", "preview", "published", "withdrawn"]),
30
+ verifiedByLabel: z.string().optional(),
31
+ }).passthrough()
32
+ acceptedCosmicNames:
33
+ - Nix
34
+ constraints: {}
@@ -0,0 +1,43 @@
1
+ id: nachweis-detail
2
+ displayName: Nachweis Detail
3
+ version: 1.0.0
4
+ semanticRole: trust-detail
5
+ description: |
6
+ Full detail page component for a single Nachweis record. Renders a
7
+ nachweis-card plus a Sichtpass section with hashes, verification level,
8
+ timestamp, and signature. RFC-0708.
9
+ expectedIntents:
10
+ - verify
11
+ expectedIndustryFit:
12
+ - non-profit
13
+ layoutHint: single-column
14
+ propsSchema:
15
+ $shape: zod
16
+ shape: |
17
+ z.object({
18
+ slug: z.string(),
19
+ title: z.string(),
20
+ result: z.string(),
21
+ scope: z.string().optional(),
22
+ context: z.string().optional(),
23
+ limitations: z.string().optional(),
24
+ quote: z.string().optional(),
25
+ quoteLang: z.string().optional(),
26
+ source: z.string().optional(),
27
+ verifiedScope: z.string().optional(),
28
+ notVerifiedScope: z.string().optional(),
29
+ status: z.enum(["draft", "preview", "published", "withdrawn"]),
30
+ verifiedByLabel: z.string().optional(),
31
+ sichtpass: z.object({
32
+ sourceSha256: z.string(),
33
+ publicDerivativeSha256: z.string().optional(),
34
+ recordPayloadSha256: z.string().optional(),
35
+ envelopeSha256: z.string().optional(),
36
+ operatorSignature: z.string().optional(),
37
+ qualifiedTimestamp: z.string().optional(),
38
+ verificationLevel: z.string().optional(),
39
+ }).optional(),
40
+ }).passthrough()
41
+ acceptedCosmicNames:
42
+ - Kerberos
43
+ constraints: {}
@@ -0,0 +1,37 @@
1
+ id: nachweis-list
2
+ displayName: Nachweis List
3
+ version: 1.0.0
4
+ semanticRole: trust-list
5
+ description: |
6
+ List of nachweis-card components for the Nachweis index page.
7
+ Renders published records only. Shows an empty state message when no
8
+ published records exist. RFC-0708.
9
+ expectedIntents:
10
+ - verify
11
+ expectedIndustryFit:
12
+ - non-profit
13
+ layoutHint: single-column
14
+ propsSchema:
15
+ $shape: zod
16
+ shape: |
17
+ z.object({
18
+ records: z.array(z.object({
19
+ slug: z.string(),
20
+ title: z.string(),
21
+ result: z.string(),
22
+ scope: z.string().optional(),
23
+ context: z.string().optional(),
24
+ limitations: z.string().optional(),
25
+ quote: z.string().optional(),
26
+ quoteLang: z.string().optional(),
27
+ source: z.string().optional(),
28
+ verifiedScope: z.string().optional(),
29
+ notVerifiedScope: z.string().optional(),
30
+ status: z.enum(["draft", "preview", "published", "withdrawn"]),
31
+ verifiedByLabel: z.string().optional(),
32
+ })).default([]),
33
+ emptyMessage: z.string().optional(),
34
+ }).passthrough()
35
+ acceptedCosmicNames:
36
+ - Hydra
37
+ constraints: {}
@@ -0,0 +1,31 @@
1
+ id: nachweis-verify
2
+ displayName: Nachweis Verify
3
+ version: 1.0.0
4
+ semanticRole: trust-verify
5
+ description: |
6
+ Cryptographic verification data display for a Nachweis record. Shows
7
+ source SHA-256, public derivative SHA-256, record payload SHA-256,
8
+ envelope SHA-256, operator signature, and qualified timestamp.
9
+ Read-only. RFC-0708.
10
+ expectedIntents:
11
+ - verify
12
+ expectedIndustryFit:
13
+ - non-profit
14
+ layoutHint: single-column
15
+ propsSchema:
16
+ $shape: zod
17
+ shape: |
18
+ z.object({
19
+ slug: z.string(),
20
+ version: z.string(),
21
+ sourceSha256: z.string(),
22
+ publicDerivativeSha256: z.string().optional(),
23
+ recordPayloadSha256: z.string().optional(),
24
+ envelopeSha256: z.string().optional(),
25
+ operatorSignature: z.string().optional(),
26
+ qualifiedTimestamp: z.string().optional(),
27
+ verificationLevel: z.string().optional(),
28
+ }).passthrough()
29
+ acceptedCosmicNames:
30
+ - Styx
31
+ constraints: {}
@@ -0,0 +1,22 @@
1
+ id: layout.not-found
2
+ displayName: Not found
3
+ version: 1.0.0
4
+ semanticRole: component-layout.not-found
5
+ description: |
6
+ Site-level 404 shell component that orients lost visitors and preserves
7
+ navigation paths without becoming a normal content section.
8
+ expectedIntents:
9
+ - guide-lost-visitors
10
+ - preserve-site-navigation
11
+ expectedIndustryFit:
12
+ - non-profit
13
+ - trades-and-construction
14
+ - consulting-and-coaching
15
+ layoutHint: single-column
16
+ propsSchema:
17
+ $shape: zod
18
+ shape: |
19
+ z.object({}).passthrough()
20
+ acceptedCosmicNames:
21
+ - Cressida
22
+ constraints: {}
@@ -0,0 +1,21 @@
1
+ id: section-body-offer-capacity
2
+ displayName: Offer capacity
3
+ version: 1.0.0
4
+ semanticRole: component-section-body.offer-capacity
5
+ description: |
6
+ Section-body component that renders current offer-capacity state inside a
7
+ section without owning the surrounding narrative or page routing.
8
+ expectedIntents:
9
+ - render-offer-capacity
10
+ - avoid-frozen-availability
11
+ expectedIndustryFit:
12
+ - trades-and-construction
13
+ - consulting-and-coaching
14
+ layoutHint: single-column
15
+ propsSchema:
16
+ $shape: zod
17
+ shape: |
18
+ z.object({}).passthrough()
19
+ acceptedCosmicNames:
20
+ - Thalassa
21
+ constraints: {}
@@ -0,0 +1,19 @@
1
+ id: passport-header
2
+ displayName: Passport Header
3
+ version: 1.0.0
4
+ semanticRole: component-passport-header
5
+ description: |
6
+ Starter RFC-0072 archetype seeded from existing manifest metadata.
7
+ expectedIntents:
8
+ - display-passport-identity
9
+ - show-app-name-and-tagline
10
+ expectedIndustryFit:
11
+ - non-profit
12
+ layoutHint: horizontal-row
13
+ propsSchema:
14
+ $shape: zod
15
+ shape: |
16
+ z.object({}).passthrough()
17
+ acceptedCosmicNames:
18
+ - Methone
19
+ constraints: {}
@@ -0,0 +1,20 @@
1
+ id: passport-provenance
2
+ displayName: Passport Provenance
3
+ version: 1.0.0
4
+ semanticRole: component-passport-provenance
5
+ description: |
6
+ Starter RFC-0072 archetype seeded from existing manifest metadata.
7
+ expectedIntents:
8
+ - display-build-provenance
9
+ - show-commit-sha-and-timestamp
10
+ - show-vc-credential
11
+ expectedIndustryFit:
12
+ - non-profit
13
+ layoutHint: split
14
+ propsSchema:
15
+ $shape: zod
16
+ shape: |
17
+ z.object({}).passthrough()
18
+ acceptedCosmicNames:
19
+ - Bianca
20
+ constraints: {}
@@ -0,0 +1,20 @@
1
+ id: passport-score-grid
2
+ displayName: Passport Score Grid
3
+ version: 1.0.0
4
+ semanticRole: component-passport-score-grid
5
+ description: |
6
+ Starter RFC-0072 archetype seeded from existing manifest metadata.
7
+ expectedIntents:
8
+ - display-nebula-score
9
+ - show-pillar-breakdown
10
+ - show-composite-score
11
+ expectedIndustryFit:
12
+ - non-profit
13
+ layoutHint: split
14
+ propsSchema:
15
+ $shape: zod
16
+ shape: |
17
+ z.object({}).passthrough()
18
+ acceptedCosmicNames:
19
+ - Klarissa
20
+ constraints: {}
@@ -0,0 +1,20 @@
1
+ id: passport-star-map
2
+ displayName: Passport Star Map
3
+ version: 1.0.0
4
+ semanticRole: component-passport-star-map
5
+ description: |
6
+ Starter RFC-0072 archetype seeded from existing manifest metadata.
7
+ expectedIntents:
8
+ - display-star-map
9
+ - show-component-graph
10
+ - visualise-architecture
11
+ expectedIndustryFit:
12
+ - non-profit
13
+ layoutHint: split
14
+ propsSchema:
15
+ $shape: zod
16
+ shape: |
17
+ z.object({}).passthrough()
18
+ acceptedCosmicNames:
19
+ - Adrastea
20
+ constraints: {}
@@ -0,0 +1,20 @@
1
+ id: person-profile
2
+ displayName: Person Profile
3
+ version: 1.0.0
4
+ semanticRole: component-person-profile
5
+ description: |
6
+ Starter RFC-0072 archetype seeded from existing manifest metadata.
7
+ expectedIntents:
8
+ - introduce-team
9
+ - humanise-brand
10
+ - demonstrate-expertise
11
+ expectedIndustryFit:
12
+ - non-profit
13
+ layoutHint: split
14
+ propsSchema:
15
+ $shape: zod
16
+ shape: |
17
+ z.object({}).passthrough()
18
+ acceptedCosmicNames:
19
+ - Miranda
20
+ constraints: {}
@@ -0,0 +1,20 @@
1
+ id: pulsar
2
+ displayName: Pulsar
3
+ version: 1.0.0
4
+ semanticRole: component-pulsar
5
+ description: |
6
+ Starter RFC-0072 archetype seeded from existing manifest metadata.
7
+ expectedIntents:
8
+ - show-build-freshness
9
+ - heartbeat-indicator
10
+ - display-uptime-status
11
+ expectedIndustryFit:
12
+ - non-profit
13
+ layoutHint: split
14
+ propsSchema:
15
+ $shape: zod
16
+ shape: |
17
+ z.object({}).passthrough()
18
+ acceptedCosmicNames:
19
+ - Despina
20
+ constraints: {}
@@ -0,0 +1,19 @@
1
+ id: responsive-image
2
+ displayName: Responsive image
3
+ version: 1.0.0
4
+ semanticRole: component-responsive-image
5
+ description: |
6
+ Starter RFC-0072 archetype seeded from existing manifest metadata (RFC-0178).
7
+ Provider-agnostic responsive image (RFC-0152 Image Provider Port).
8
+ expectedIntents:
9
+ - orient-visitor
10
+ expectedIndustryFit:
11
+ - non-profit
12
+ layoutHint: split
13
+ propsSchema:
14
+ $shape: zod
15
+ shape: |
16
+ z.object({}).passthrough()
17
+ acceptedCosmicNames:
18
+ - Belinda
19
+ constraints: {}
@@ -0,0 +1,22 @@
1
+ id: scroll-to-top
2
+ displayName: Scroll to Top
3
+ version: 1.0.0
4
+ semanticRole: component-scroll-to-top
5
+ description: |
6
+ Floating button that scrolls to the top of the page after the user
7
+ scrolls past one viewport height. Uses Lenis for smooth scrolling
8
+ with native fallback. Styled entirely through biome --ds-* tokens.
9
+ expectedIntents:
10
+ - guide-navigation
11
+ - orient-visitor
12
+ expectedIndustryFit: []
13
+ layoutHint: single-column
14
+ propsSchema:
15
+ $shape: zod
16
+ shape: |
17
+ z.object({
18
+ ariaLabel: z.string().optional(),
19
+ }).passthrough()
20
+ acceptedCosmicNames:
21
+ - Daphnis
22
+ constraints: {}
@@ -0,0 +1,20 @@
1
+ id: social-meta
2
+ displayName: Social meta
3
+ version: 1.0.0
4
+ semanticRole: component-social-meta
5
+ description: |
6
+ Starter RFC-0072 archetype seeded from existing manifest metadata (RFC-0178).
7
+ Open Graph / Twitter Card meta injected alongside the page head (RFC-0162).
8
+ expectedIntents:
9
+ - orient-visitor
10
+ - fulfill-legal-requirement
11
+ expectedIndustryFit:
12
+ - non-profit
13
+ layoutHint: split
14
+ propsSchema:
15
+ $shape: zod
16
+ shape: |
17
+ z.object({}).passthrough()
18
+ acceptedCosmicNames:
19
+ - Naiad
20
+ constraints: {}
@@ -0,0 +1,19 @@
1
+ id: structured-data
2
+ displayName: Structured Data
3
+ version: 1.0.0
4
+ semanticRole: component-structured-data
5
+ description: |
6
+ Starter RFC-0072 archetype seeded from existing manifest metadata.
7
+ expectedIntents:
8
+ - fulfill-legal-requirement
9
+ - orient-visitor
10
+ expectedIndustryFit:
11
+ - non-profit
12
+ layoutHint: split
13
+ propsSchema:
14
+ $shape: zod
15
+ shape: |
16
+ z.object({}).passthrough()
17
+ acceptedCosmicNames:
18
+ - Triton
19
+ constraints: {}