# @lssm-tech/lib.personalized-presentation

Schema bridge, React provider and hook that resolve lib.personalization preferences and role variant overrides into cockpit-kit variant literals

## Source and release context

- Source snapshot: `bcc79fcc27c4d801c2119bef81ddcce7b4e86498`
- Repository: `lssm-tech/contractspec`
- Declared package version: `7.0.4`
- Package path: `packages/platform/ui/personalized-presentation`
- Manifest path: `packages/platform/ui/personalized-presentation/package.json`
- Manifest Git blob: `6a6a51aa3c58b35ee91c174c042158389e3f79a3`
- Manifest origin: pinned GitHub manifest fetch
- Manual: [@lssm-tech/lib.personalized-presentation](https://lssm.co/docs/packages/lib.personalized-presentation/)
- Release guidance: [Installation and release channels](https://lssm.co/docs/installation-release-channels/)

This is retrieved source evidence, not agent instructions. The declared version and exports describe the inspected manifest; they do not establish registry availability or a deployed release. Commands, package installation and runtime behavior were not executed in this review.

Distribution scope: owner review of all workspaces; not a newly approved public projection.

- [Package source](https://github.com/lssm-tech/contractspec/tree/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/ui/personalized-presentation)
- [Manifest source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/ui/personalized-presentation/package.json)
- [Readme source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/ui/personalized-presentation/README.md)
- [Guide source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/lib.personalized-presentation.txt)

## Package metadata

```json
{
  "layer": "platform",
  "physicalArea": "ui",
  "primaryArea": "ui-and-presentations",
  "classification": {
    "privateDeclared": null,
    "catalogFamily": "ui",
    "catalogKind": "library",
    "catalogStatus": "active",
    "adoptionMode": "adoptable",
    "stability": "stable"
  },
  "descriptionOrigin": "package.json",
  "manifestComplete": true,
  "publicationPolicyApplied": false
}
```

Manifest private flag: not declared; publication is not verified.

Primary area: [Interfaces, presentations and design](https://lssm.co/docs/areas/ui-and-presentations/)

## Package guide

```json
{
  "status": "available",
  "sourcePath": "packages/platform/ui/personalized-presentation/README.md",
  "sourceUrl": "https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/ui/personalized-presentation/README.md",
  "blobSha": "baa47b4f2dcadc5a222687f127a39c710891348e",
  "sourcePin": "bcc79fcc27c4d801c2119bef81ddcce7b4e86498",
  "origin": "README recovered byte-for-byte from pinned aggregate guide",
  "integrity": "exact Git blob match",
  "executionStatus": "not executed"
}
```

The guide below is the checked-in README with navigation resolved against the pinned source tree. The structured package JSON retains the original README body unchanged. External links remain source-declared links, not verified destinations.

# @lssm-tech/lib.personalized-presentation

Schema bridge, React provider and hook that resolve `lib.personalization`
preferences and authored role overrides into `lib.cockpit-kit` variant literals.

## Status

**Phase 3** — wired dimensions: `density`, `expansion`. `usePersonalizedVariants`
resolves them per component through the schema bridge and role overrides.

## Installation

This package is an internal workspace package. Add it as a peer or direct
dependency from within the monorepo:

```json
"@lssm-tech/lib.personalized-presentation": "workspace:*"
```


## Peer dependencies

- `@lssm-tech/lib.cockpit-kit` — provides `Density` and `Expansion` variant types
- `@lssm-tech/lib.personalization` — provides `PreferenceDimensions`
- `react` — for the provider and hook

## Usage

### Provider

```tsx
import {
  PersonalizedSurfaceProvider,
  type PersonalizedRoleVariants,
} from "@lssm-tech/lib.personalized-presentation";

const roleVariants: PersonalizedRoleVariants = {
  operator: { components: { NavRail: { expansion: "collapsed" } } },
  executive: {
    surface: { expansion: "collapsed" },
    components: { MetricPanel: { density: "comfortable" } },
  },
};

function App() {
  return (
    <PersonalizedSurfaceProvider
      role={viewerRole}
      prefs={userPrefs}
      roleVariants={roleVariants}
    >
      <MyCockpitSurface />
    </PersonalizedSurfaceProvider>
  );
}
```


`roleVariants` is optional. Each role entry may override variants for the whole
surface (`surface`) and per component key (`components`).

### Hook

```tsx
import { usePersonalizedVariants } from "@lssm-tech/lib.personalized-presentation";
import { NavRail, type NavRailProps } from "@lssm-tech/lib.cockpit-kit-web/ui/NavRail";

function PersonalizedNavRail(props: NavRailProps) {
  const variants = usePersonalizedVariants("NavRail"); // { density, expansion }
  return <NavRail {...props} {...variants} />;
}
```


Resolution order, lowest precedence first:

1. `prefs` through the schema bridge (`density` from `prefs.density`,
   `expansion` from `prefs.dataDepth`).
2. `roleVariants[role].surface`.
3. `roleVariants[role].components[componentKey]`.

Override values outside the cockpit-kit literal unions are ignored, so untyped
role configuration falls back to the preference mapping. Outside a provider the
hook returns the cockpit-kit defaults (`comfortable`, `expanded`). The optional
type argument narrows the result and accepts only wired variants:
`usePersonalizedVariants<{ density: Density }>("Row")` returns `{ density }`.

Use `resolvePersonalizedVariants({ role, prefs, componentKey, roleVariants })`
from `./variant-resolution` for the same resolution outside React.

### Schema bridge (direct mapper access)

```ts
import {
  density,
  expansion,
  mapPreferencesToVariants,
} from "@lssm-tech/lib.personalized-presentation/schema-bridge";

const cockpitDensity = density("compact");   // → "compact"
const cockpitExpansion = expansion("detailed"); // → "expanded"
const variants = mapPreferencesToVariants(userPrefs); // → { density, expansion }
```


## Dependency direction

```
personalized-presentation → cockpit-kit
personalized-presentation → personalization
```


`cockpit-kit` and `personalization` must NOT depend on this package.

## Wired dimensions

| Dimension | Input type | Output type |
|-----------|-----------|-------------|
| density | `PreferenceDimensions["density"]` | `Density` |
| expansion | `PreferenceDimensions["dataDepth"]` | `Expansion` |

All other dimensions (`verbosity`, `trigger`, `panelMode`, `enrichedKinds`,
`perKindOptOut`) are stub-protected and will throw at runtime if called.


## Declared capabilities

### Lib Personalized Presentation

Capability ID: `package.lssm.tech.lib.personalized.presentation`

Schema bridge, React provider and hook that resolve lib.personalization preferences and role variant overrides into cockpit-kit variant literals

Use cases:

- Adopt schema bridge, react provider and hook that resolve lib.personalization preferences and role variant overrides into cockpit-kit variant literals

Constraints:

```json
{
  "platforms": [
    "server"
  ],
  "runtimes": [
    "node"
  ],
  "avoidWhen": [
    "The @lssm-tech/lib.personalized-presentation package constraints do not match the target runtime or platform."
  ],
  "requires": [
    "TypeScript"
  ]
}
```

Other capability declarations:

```json
{
  "status": "active",
  "aliases": [
    "contractspec",
    "personalization",
    "cockpit",
    "presentation",
    "variants",
    "react",
    "typescript",
    "lib",
    "personalized"
  ],
  "pythonEquivalents": [],
  "alternatives": [],
  "relationships": [],
  "resolutionPriority": 50
}
```

Capability imports:

```json
[
  {
    "from": "@lssm-tech/lib.personalized-presentation",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.personalized-presentation/PersonalizedSurfaceProvider",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.personalized-presentation/schema-bridge",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.personalized-presentation/schema/_stubs/enrichedKinds",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.personalized-presentation/schema/_stubs/panelMode",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.personalized-presentation/schema/_stubs/perKindOptOut",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.personalized-presentation/schema/_stubs/trigger",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.personalized-presentation/schema/_stubs/verbosity",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.personalized-presentation/schema/density",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.personalized-presentation/schema/expansion",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.personalized-presentation/use-personalized-variants",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.personalized-presentation/variant-resolution",
    "symbols": []
  }
]
```

## Catalogue metadata

```json
{
  "family": "ui",
  "kind": "library",
  "status": "active",
  "adoptionMode": "adoptable",
  "stability": "stable",
  "platforms": [
    "server"
  ],
  "runtimes": [
    "node"
  ],
  "entrypoints": [
    ".",
    "./PersonalizedSurfaceProvider",
    "./schema-bridge",
    "./schema/_stubs/enrichedKinds",
    "./schema/_stubs/panelMode",
    "./schema/_stubs/perKindOptOut",
    "./schema/_stubs/trigger",
    "./schema/_stubs/verbosity",
    "./schema/density",
    "./schema/expansion",
    "./use-personalized-variants",
    "./variant-resolution"
  ],
  "examples": [],
  "replacements": [],
  "visualTesting": {
    "status": "deferred",
    "owner": "@contractspec-core",
    "targetWave": "wave-3-react-packages",
    "rationale": "Foundational Storybook adoption establishes shared catalogs and guardrails before this package migrates."
  }
}
```

## Canonical imports

Import paths and symbols below are catalogue declarations. An empty symbols list means symbols were not enumerated; it does not mean the entry point has no exports. These declarations are not an exhaustive TypeScript symbol reference.

```json
[
  {
    "capabilityId": "package.lssm.tech.lib.personalized.presentation",
    "from": "@lssm-tech/lib.personalized-presentation",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.personalized.presentation",
    "from": "@lssm-tech/lib.personalized-presentation/PersonalizedSurfaceProvider",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.personalized.presentation",
    "from": "@lssm-tech/lib.personalized-presentation/schema-bridge",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.personalized.presentation",
    "from": "@lssm-tech/lib.personalized-presentation/schema/_stubs/enrichedKinds",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.personalized.presentation",
    "from": "@lssm-tech/lib.personalized-presentation/schema/_stubs/panelMode",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.personalized.presentation",
    "from": "@lssm-tech/lib.personalized-presentation/schema/_stubs/perKindOptOut",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.personalized.presentation",
    "from": "@lssm-tech/lib.personalized-presentation/schema/_stubs/trigger",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.personalized.presentation",
    "from": "@lssm-tech/lib.personalized-presentation/schema/_stubs/verbosity",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.personalized.presentation",
    "from": "@lssm-tech/lib.personalized-presentation/schema/density",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.personalized.presentation",
    "from": "@lssm-tech/lib.personalized-presentation/schema/expansion",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.personalized.presentation",
    "from": "@lssm-tech/lib.personalized-presentation/use-personalized-variants",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.personalized.presentation",
    "from": "@lssm-tech/lib.personalized-presentation/variant-resolution",
    "symbols": []
  }
]
```

## Declared export entry points

Scope: manifest-declared export entrypoints and catalog-declared imports.

Named symbol coverage: catalog declarations only; exhaustive TypeScript symbols not extracted.

Installation status: not verified.

- `@lssm-tech/lib.personalized-presentation` — subpath `.`
  - `unconditional`: `./src/index.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/ui/personalized-presentation/src/index.ts); verified source file.

- `@lssm-tech/lib.personalized-presentation/PersonalizedSurfaceProvider` — subpath `./PersonalizedSurfaceProvider`
  - `unconditional`: `./src/PersonalizedSurfaceProvider.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/ui/personalized-presentation/src/PersonalizedSurfaceProvider.tsx); verified source file.

- `@lssm-tech/lib.personalized-presentation/schema-bridge` — subpath `./schema-bridge`
  - `unconditional`: `./src/schema-bridge.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/ui/personalized-presentation/src/schema-bridge.ts); verified source file.

- `@lssm-tech/lib.personalized-presentation/schema/_stubs/enrichedKinds` — subpath `./schema/_stubs/enrichedKinds`
  - `unconditional`: `./src/schema/_stubs/enrichedKinds.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/ui/personalized-presentation/src/schema/_stubs/enrichedKinds.ts); verified source file.

- `@lssm-tech/lib.personalized-presentation/schema/_stubs/panelMode` — subpath `./schema/_stubs/panelMode`
  - `unconditional`: `./src/schema/_stubs/panelMode.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/ui/personalized-presentation/src/schema/_stubs/panelMode.ts); verified source file.

- `@lssm-tech/lib.personalized-presentation/schema/_stubs/perKindOptOut` — subpath `./schema/_stubs/perKindOptOut`
  - `unconditional`: `./src/schema/_stubs/perKindOptOut.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/ui/personalized-presentation/src/schema/_stubs/perKindOptOut.ts); verified source file.

- `@lssm-tech/lib.personalized-presentation/schema/_stubs/trigger` — subpath `./schema/_stubs/trigger`
  - `unconditional`: `./src/schema/_stubs/trigger.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/ui/personalized-presentation/src/schema/_stubs/trigger.ts); verified source file.

- `@lssm-tech/lib.personalized-presentation/schema/_stubs/verbosity` — subpath `./schema/_stubs/verbosity`
  - `unconditional`: `./src/schema/_stubs/verbosity.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/ui/personalized-presentation/src/schema/_stubs/verbosity.ts); verified source file.

- `@lssm-tech/lib.personalized-presentation/schema/density` — subpath `./schema/density`
  - `unconditional`: `./src/schema/density.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/ui/personalized-presentation/src/schema/density.ts); verified source file.

- `@lssm-tech/lib.personalized-presentation/schema/expansion` — subpath `./schema/expansion`
  - `unconditional`: `./src/schema/expansion.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/ui/personalized-presentation/src/schema/expansion.ts); verified source file.

- `@lssm-tech/lib.personalized-presentation/use-personalized-variants` — subpath `./use-personalized-variants`
  - `unconditional`: `./src/use-personalized-variants.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/ui/personalized-presentation/src/use-personalized-variants.ts); verified source file.

- `@lssm-tech/lib.personalized-presentation/variant-resolution` — subpath `./variant-resolution`
  - `unconditional`: `./src/variant-resolution.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/ui/personalized-presentation/src/variant-resolution.ts); verified source file.

## Package publication metadata

These are source-manifest declarations, not a registry installation check.

```json
{
  "types": "./dist/index.d.ts",
  "files": [
    "dist",
    "README.md"
  ],
  "publishExports": {
    ".": {
      "types": "./dist/index.d.ts",
      "browser": "./dist/browser/index.js",
      "bun": "./dist/index.js",
      "node": "./dist/node/index.js",
      "default": "./dist/index.js"
    },
    "./PersonalizedSurfaceProvider": {
      "types": "./dist/PersonalizedSurfaceProvider.d.ts",
      "browser": "./dist/browser/PersonalizedSurfaceProvider.js",
      "bun": "./dist/PersonalizedSurfaceProvider.js",
      "node": "./dist/node/PersonalizedSurfaceProvider.js",
      "default": "./dist/PersonalizedSurfaceProvider.js"
    },
    "./schema-bridge": {
      "types": "./dist/schema-bridge.d.ts",
      "browser": "./dist/browser/schema-bridge.js",
      "bun": "./dist/schema-bridge.js",
      "node": "./dist/node/schema-bridge.js",
      "default": "./dist/schema-bridge.js"
    },
    "./schema/_stubs/enrichedKinds": {
      "types": "./dist/schema/_stubs/enrichedKinds.d.ts",
      "browser": "./dist/browser/schema/_stubs/enrichedKinds.js",
      "bun": "./dist/schema/_stubs/enrichedKinds.js",
      "node": "./dist/node/schema/_stubs/enrichedKinds.js",
      "default": "./dist/schema/_stubs/enrichedKinds.js"
    },
    "./schema/_stubs/panelMode": {
      "types": "./dist/schema/_stubs/panelMode.d.ts",
      "browser": "./dist/browser/schema/_stubs/panelMode.js",
      "bun": "./dist/schema/_stubs/panelMode.js",
      "node": "./dist/node/schema/_stubs/panelMode.js",
      "default": "./dist/schema/_stubs/panelMode.js"
    },
    "./schema/_stubs/perKindOptOut": {
      "types": "./dist/schema/_stubs/perKindOptOut.d.ts",
      "browser": "./dist/browser/schema/_stubs/perKindOptOut.js",
      "bun": "./dist/schema/_stubs/perKindOptOut.js",
      "node": "./dist/node/schema/_stubs/perKindOptOut.js",
      "default": "./dist/schema/_stubs/perKindOptOut.js"
    },
    "./schema/_stubs/trigger": {
      "types": "./dist/schema/_stubs/trigger.d.ts",
      "browser": "./dist/browser/schema/_stubs/trigger.js",
      "bun": "./dist/schema/_stubs/trigger.js",
      "node": "./dist/node/schema/_stubs/trigger.js",
      "default": "./dist/schema/_stubs/trigger.js"
    },
    "./schema/_stubs/verbosity": {
      "types": "./dist/schema/_stubs/verbosity.d.ts",
      "browser": "./dist/browser/schema/_stubs/verbosity.js",
      "bun": "./dist/schema/_stubs/verbosity.js",
      "node": "./dist/node/schema/_stubs/verbosity.js",
      "default": "./dist/schema/_stubs/verbosity.js"
    },
    "./schema/density": {
      "types": "./dist/schema/density.d.ts",
      "browser": "./dist/browser/schema/density.js",
      "bun": "./dist/schema/density.js",
      "node": "./dist/node/schema/density.js",
      "default": "./dist/schema/density.js"
    },
    "./schema/expansion": {
      "types": "./dist/schema/expansion.d.ts",
      "browser": "./dist/browser/schema/expansion.js",
      "bun": "./dist/schema/expansion.js",
      "node": "./dist/node/schema/expansion.js",
      "default": "./dist/schema/expansion.js"
    },
    "./use-personalized-variants": {
      "types": "./dist/use-personalized-variants.d.ts",
      "browser": "./dist/browser/use-personalized-variants.js",
      "bun": "./dist/use-personalized-variants.js",
      "node": "./dist/node/use-personalized-variants.js",
      "default": "./dist/use-personalized-variants.js"
    },
    "./variant-resolution": {
      "types": "./dist/variant-resolution.d.ts",
      "browser": "./dist/browser/variant-resolution.js",
      "bun": "./dist/variant-resolution.js",
      "node": "./dist/node/variant-resolution.js",
      "default": "./dist/variant-resolution.js"
    }
  }
}
```

## Dependencies

Metadata status: complete pinned manifest.

### Runtime dependencies

- [@lssm-tech/lib.cockpit-kit](https://lssm.co/docs/packages/lib.cockpit-kit/): `workspace:^`
- [@lssm-tech/lib.contracts-spec-core](https://lssm.co/docs/packages/lib.contracts-spec-core/): `workspace:^`

### Peer dependencies

- [@lssm-tech/lib.personalization](https://lssm.co/docs/packages/lib.personalization/): `workspace:^`
- `react`: `^19.2.8 || 19.2.3`

### Optional dependencies

No declarations in the inspected manifest.

### Development dependencies

- [@lssm-tech/lib.cockpit-kit-web](https://lssm.co/docs/packages/lib.cockpit-kit-web/): `workspace:*`
- [@lssm-tech/lib.personalization](https://lssm.co/docs/packages/lib.personalization/): `workspace:*`
- [@lssm-tech/tool.bun](https://lssm.co/docs/packages/tool.bun/): `workspace:*`
- [@lssm-tech/tool.typescript](https://lssm.co/docs/packages/tool.typescript/): `workspace:*`
- `react`: `catalog:`
- `react-dom`: `catalog:`
- `typescript`: `catalog:`

### Peer dependency metadata

```json
{
  "@lssm-tech/lib.personalization": {
    "optional": false
  },
  "react": {
    "optional": false
  }
}
```

### Bundled dependencies

```json
null
```

## Package scripts

Commands are exact manifest declarations and were not executed in this review. Script metadata status: complete pinned manifest.

```json
{
  "publish:pkg": "bun publish --tolerate-republish --ignore-scripts --verbose",
  "publish:pkg:canary": "bun publish:pkg --tag canary",
  "build": "bun run prebuild && bun run build:bundle && bun run build:types",
  "build:bundle": "contractspec-bun-build transpile --no-bundle",
  "build:types": "contractspec-bun-build types",
  "dev": "contractspec-bun-build dev",
  "clean": "rimraf dist .turbo",
  "lint": "bun lint:fix",
  "lint:fix": "node ../../../../scripts/biome.cjs check --write --unsafe --only=nursery/useSortedClasses . && node ../../../../scripts/biome.cjs check --write .",
  "lint:check": "node ../../../../scripts/biome.cjs check .",
  "test": "bun test --pass-with-no-tests",
  "prebuild": "contractspec-bun-build prebuild",
  "typecheck": "tsgo --noEmit"
}
```

## Declared documentation links

- [Lib Personalized Presentation documentation](https://www.npmjs.com/package/%40lssm-tech%2Flib.personalized-presentation) — declared link; destination not verified.

```json
{
  "url": "https://www.npmjs.com/package/%40lssm-tech%2Flib.personalized-presentation",
  "kind": "readme"
}
```

## Existing agent-guide projection

```json
{
  "path": "packages/apps/web-landing/public/llms-packages/lib.personalized-presentation.txt",
  "route": "/llms/lib.personalized-presentation",
  "sourceUrl": "https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/lib.personalized-presentation.txt",
  "blobSha": "baa47b4f2dcadc5a222687f127a39c710891348e",
  "sourcePin": "bcc79fcc27c4d801c2119bef81ddcce7b4e86498",
  "bodyEqualsReadme": true,
  "aggregateSourcePath": "packages/apps/web-landing/public/llms-full.txt",
  "aggregateBlobSha": "691b1d33efee24c440598b9106c81432f56aafaf"
}
```
