@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,23 @@
1
+ id: approach
2
+ displayName: Approach
3
+ version: 1.2.0
4
+ semanticRole: approach
5
+ description: |
6
+ Approach cards with images. RFC-0103 bodyKind: cards.
7
+ expectedIntents:
8
+ - explain-approach
9
+ - build-trust
10
+ - demonstrate-expertise
11
+ expectedIndustryFit:
12
+ - non-profit
13
+ layoutHint: card-grid
14
+ bodyKind: cards
15
+ propsSchema:
16
+ $shape: zod
17
+ compose:
18
+ - section-visual
19
+ - section-header
20
+ - body-cards
21
+ acceptedCosmicNames:
22
+ - Titan
23
+ constraints: {}
@@ -0,0 +1,30 @@
1
+ id: article-list
2
+ displayName: Article list
3
+ version: 1.0.0
4
+ semanticRole: article-index
5
+ description: |
6
+ Starter RFC-0072 archetype seeded from existing manifest metadata (RFC-0178).
7
+ Lists dated article pages (RFC-0167 blog module) as an index section.
8
+ expectedIntents:
9
+ - explain-approach
10
+ - build-trust
11
+ - answer-questions
12
+ expectedIndustryFit:
13
+ - non-profit
14
+ - consulting-and-coaching
15
+ layoutHint: single-column
16
+ bodyKind: composite
17
+ propsSchema:
18
+ $shape: zod
19
+ compose:
20
+ - section-visual
21
+ - section-header
22
+ shape: |
23
+ z.object({
24
+ tag: z.string().optional(),
25
+ limit: z.number().int().positive().optional(),
26
+ emptyLabel: z.string().optional(),
27
+ }).strict()
28
+ acceptedCosmicNames:
29
+ - Io
30
+ constraints: {}
@@ -0,0 +1,30 @@
1
+ id: audience-cards
2
+ displayName: Audience cards
3
+ version: 1.2.0
4
+ semanticRole: audience-self-identification
5
+ description: |
6
+ Audience segments grid. RFC-0103 bodyKind: cards.
7
+ expectedIntents:
8
+ - segmentation
9
+ - clarify-positioning
10
+ expectedIndustryFit:
11
+ - trades-and-construction
12
+ - consulting-and-coaching
13
+ - legal-services
14
+ layoutHint: card-grid
15
+ bodyKind: cards
16
+ recommendedItemCount:
17
+ min: 2
18
+ max: 6
19
+ propsSchema:
20
+ $shape: zod
21
+ compose:
22
+ - section-visual
23
+ - section-header
24
+ - body-cards
25
+ acceptedCosmicNames:
26
+ - Epimetheus
27
+ constraints:
28
+ forbidPhrases:
29
+ - alle Branchen
30
+ - jeder Kunde
@@ -0,0 +1,21 @@
1
+ id: breadcrumbs
2
+ displayName: Breadcrumbs
3
+ version: 1.0.0
4
+ semanticRole: breadcrumbs
5
+ description: |
6
+ Starter RFC-0072 archetype seeded from existing manifest metadata.
7
+ expectedIntents:
8
+ - orient-visitor
9
+ - surface-content
10
+ - fulfill-legal-requirement
11
+ expectedIndustryFit:
12
+ - non-profit
13
+ layoutHint: single-column
14
+ bodyKind: composite
15
+ propsSchema:
16
+ $shape: zod
17
+ shape: |
18
+ z.object({}).passthrough()
19
+ acceptedCosmicNames:
20
+ - Thebe
21
+ constraints: {}
@@ -0,0 +1,37 @@
1
+ id: chat-widget
2
+ displayName: Chat widget
3
+ version: 1.0.0
4
+ semanticRole: consent-gated-chat-launcher
5
+ description: |
6
+ Consent-gated, click-to-load chat widget launcher (RFC-0175). Renders a
7
+ first-party launcher; the third-party chat vendor's script loads only after the
8
+ visitor clicks. The vendor binding (adapter + public options) is engineering-owned
9
+ in system.md integrations.chat. Carries the in-widget legal notice + Privacy Policy
10
+ link required by RFC-0177.
11
+ expectedIntents:
12
+ - drive-contact
13
+ - capture-lead
14
+ - convert-visitor
15
+ expectedIndustryFit:
16
+ - consulting-and-coaching
17
+ - legal-services
18
+ - trades-and-construction
19
+ layoutHint: single-column
20
+ bodyKind: composite
21
+ propsSchema:
22
+ $shape: zod
23
+ compose:
24
+ - section-visual
25
+ - section-header
26
+ shape: |
27
+ z.object({
28
+ launcherLabel: z.string().min(1),
29
+ legalNotice: z.string().min(1),
30
+ privacyPolicyLabel: z.string().min(1).optional(),
31
+ privacyPolicyPageId: z.string().min(1),
32
+ body: z.record(z.unknown()).optional(),
33
+ ctaGroup: z.record(z.unknown()).optional(),
34
+ }).strict()
35
+ acceptedCosmicNames:
36
+ - Amalthea
37
+ constraints: {}
@@ -0,0 +1,31 @@
1
+ id: comparison-cards
2
+ displayName: Comparison cards
3
+ version: 1.2.0
4
+ semanticRole: side-by-side-comparison
5
+ description: |
6
+ Side-by-side rows. RFC-0103 bodyKind: comparison.
7
+ expectedIntents:
8
+ - differentiation
9
+ - clarify-positioning
10
+ expectedIndustryFit:
11
+ - trades-and-construction
12
+ - consulting-and-coaching
13
+ - legal-services
14
+ layoutHint: card-grid
15
+ bodyKind: comparison
16
+ recommendedItemCount:
17
+ min: 2
18
+ max: 8
19
+ propsSchema:
20
+ $shape: zod
21
+ compose:
22
+ - section-visual
23
+ - section-header
24
+ - body-comparison
25
+ acceptedCosmicNames:
26
+ - Janus
27
+ constraints:
28
+ forbidPhrases:
29
+ - billiger als
30
+ - schlechter als
31
+ - Konkurrent
@@ -0,0 +1,34 @@
1
+ id: controlled-responsibility-block
2
+ displayName: Controlled responsibility block
3
+ version: 1.2.0
4
+ semanticRole: scope-of-responsibility-disclosure
5
+ description: |
6
+ Two-column "covered / not covered" disclosure. RFC-0103 bodyKind: split-list.
7
+ expectedIntents:
8
+ - trust
9
+ - legal-clarity
10
+ - de-risk
11
+ expectedIndustryFit:
12
+ - trades-and-construction
13
+ - consulting-and-coaching
14
+ - legal-services
15
+ layoutHint: split
16
+ bodyKind: split-list
17
+ recommendedItemCount:
18
+ min: 4
19
+ max: 10
20
+ propsSchema:
21
+ $shape: zod
22
+ compose:
23
+ - section-visual
24
+ - section-header
25
+ - body-split-list
26
+ acceptedCosmicNames:
27
+ - Calypso
28
+ constraints:
29
+ forbidPhrases:
30
+ - ROI garantiert
31
+ - garantierte Leads
32
+ - "100% Erfolg"
33
+ - Platz 1 auf Google
34
+ - Verkäufe garantiert
@@ -0,0 +1,29 @@
1
+ id: credits
2
+ displayName: Credits gallery
3
+ version: 1.0.0
4
+ semanticRole: credits-gallery
5
+ description: |
6
+ Material credits page rendered as an optimized media gallery (RFC-0232).
7
+ Reads *.credits.yaml sidecars (RFC-0220) and renders each credited material
8
+ as a responsive image (or living-photo / feature video) preview beside its
9
+ localized provenance details. The preview media is computed from
10
+ credit.target.id + credit.target.domain with RFC-0053 language fallback — no
11
+ media filename is authored in content, and no raw HTML lives in any .md.
12
+ expectedIntents:
13
+ - surface-content
14
+ - fulfill-legal-requirement
15
+ expectedIndustryFit: []
16
+ layoutHint: card-grid
17
+ bodyKind: composite
18
+ propsSchema:
19
+ $shape: zod
20
+ compose:
21
+ - section-visual
22
+ shape: |
23
+ z.object({
24
+ heading: z.string().optional(),
25
+ lead: z.string().optional(),
26
+ }).strict()
27
+ acceptedCosmicNames:
28
+ - Makemake
29
+ constraints: {}
@@ -0,0 +1,53 @@
1
+ id: donation-card
2
+ displayName: Donation Card
3
+ version: 1.1.0
4
+ semanticRole: donation-card
5
+ description: |
6
+ Donation card composite. RFC-0101 composed; business data resolved from
7
+ src/content/business-profile/{lang}/organization/legal-identity.md when not overridden.
8
+ expectedIntents:
9
+ - display-donation-card
10
+ - facilitate-donation
11
+ - build-trust
12
+ expectedIndustryFit:
13
+ - non-profit
14
+ layoutHint: single-column
15
+ bodyKind: composite
16
+ propsSchema:
17
+ $shape: zod
18
+ compose:
19
+ - section-visual
20
+ shape: |
21
+ z.object({
22
+ labels: z.object({
23
+ title: z.string().min(1),
24
+ ibanLabel: z.string().min(1),
25
+ bicLabel: z.string().min(1),
26
+ bankLabel: z.string().min(1),
27
+ copyButtonLabel: z.string().min(1),
28
+ qrCodeButtonLabel: z.string().min(1),
29
+ donationInfoLinkLabel: z.string().min(1),
30
+ oldDetailsLabel: z.string().optional(),
31
+ oldDetailsButtonLabel: z.string().min(1),
32
+ oldDetailsButtonExpandedLabel: z.string().optional(),
33
+ kontoLabel: z.string().optional(),
34
+ blzLabel: z.string().optional(),
35
+ qrCodeModalTitle: z.string().min(1),
36
+ qrCodeModalCloseLabel: z.string().min(1),
37
+ qrCodeAltText: z.string().min(1),
38
+ qrInstruction: z.string().min(1),
39
+ donationInfoLinkHref: z.string().optional(),
40
+ modalCloseIcon: z.string().optional(),
41
+ }),
42
+ title: z.string().optional(),
43
+ companyName: z.string().optional(),
44
+ bankName: z.string().optional(),
45
+ iban: z.string().optional(),
46
+ bic: z.string().optional(),
47
+ konto: z.string().optional(),
48
+ blz: z.string().optional(),
49
+ trustIndicators: z.array(z.string()).optional(),
50
+ }).strict()
51
+ acceptedCosmicNames:
52
+ - Pandora
53
+ constraints: {}
@@ -0,0 +1,23 @@
1
+ id: donation-use
2
+ displayName: Donation Use
3
+ version: 1.2.0
4
+ semanticRole: donation-use
5
+ description: |
6
+ Cards explaining where donations go. RFC-0103 bodyKind: cards.
7
+ expectedIntents:
8
+ - signal-transparency
9
+ - build-trust
10
+ - drive-donation
11
+ expectedIndustryFit:
12
+ - non-profit
13
+ layoutHint: card-grid
14
+ bodyKind: cards
15
+ propsSchema:
16
+ $shape: zod
17
+ compose:
18
+ - section-visual
19
+ - section-header
20
+ - body-cards
21
+ acceptedCosmicNames:
22
+ - Rhea
23
+ constraints: {}
@@ -0,0 +1,35 @@
1
+ id: dynamic-status-block
2
+ displayName: Dynamic status block
3
+ version: 1.0.0
4
+ semanticRole: data-driven-status-indicator
5
+ description: |
6
+ Single data-driven status indicator (value + label + optional context). RFC-0758 bodyKind: composite.
7
+ expectedIntents:
8
+ - build-trust
9
+ - establish-identity
10
+ - clarify-positioning
11
+ expectedIndustryFit:
12
+ - trades-and-construction
13
+ - consulting-and-coaching
14
+ - legal-services
15
+ - non-profit
16
+ layoutHint: single-column
17
+ bodyKind: composite
18
+ propsSchema:
19
+ $shape: zod
20
+ compose:
21
+ - section-visual
22
+ - section-header
23
+ shape: |
24
+ z.object({
25
+ value: z.union([z.string(), z.number()]),
26
+ label: z.string().min(1),
27
+ contextText: z.string().optional(),
28
+ valuePrefix: z.string().optional(),
29
+ valueSuffix: z.string().optional(),
30
+ valueTone: z.enum(["default", "success", "warning", "muted"]).optional(),
31
+ animated: z.boolean().optional(),
32
+ }).strict()
33
+ acceptedCosmicNames:
34
+ - Elara
35
+ constraints: {}
@@ -0,0 +1,26 @@
1
+ id: faq-list
2
+ displayName: Faq List
3
+ version: 1.1.0
4
+ semanticRole: faq-list
5
+ description: |
6
+ FAQ accordion sourced from business/faq entries. RFC-0101/0102 composed.
7
+ expectedIntents:
8
+ - explain-approach
9
+ - build-trust
10
+ - answer-questions
11
+ expectedIndustryFit:
12
+ - non-profit
13
+ layoutHint: single-column
14
+ bodyKind: composite
15
+ propsSchema:
16
+ $shape: zod
17
+ compose:
18
+ - section-visual
19
+ - section-header
20
+ shape: |
21
+ z.object({
22
+ tag: z.string().optional(),
23
+ }).strict()
24
+ acceptedCosmicNames:
25
+ - Atlas
26
+ constraints: {}
@@ -0,0 +1,53 @@
1
+ id: final-cta
2
+ displayName: Final Cta
3
+ version: 1.3.0
4
+ semanticRole: final-cta
5
+ description: |
6
+ Final call-to-action. RFC-0103 bodyKind: paragraphs (optional) + RFC-0104
7
+ canonical CtaGroupConfig.
8
+ expectedIntents:
9
+ - convert-visitor
10
+ - drive-contact
11
+ - capture-lead
12
+ expectedIndustryFit:
13
+ - non-profit
14
+ layoutHint: single-column
15
+ bodyKind: paragraphs
16
+ propsSchema:
17
+ $shape: zod
18
+ compose:
19
+ - section-visual
20
+ - section-header
21
+ - body-paragraphs
22
+ shape: |
23
+ z.object({
24
+ ctaGroup: z.object({
25
+ align: z.enum(["left", "center", "right"]).optional(),
26
+ items: z.array(z.object({
27
+ label: z.string().min(1),
28
+ ariaLabel: z.string().optional(),
29
+ variant: z.enum(["primary", "secondary", "ghost", "danger"]).optional(),
30
+ size: z.enum(["sm", "md", "lg"]).optional(),
31
+ fullWidth: z.boolean().optional(),
32
+ target: z.discriminatedUnion("kind", [
33
+ z.object({
34
+ kind: z.literal("internal"),
35
+ pageId: z.string().min(1),
36
+ anchor: z.string().optional(),
37
+ }).strict(),
38
+ z.object({
39
+ kind: z.literal("external"),
40
+ href: z.string().min(1),
41
+ rel: z.string().optional(),
42
+ }).strict(),
43
+ z.object({
44
+ kind: z.literal("anchor"),
45
+ anchor: z.string().min(1),
46
+ }).strict(),
47
+ ]),
48
+ })).min(1),
49
+ }).strict(),
50
+ }).strict()
51
+ acceptedCosmicNames:
52
+ - Dione
53
+ constraints: {}
@@ -0,0 +1,65 @@
1
+ id: hero-decision-card
2
+ displayName: Hero · Decision card
3
+ version: 1.1.0
4
+ semanticRole: hero-with-decision-card
5
+ description: |
6
+ Hero with side decision card. RFC-0101/0102 composed; decision card uses
7
+ RFC-0101 GlassConfig.
8
+ expectedIntents:
9
+ - introduction
10
+ - cta
11
+ - clarify-positioning
12
+ expectedIndustryFit:
13
+ - trades-and-construction
14
+ - consulting-and-coaching
15
+ - legal-services
16
+ layoutHint: decision-card
17
+ bodyKind: composite
18
+ recommendedItemCount:
19
+ min: 3
20
+ max: 4
21
+ propsSchema:
22
+ $shape: zod
23
+ compose:
24
+ - section-visual
25
+ - section-header
26
+ shape: |
27
+ z.object({
28
+ tagline: z.string().optional(),
29
+ ctaNote: z.string().min(1).optional(),
30
+ backgroundImage: z.string().optional(),
31
+ leadImage: z.object({
32
+ src: z.string().min(1),
33
+ alt: z.string().min(1),
34
+ }).optional(),
35
+ leadImageVisible: z.boolean().optional(),
36
+ primaryCta: z.object({
37
+ label: z.string().min(2),
38
+ target: z.string().min(1),
39
+ }).optional(),
40
+ secondaryCta: z.object({
41
+ label: z.string().min(2),
42
+ target: z.string().min(1),
43
+ }).optional(),
44
+ decisionCard: z.object({
45
+ glass: z.object({
46
+ enabled: z.boolean(),
47
+ blur: z.number().optional(),
48
+ saturate: z.number().optional(),
49
+ tint: z.string().optional(),
50
+ tintOpacity: z.number().optional(),
51
+ border: z.enum(["hairline", "none"]).optional(),
52
+ }).optional(),
53
+ items: z.array(z.object({
54
+ label: z.string().min(2),
55
+ value: z.string().min(2),
56
+ })).min(1),
57
+ }).optional(),
58
+ }).strict()
59
+ acceptedCosmicNames:
60
+ - Phobos
61
+ constraints:
62
+ forbidPhrases:
63
+ - günstig
64
+ - Ergebnis garantiert
65
+ - "100% Erfolg"
@@ -0,0 +1,50 @@
1
+ id: hero
2
+ displayName: Hero
3
+ version: 1.1.0
4
+ semanticRole: hero
5
+ description: |
6
+ Hero composite — background image, portrait, header (h1 default), CTAs and
7
+ stats. RFC-0101/0102 composed.
8
+ expectedIntents:
9
+ - convert-visitor
10
+ - establish-identity
11
+ - clarify-positioning
12
+ expectedIndustryFit:
13
+ - non-profit
14
+ layoutHint: decision-card
15
+ bodyKind: composite
16
+ propsSchema:
17
+ $shape: zod
18
+ compose:
19
+ - section-visual
20
+ - section-header
21
+ shape: |
22
+ z.object({
23
+ tagline: z.string().optional(),
24
+ subheading: z.string().optional(),
25
+ description: z.string().optional(),
26
+ imageAlt: z.string().min(1),
27
+ backgroundImage: z.string().optional(),
28
+ portraitImage: z.string().optional(),
29
+ ctaPrimaryLabel: z.string().optional(),
30
+ ctaPrimaryAriaLabel: z.string().optional(),
31
+ ctaSecondaryLabel: z.string().optional(),
32
+ ctaSecondaryAriaLabel: z.string().optional(),
33
+ ctaPrimaryUrl: z.string().optional(),
34
+ primaryCtaTarget: z.string().optional(),
35
+ secondaryCtaTarget: z.string().optional(),
36
+ animated: z.boolean().optional(),
37
+ containerVariant: z.enum(["default", "narrow", "full"]).optional(),
38
+ stats: z.array(z.object({
39
+ value: z.string().optional(),
40
+ label: z.string().min(1),
41
+ numericValue: z.number().optional(),
42
+ prefix: z.string().optional(),
43
+ suffix: z.string().optional(),
44
+ decimals: z.number().int().nonnegative().optional(),
45
+ duration: z.number().positive().optional(),
46
+ })).min(1),
47
+ }).strict()
48
+ acceptedCosmicNames:
49
+ - Europa
50
+ constraints: {}
@@ -0,0 +1,23 @@
1
+ id: impact
2
+ displayName: Impact
3
+ version: 1.2.0
4
+ semanticRole: impact
5
+ description: |
6
+ Animated stat counters. RFC-0103 bodyKind: stats; GSAP via SectionStats (RFC-0040 bridge).
7
+ expectedIntents:
8
+ - demonstrate-expertise
9
+ - show-social-proof
10
+ - build-trust
11
+ expectedIndustryFit:
12
+ - non-profit
13
+ layoutHint: split
14
+ bodyKind: stats
15
+ propsSchema:
16
+ $shape: zod
17
+ compose:
18
+ - section-visual
19
+ - section-header
20
+ - body-stats
21
+ acceptedCosmicNames:
22
+ - Ganymede
23
+ constraints: {}
@@ -0,0 +1,43 @@
1
+ id: markdown
2
+ displayName: Markdown
3
+ version: 1.2.0
4
+ semanticRole: markdown
5
+ description: |
6
+ Long-form prose section — composite layout with bespoke header (heading +
7
+ lead), multi-language columns, and contentRef → prose collection rendering.
8
+ RFC-0101 visual contract composed; header lives inline (not via
9
+ <SectionHeader>) because the layout is fundamentally different.
10
+ expectedIntents:
11
+ - surface-content
12
+ - fulfill-legal-requirement
13
+ - orient-visitor
14
+ expectedIndustryFit:
15
+ - non-profit
16
+ layoutHint: single-column
17
+ bodyKind: composite
18
+ propsSchema:
19
+ $shape: zod
20
+ compose:
21
+ - section-visual
22
+ shape: |
23
+ z.object({
24
+ contentRef: z.string().optional(),
25
+ heading: z.string().optional(),
26
+ eyebrow: z.string().optional(),
27
+ lead: z.string().optional(),
28
+ hideSectionNumber: z.boolean().optional(),
29
+ variant: z.enum(["default", "open-source"]).optional(),
30
+ pageId: z.string().optional(),
31
+ languages: z.array(z.string()).optional(),
32
+ showLanguageLabels: z.boolean().optional(),
33
+ animateNumbers: z.boolean().optional(),
34
+ animateYears: z.boolean().optional(),
35
+ numberDuration: z.number().positive().optional(),
36
+ imageFadeBottom: z.boolean().optional(),
37
+ imageFadeTop: z.boolean().optional(),
38
+ imageFadeLeft: z.boolean().optional(),
39
+ imageFadeRight: z.boolean().optional(),
40
+ }).strict()
41
+ acceptedCosmicNames:
42
+ - Hyperion
43
+ constraints: {}
@@ -0,0 +1,43 @@
1
+ id: mountain-journey
2
+ displayName: Mountain journey
3
+ version: 1.0.0
4
+ semanticRole: maturity-visualization
5
+ description: |
6
+ Interactive maturity mountain with GSAP camera pan and marker animation. Visitors enter a URL, a Worker returns a maturity score, and a marker animates along an SVG route path to the score position. RFC-0802.
7
+ expectedIntents:
8
+ - convert-visitor
9
+ - establish-identity
10
+ expectedIndustryFit: []
11
+ layoutHint: single-column
12
+ bodyKind: composite
13
+ acceptedCosmicNames:
14
+ - Eris
15
+ propsSchema:
16
+ $shape: zod
17
+ compose:
18
+ - section-visual
19
+ - section-header
20
+ shape: |
21
+ z.object({
22
+ workerEndpoint: z.string().min(1).optional(),
23
+ backgroundImage: z.string().min(1),
24
+ svgViewBox: z.object({
25
+ width: z.number().positive(),
26
+ height: z.number().positive(),
27
+ }),
28
+ routePath: z.string().min(1),
29
+ stages: z.array(z.object({
30
+ id: z.string().min(1),
31
+ label: z.string().min(1),
32
+ scoreRange: z.string().min(1),
33
+ description: z.string().min(1),
34
+ position: z.number().min(0).max(1),
35
+ })).min(2),
36
+ form: z.object({
37
+ inputLabel: z.string().min(1),
38
+ inputPlaceholder: z.string().min(1),
39
+ submitLabel: z.string().min(1),
40
+ errorMessage: z.string().min(1),
41
+ }),
42
+ }).strict()
43
+ constraints: {}
@@ -0,0 +1,20 @@
1
+ id: navigation
2
+ displayName: Navigation
3
+ version: 1.0.0
4
+ semanticRole: navigation
5
+ description: |
6
+ Starter RFC-0072 archetype seeded from existing manifest metadata.
7
+ expectedIntents:
8
+ - guide-navigation
9
+ - orient-visitor
10
+ expectedIndustryFit:
11
+ - non-profit
12
+ layoutHint: single-column
13
+ bodyKind: composite
14
+ propsSchema:
15
+ $shape: zod
16
+ shape: |
17
+ z.object({}).passthrough()
18
+ acceptedCosmicNames:
19
+ - Phoebe
20
+ constraints: {}