Source snapshot bcc79fcc · Declared package version 7.0.4. This page combines the checked-in package guide and manifest; commands and runtime behavior were not executed in this review.
Import the root entrypoint from @lssm-tech/lib.presentation-runtime-core, or choose a documented subpath when you only need one part of the package surface.
Adaptive Experiences
The ./adaptive-experience entrypoint maps ContractSpec adaptive experience primitives into presentation defaults that UI renderers can consume without importing product-specific code. It currently resolves DataView defaults such as collection view, density, data depth, and page size from ResolvedAdaptiveExperience.
Use this adapter at the boundary between product policy and rendering code. It should receive already-resolved preferences, behavior support, signals, constraints, and overrides; it should not store hidden user profiles or bypass permissions.
Bundler Helpers
Import the bundler helpers from the root package:
ts
import {
withPresentationTurbopackAliases,
withPresentationWebpackAliases,
withPresentationMetroAliases,
} from '@lssm-tech/lib.presentation-runtime-core';
The helpers also keep shared UI imports platform-correct:
Metro rewrites @lssm-tech/lib.ui-kit-web/ui/* to @lssm-tech/lib.ui-kit/ui/*, @lssm-tech/lib.presentation-runtime-react to @lssm-tech/lib.presentation-runtime-react-native, and lucide-react to lucide-react-native for native platforms.
Metro also enables package exports and merges platform export conditions so ios, android, react-native, and browser package conditions can resolve platform-specific build-tool outputs.
Next.js Turbopack/Webpack rewrites the native package names back to the web packages, including lucide-react-native to lucide-react.
Architecture
src/index.ts is the root public barrel that builds the package entrypoint.
src/adaptive-experience.ts is part of the package's public or composition surface.
src/metro.ts is part of the package's public or composition surface.
src/next.ts is part of the package's public or composition surface.
src/table.ts is part of the package's public or composition surface.
src/visualization.echarts.ts is part of the package's public or composition surface.
src/visualization.model.builders.ts is part of the package's public or composition surface.
src/visualization.model.helpers.ts is part of the package's public or composition surface.
Public Entry Points
Export . publishes through ./dist/index.js; CommonJS require resolves to the generated Metro helper at ./dist/metro.cjs.
Export ./adaptive-experience builds from ./src/adaptive-experience.ts.
Bundler helpers are part of the root entrypoint; no dedicated ./webpack or ./turbopack subpaths are published.
Export ./metro builds from ./src/metro.ts and publishes a generated CommonJS dist/metro.cjs require target for Metro config files.
Export ./next builds from ./src/next.ts.
Export ./table builds from ./src/table.ts.
Export ./visualization builds from ./src/visualization.ts.
Export ./visualization.echarts builds from ./src/visualization.echarts.ts.
Export ./visualization.model builds from ./src/visualization.model.ts.
Export ./visualization.model.builders builds from ./src/visualization.model.builders.ts.
Export ./visualization.model.helpers builds from ./src/visualization.model.helpers.ts.
Export ./visualization.types builds from ./src/visualization.types.ts.
Export ./visualization.utils builds from ./src/visualization.utils.ts.
Export ./marketing builds from ./src/marketing/index.ts: marketing meta builders, the SEO transform and the presentation descriptor normalizer.
Marketing presentation descriptors
normalizeMarketingPresentationDescriptor turns a marketing page (and optional site bindings, evidence and global CTAs) into a serializable MarketingPresentationDescriptor. Its input is structural: MarketingPresentationPageInput and MarketingPresentationSiteInput name only the fields the normalizer reads, over a MarketingPresentation* vocabulary that mirrors the growth marketing site vocabulary. Growth MarketingPageContract and MarketingSiteContract values satisfy them as-is, so hosts pass growth contracts directly. This platform package has no runtime dependency on @lssm-tech/lib.growth-spec; a type-only parity test (src/marketing/descriptor-vocabulary.test.ts, growth-spec as a devDependency) fails typecheck if the two vocabularies drift.
Local Commands
bun run dev — contractspec-bun-build dev
bun run build — bun run prebuild && bun run build:bundle && bun run build:types
bun run lint — bun run lint:fix
bun run lint:check — biome check .
bun run lint:fix — biome check --write --unsafe --only=nursery/useSortedClasses . && biome check --write .
bun run typecheck — tsgo --noEmit -p tsconfig.json
bun run publish:pkg — bun publish --tolerate-republish --ignore-scripts --verbose
bun run publish:pkg:canary — bun publish:pkg --tag canary
bun run clean — rimraf dist .turbo
bun run build:bundle — contractspec-bun-build transpile
bun run build:types — contractspec-bun-build types
bun run prebuild — contractspec-bun-build prebuild
Recent Updates
Replace eslint+prettier by biomejs to optimize speed.
Add data visualization capabilities.
Add table capabilities.
Add table overflow metadata to controller render models so web and native renderers can apply consistent cell overflow behavior.
Add adaptive experience adapters for DataView presentation defaults.
Notes
Core runtime interface is consumed by all presentation runtimes — changes here affect both web and mobile.
Must remain platform-agnostic; no React or React Native imports allowed.
API surface changes require coordinated updates in both downstream runtimes.
Whole canonical adaptive and presentation ownership
Preserve the complete existing adaptive policy, permissions, constraints, override and event families; schema-to-markdown and structured-data implementations; rich-code preferences; all rendering and marketing behavior, defaults and original test assertions. Bind each whole family to its genuine existing Core, Kernel, Growth, DesignCatalog or complete RuntimeCore host supplier. Historical imports remain exact canonical forwards.
This is a Source-only compatible ownership proposal. Fresh task-bound adoption, owning production, declarations, affected runtime tests and platform qualification remain required.
The complete SEO integration test and snapshot live in the Legacy app-config test directory because they exercise its original resolveAppConfig implementation. Pure presentation tests remain with this package; the Legacy test declares its canonical presentation dependency.
Declared capabilities.
Lib Presentation Runtime Core
Core presentation runtime for contract-driven UIs
Use it to
Adopt core presentation runtime for contract-driven uis
Requires
TypeScript
Choose another boundary when
The @lssm-tech/lib.presentation-runtime-core package constraints do not match the target runtime or platform.
These are package-manifest entry points. Named symbols listed above come from the capability catalogue; this is not an exhaustive TypeScript symbol reference.