@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,21 @@
1
+ # Event: contact.whatsapp_click
2
+ # RFC-0305 / Messkanon
3
+
4
+ id: contact.whatsapp_click
5
+ label: Contact WhatsApp Click
6
+ description: >
7
+ A visitor clicked a WhatsApp contact affordance. Payload must identify only
8
+ the placement, not the target number or visitor.
9
+
10
+ category: contact
11
+ autoEmit: false
12
+
13
+ payload:
14
+ locale:
15
+ type: string
16
+ description: Active locale
17
+ required: true
18
+ placement:
19
+ type: string
20
+ description: Stable machine-readable UI placement
21
+ required: true
@@ -0,0 +1,30 @@
1
+ # Event: cta-click
2
+ # DNA-27 / RFC-0027
3
+ #
4
+ # Fired when a visitor clicks a call-to-action element.
5
+ # The label field must be a stable machine-readable id (not display text).
6
+
7
+ id: cta-click
8
+ label: CTA Click
9
+ description: >
10
+ A visitor clicked a call-to-action button or link. Use stable label values
11
+ (e.g. "hero-donate", "nav-spenden", "footer-contact") to enable funnel analysis.
12
+
13
+ category: engagement
14
+ autoEmit: false
15
+
16
+ payload:
17
+ locale:
18
+ type: string
19
+ description: Active locale
20
+ required: true
21
+ label:
22
+ type: string
23
+ description: >
24
+ Stable machine-readable id for the CTA (e.g. 'hero-donate', 'nav-spenden').
25
+ Must not change without a migration — used in funnel definitions.
26
+ required: true
27
+ href:
28
+ type: string
29
+ description: Absolute or relative href the CTA navigates to
30
+ required: false
@@ -0,0 +1,32 @@
1
+ # Event: donation-confirmed
2
+ # DNA-27 / RFC-0027
3
+
4
+ id: donation-confirmed
5
+ label: Donation Confirmed
6
+ description: >
7
+ A donation was confirmed by the payment provider or third-party platform.
8
+ This is the bottom-of-funnel conversion event — the strongest signal.
9
+ Emit only on confirmed payment, not on form submit.
10
+
11
+ category: donation
12
+ autoEmit: false
13
+
14
+ payload:
15
+ locale:
16
+ type: string
17
+ description: Active locale
18
+ required: true
19
+ transactionId:
20
+ type: string
21
+ description: >
22
+ Opaque transaction id from the payment provider (e.g. Betterplace donation id).
23
+ Must not contain PII. Omit if not accessible from the client.
24
+ required: false
25
+ amountCents:
26
+ type: number
27
+ description: Confirmed donation amount in the smallest currency unit
28
+ required: false
29
+ currency:
30
+ type: string
31
+ description: "ISO 4217 currency code (e.g. 'EUR')"
32
+ required: false
@@ -0,0 +1,21 @@
1
+ # Event: donation-form-start
2
+ # DNA-27 / RFC-0027
3
+
4
+ id: donation-form-start
5
+ label: Donation Form Start
6
+ description: >
7
+ A visitor started filling in the donation form (first interaction).
8
+ Step 2 in the donation funnel.
9
+
10
+ category: donation
11
+ autoEmit: false
12
+
13
+ payload:
14
+ locale:
15
+ type: string
16
+ description: Active locale
17
+ required: true
18
+ formId:
19
+ type: string
20
+ description: "Stable id of the donation form (e.g. 'betterplace-iframe', 'donation-form')"
21
+ required: true
@@ -0,0 +1,29 @@
1
+ # Event: donation-form-submit
2
+ # DNA-27 / RFC-0027
3
+
4
+ id: donation-form-submit
5
+ label: Donation Form Submit
6
+ description: >
7
+ A visitor submitted the donation form. Step 3 in the donation funnel.
8
+ Does not imply payment confirmation — only that the form was submitted.
9
+
10
+ category: donation
11
+ autoEmit: false
12
+
13
+ payload:
14
+ locale:
15
+ type: string
16
+ description: Active locale
17
+ required: true
18
+ formId:
19
+ type: string
20
+ description: Stable id of the donation form
21
+ required: true
22
+ amountCents:
23
+ type: number
24
+ description: Donation amount in the smallest currency unit (e.g. cents)
25
+ required: false
26
+ currency:
27
+ type: string
28
+ description: "ISO 4217 currency code (e.g. 'EUR')"
29
+ required: false
@@ -0,0 +1,29 @@
1
+ # Event: donation-intent
2
+ # DNA-27 / RFC-0027
3
+ #
4
+ # Top-of-funnel signal: visitor expressed intent to donate (clicked a donate CTA,
5
+ # scrolled to the donation section, or opened the donation form page).
6
+
7
+ id: donation-intent
8
+ label: Donation Intent
9
+ description: >
10
+ A visitor expressed intent to donate. This is the first step in the donation
11
+ funnel and is a top-of-funnel conversion signal. Emit when the visitor
12
+ reaches the donation page or clicks a primary donate CTA.
13
+
14
+ category: donation
15
+ autoEmit: false
16
+
17
+ payload:
18
+ locale:
19
+ type: string
20
+ description: Active locale
21
+ required: true
22
+ amountCents:
23
+ type: number
24
+ description: Intended donation amount in the smallest currency unit (e.g. cents). 0 or absent if unknown at this stage.
25
+ required: false
26
+ currency:
27
+ type: string
28
+ description: "ISO 4217 currency code (e.g. 'EUR'). Absent if not yet selected."
29
+ required: false
@@ -0,0 +1,27 @@
1
+ # Event: form-error
2
+ # DNA-27 / RFC-0027
3
+
4
+ id: form-error
5
+ label: Form Error
6
+ description: >
7
+ A form validation error was shown to the visitor. Use errorCode to categorise
8
+ the failure type for funnel drop-off analysis.
9
+
10
+ category: engagement
11
+ autoEmit: false
12
+
13
+ payload:
14
+ locale:
15
+ type: string
16
+ description: Active locale
17
+ required: true
18
+ formId:
19
+ type: string
20
+ description: Stable machine-readable form identifier
21
+ required: true
22
+ errorCode:
23
+ type: string
24
+ description: >
25
+ Machine-readable error code (e.g. 'required-field-missing', 'invalid-email',
26
+ 'network-error'). Must not contain PII.
27
+ required: true
@@ -0,0 +1,21 @@
1
+ # Event: form-start
2
+ # DNA-27 / RFC-0027
3
+
4
+ id: form-start
5
+ label: Form Start
6
+ description: >
7
+ A visitor began interacting with a form (first focus or first keystroke).
8
+ Pair with form-submit and form-error for funnel analysis.
9
+
10
+ category: engagement
11
+ autoEmit: false
12
+
13
+ payload:
14
+ locale:
15
+ type: string
16
+ description: Active locale
17
+ required: true
18
+ formId:
19
+ type: string
20
+ description: "Stable machine-readable form identifier (e.g. 'contact-form', 'donation-form')"
21
+ required: true
@@ -0,0 +1,21 @@
1
+ # Event: form-submit
2
+ # DNA-27 / RFC-0027
3
+
4
+ id: form-submit
5
+ label: Form Submit
6
+ description: >
7
+ A visitor submitted a form successfully (client-side validation passed and the
8
+ submit button was activated). Does not imply server-side success.
9
+
10
+ category: engagement
11
+ autoEmit: false
12
+
13
+ payload:
14
+ locale:
15
+ type: string
16
+ description: Active locale
17
+ required: true
18
+ formId:
19
+ type: string
20
+ description: Stable machine-readable form identifier
21
+ required: true
@@ -0,0 +1,25 @@
1
+ # Event: outbound-click
2
+ # DNA-27 / RFC-0027
3
+
4
+ id: outbound-click
5
+ label: Outbound Link Click
6
+ description: >
7
+ A visitor clicked a link that navigates to an external domain.
8
+ Useful for tracking traffic sent to Betterplace, GlobalGiving, partner sites, etc.
9
+
10
+ category: navigation
11
+ autoEmit: false
12
+
13
+ payload:
14
+ locale:
15
+ type: string
16
+ description: Active locale
17
+ required: true
18
+ href:
19
+ type: string
20
+ description: "Full URL the visitor navigated to (e.g. 'https://www.betterplace.org/...')"
21
+ required: true
22
+ label:
23
+ type: string
24
+ description: Human label of the link as shown to the visitor
25
+ required: false
@@ -0,0 +1,24 @@
1
+ # Event: page-view
2
+ # DNA-27 / RFC-0027
3
+ #
4
+ # Fired automatically by bootGrowthLayer() after init() resolves.
5
+ # Application code does not emit this event manually.
6
+
7
+ id: page-view
8
+ label: Page View
9
+ description: >
10
+ A visitor loaded and rendered a page. Emitted once per page load by
11
+ bootGrowthLayer(). Not emitted by application code.
12
+
13
+ category: navigation
14
+ autoEmit: true
15
+
16
+ payload:
17
+ locale:
18
+ type: string
19
+ description: "Active locale at page load time (e.g. 'de', 'en')"
20
+ required: true
21
+ path:
22
+ type: string
23
+ description: "Pathname of the page (e.g. '/de/spenden-kontakt')"
24
+ required: true
@@ -0,0 +1,28 @@
1
+ # Event: passport-view
2
+ # DNA-27 / RFC-0028
3
+ #
4
+ # Fired when a visitor loads the /cosmic/passport page.
5
+ # Emitted by the PassportHeader (Methone) moon via emit() after render.
6
+
7
+ id: passport-view
8
+ label: Passport View
9
+ description: >
10
+ A visitor opened the Cosmic Passport page. Emitted once per page load by
11
+ the passport-header moon component.
12
+
13
+ category: navigation
14
+ autoEmit: false
15
+
16
+ payload:
17
+ locale:
18
+ type: string
19
+ description: "Active locale at view time (e.g. 'de', 'en')"
20
+ required: true
21
+ appId:
22
+ type: string
23
+ description: "The app identifier from the passport (e.g. 'my-app')"
24
+ required: true
25
+ nebulaScore:
26
+ type: number
27
+ description: "Composite Nebula Score (0-100) from the passport, if available"
28
+ required: false
@@ -0,0 +1,30 @@
1
+ # Event: star-map-navigate
2
+ # DNA-27 / RFC-0028
3
+ #
4
+ # Fired when a visitor opens the /cosmic/star-map page or interacts with the
5
+ # embedded star map SVG within the passport page.
6
+ # Emitted by the passport-star-map (Adrastea) moon component.
7
+
8
+ id: star-map-navigate
9
+ label: Star Map Navigate
10
+ description: >
11
+ A visitor viewed or interacted with the Cosmic Star Map. Emitted once per
12
+ page load on the /cosmic/star-map route, or when the inline star map is
13
+ expanded on the passport page.
14
+
15
+ category: navigation
16
+ autoEmit: false
17
+
18
+ payload:
19
+ locale:
20
+ type: string
21
+ description: "Active locale at navigation time (e.g. 'de', 'en')"
22
+ required: true
23
+ appId:
24
+ type: string
25
+ description: "The app identifier (e.g. 'my-app')"
26
+ required: true
27
+ source:
28
+ type: string
29
+ description: "Where the map was triggered: 'star-map-page' or 'passport-inline'"
30
+ required: true
@@ -0,0 +1,165 @@
1
+ /*
2
+ <MODULE_CONTRACT>
3
+ <purpose>
4
+ Master barrel for @warpgogol/werkstatt-shared/ontology — re-exports all public APIs from the
5
+ enums, manifest, and cosmic sub-modules so consumers can import from the
6
+ package root or sub-paths.
7
+ </purpose>
8
+ <non-goals>
9
+ <item>Do not add business logic here — keep as a pure re-export barrel.</item>
10
+ <item>Do not re-export internal helpers (semver/kebab validators).</item>
11
+ </non-goals>
12
+ </MODULE_CONTRACT>
13
+ <CHANGE_SUMMARY>
14
+ <item>Initial barrel created as part of Wave 1 (RFC-0023 rollout).</item>
15
+ <item>Wave 1 (RFC-0025): Added cosmic catalog re-exports (DNA-23).</item>
16
+ </CHANGE_SUMMARY>
17
+ */
18
+
19
+ // ---------------------------------------------------------------------------
20
+ // Enums — Layer
21
+ // ---------------------------------------------------------------------------
22
+ export { LayerValues, layerSchema } from "./enums.ts";
23
+ export type { Layer } from "./enums.ts";
24
+
25
+ // ---------------------------------------------------------------------------
26
+ // Enums — SemanticRole (RFC-0084: open, archetype-derived; type alias only)
27
+ // ---------------------------------------------------------------------------
28
+ export type { SemanticRole } from "./enums.ts";
29
+
30
+ // ---------------------------------------------------------------------------
31
+ // Enums — ComponentRole
32
+ // ---------------------------------------------------------------------------
33
+ export { ComponentRoleValues, componentRoleSchema } from "./enums.ts";
34
+ export type { ComponentRole } from "./enums.ts";
35
+
36
+ // ---------------------------------------------------------------------------
37
+ // Enums — Industry
38
+ // ---------------------------------------------------------------------------
39
+ export { IndustryValues, industrySchema, IndustryLabels } from "./enums.ts";
40
+ export type { Industry } from "./enums.ts";
41
+
42
+ // ---------------------------------------------------------------------------
43
+ // Manifest schema + types
44
+ // ---------------------------------------------------------------------------
45
+ export {
46
+ KNOWN_INTENTS,
47
+ pageManifestSchema,
48
+ sectionManifestSchema,
49
+ componentManifestSchema,
50
+ manifestSchema,
51
+ } from "./manifest.ts";
52
+ export type {
53
+ KnownIntent,
54
+ PageManifest,
55
+ SectionManifest,
56
+ ComponentManifest,
57
+ Manifest,
58
+ } from "./manifest.ts";
59
+
60
+ // ---------------------------------------------------------------------------
61
+ // Schemas — Constellation, Biome, SiteFamily, SystemManifest (DNA-23, RFC-0025, RFC-0071)
62
+ // ---------------------------------------------------------------------------
63
+ export {
64
+ constellationSchema,
65
+ constellationSlotSchema,
66
+ biomeSchema,
67
+ biomeAxesSchema,
68
+ biomeConstraintsSchema,
69
+ biomeFontEntrySchema,
70
+ biomeFontsSchema,
71
+ biomeGeometrySchema,
72
+ biomeMotionSchema,
73
+ biomePaletteSchema,
74
+ biomeProvenanceSchema,
75
+ biomeSiteBackgroundSchema,
76
+ biomeSpacingSchema,
77
+ biomeTypographySchema,
78
+ siteFamilySchema,
79
+ siteFamilyDetectionSchema,
80
+ siteFamilyRecipeSchema,
81
+ SiteFamilyContract,
82
+ sectionArchetypeSchema,
83
+ systemManifestSchema,
84
+ } from "./schemas/index.ts";
85
+ export type {
86
+ Constellation,
87
+ ConstellationSlot,
88
+ Biome,
89
+ BiomeAxes,
90
+ BiomeConstraints,
91
+ BiomeFontEntry,
92
+ BiomeFontsConfig,
93
+ BiomeGeometry,
94
+ BiomeMotion,
95
+ BiomePalette,
96
+ BiomeProvenance,
97
+ BiomeSiteBackground,
98
+ BiomeSpacing,
99
+ BiomeTypography,
100
+ SiteFamily,
101
+ SiteFamilyDetection,
102
+ SiteFamilyRecipe,
103
+ SectionArchetypeContract,
104
+ SectionArchetypeId,
105
+ SectionArchetypeLayoutHint,
106
+ SystemManifest,
107
+ SystemPagePin,
108
+ SystemPlanetPin,
109
+ } from "./schemas/index.ts";
110
+
111
+ // ---------------------------------------------------------------------------
112
+ // Schemas — PageEntry, BlockEntry (DNA-24, RFC-0026)
113
+ // ---------------------------------------------------------------------------
114
+ export { PageEntrySchema, BlockEntrySchema } from "./schemas/index.ts";
115
+ export type { PageEntry, BlockEntry } from "./schemas/index.ts";
116
+ // getSectionPropsSchema is NOT re-exported from the root barrel — it imports
117
+ // node:fs/promises. Import from @warpgogol/werkstatt-shared/ontology/schemas/manifest-resolver.
118
+
119
+ // ---------------------------------------------------------------------------
120
+ // Schemas — Capability catalog (RFC-0288)
121
+ // ---------------------------------------------------------------------------
122
+ export { capabilityInputOutputSchema, capabilityRecordSchema } from "./schemas/index.ts";
123
+ export type { CapabilityInputOutputSchema, CapabilityRecord } from "./schemas/index.ts";
124
+
125
+ // ---------------------------------------------------------------------------
126
+ // Shared section props fragments (RFC-0101, RFC-0102, RFC-0103)
127
+ // ---------------------------------------------------------------------------
128
+ export {
129
+ SHARED_SECTION_PROPS,
130
+ isSharedSectionPropsId,
131
+ composeManifestPropsSchema,
132
+ sharedSectionPropsChangelog,
133
+ } from "./shared-section-props/index.ts";
134
+ export type {
135
+ JsonSchemaFragment,
136
+ SharedSectionPropsId,
137
+ SharedSectionPropsRef,
138
+ } from "./shared-section-props/index.ts";
139
+
140
+ // ---------------------------------------------------------------------------
141
+ // Cosmic catalogs (DNA-23, RFC-0025)
142
+ // ---------------------------------------------------------------------------
143
+ export {
144
+ StarCatalog,
145
+ starNameSchema,
146
+ PlanetCatalog,
147
+ planetNameSchema,
148
+ MoonCatalog,
149
+ moonNameSchema,
150
+ cosmicNameSchema,
151
+ } from "./cosmic/index.ts";
152
+ export type { StarName, PlanetName, MoonName, CosmicName } from "./cosmic/index.ts";
153
+
154
+ // ---------------------------------------------------------------------------
155
+ // Biome token projection (RFC-0071 consolidated mapping)
156
+ // ---------------------------------------------------------------------------
157
+ export {
158
+ BIOME_TO_TOKEN_MAP,
159
+ BIOME_TOKEN_ALIASES,
160
+ BIOME_TOKEN_DERIVED,
161
+ getBiomeField,
162
+ projectBiomeToTokens,
163
+ getAllProjectedTokenNames,
164
+ } from "./biome-token-projection.ts";
165
+ export type { BiomeTokenAlias, BiomeTokenDerived } from "./biome-token-projection.ts";