# @x12i/memorix-abstraction

> Memorix abstraction and unification tier — map concrete object types to abstract types and read/write unified records

Latest version **1.32.0** (published 2026-07-11) · 0 weekly downloads

## Install

```sh
npm install @x12i/memorix-abstraction
pnpm add @x12i/memorix-abstraction
yarn add @x12i/memorix-abstraction
bun add @x12i/memorix-abstraction
```

Provides the command `memorix-abstraction`.

## Health

**Score 70/100 (B)** — status: active.

Positive: has types; esm support; no vulnerabilities; recently updated; high maintenance score; high quality score.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 1.32.0 |
| Published | 2026-07-11 |
| First published | 2026-06-24 |
| Weekly downloads | 0 |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | >=18.0.0 |
| Dependencies | 5 |
| Unpacked size | 115.2 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | x12i |

## Links

- npm: https://www.npmjs.com/package/@x12i/memorix-abstraction
- Repository: https://github.com/x12i/memorix-mono-repo
- Homepage: https://github.com/x12i/memorix-mono-repo#readme
- Issues: https://github.com/x12i/memorix-mono-repo/issues
- npm.io page: https://npm.io/package/@x12i/memorix-abstraction

## Dependencies (5)

- [@x12i/catalox](https://npm.io/package/@x12i/catalox.md) ^5.9.8
- [@x12i/memorix-schema](https://npm.io/package/@x12i/memorix-schema.md) ^1.32.0
- [@x12i/memorix-writer](https://npm.io/package/@x12i/memorix-writer.md) ^1.32.0
- [@x12i/memorix-retrieval](https://npm.io/package/@x12i/memorix-retrieval.md) ^1.32.0
- [@x12i/memorix-descriptors](https://npm.io/package/@x12i/memorix-descriptors.md) ^1.32.0

## Recent versions

- 1.32.0 (latest) — 2026-07-11
- 1.0.0 — 2026-06-24

## README

# @x12i/memorix-abstraction

Memorix **abstraction and unification tier** — map concrete, source-specific object types and their properties to source-neutral **abstract types**, then read and write unified records across all bound sources.

## Role in the ecosystem

| Concern | Package |
|---------|---------|
| Concrete object types, lists, writes | `@x12i/memorix-descriptors`, `@x12i/memorix-retrieval`, `@x12i/memorix-writer` |
| Observed schema + object-type CRUD | `@x12i/memorix-schema` |
| **Abstract types, bindings, unified reads/writes** | `@x12i/memorix-abstraction` |

## Install

```bash
npm install @x12i/memorix-abstraction
```

## Quick start

```typescript
import { createMemorixAbstractionAdmin, fetchAbstractList } from "@x12i/memorix-abstraction";
import { createMemorixRetrievalStackFromEnv } from "@x12i/memorix-retrieval";

const admin = createMemorixAbstractionAdmin(catalox);

await admin.registerAbstractType({
  id: "abstract:task",
  abstractType: "task",
  properties: {
    id: { label: "ID", valueType: "string", required: true },
    title: { label: "Title", valueType: "string", required: true },
    status: { label: "Status", valueType: "enum", enumValues: ["open", "done"] },
  },
  identity: { abstractIdProperty: "id" },
});

await admin.bindObjectTypeToAbstract({
  id: "bind:msft-todo-tasks->task",
  abstractType: "task",
  objectType: "msft-todo-tasks",
  sourceLabel: "Microsoft To-Do",
  writeDescriptorId: "msft-todo-task-write",
  propertyMap: {
    id: { kind: "path", path: "data.externalId" },
    title: { kind: "path", path: "data.title" },
    status: {
      kind: "enum",
      path: "data.status",
      map: { notStarted: "open", completed: "done" },
      reverseMap: { open: "notStarted", done: "completed" },
    },
  },
});

const { cataloxBound, client } = await createMemorixRetrievalStackFromEnv();
const list = await fetchAbstractList(client, cataloxBound, {
  abstractType: "task",
  page: { limit: 50, offset: 0 },
});
```

## CLI

```bash
npx memorix-abstraction validate
npx memorix-abstraction list
npx memorix-abstraction bindings --abstract-type task
npx memorix-abstraction describe --abstract-type task
npx memorix-abstraction suggest --abstract-type task --object-type msft-todo-tasks
```

## Catalox catalogs

- `memorix-abstract-type-descriptors` — abstract types + abstract property definitions
- `memorix-abstract-bindings` — concrete object type → abstract type bindings + property maps

## Exports

| Import | Purpose |
|--------|---------|
| `@x12i/memorix-abstraction` | Admin, runtime, transforms, suggest |
| `@x12i/memorix-abstraction/types` | Request/response types |
| `@x12i/memorix-abstraction/catalog` | Catalox catalog id constants |
| `@x12i/memorix-abstraction/http` | `registerMemorixAbstractionRoutes(app, stack)` |
| `@x12i/memorix-abstraction/stack` | `createMemorixAbstractionStackFromEnv()` |
| `@x12i/memorix-descriptors/abstraction` | Descriptor + record types |
| `@x12i/memorix-descriptors/validation/abstraction` | Descriptor validators |

See [docs/ABSTRACTION-TIER.md](docs/ABSTRACTION-TIER.md) for the full client contract.

## HTTP API

Mount in Fastify hosts (schema-ui, abstract-ui):

```typescript
import { registerMemorixAbstractionRoutes } from "@x12i/memorix-abstraction/http";
import { createMemorixAbstractionStackFromEnv } from "@x12i/memorix-abstraction/stack";

const stack = await createMemorixAbstractionStackFromEnv();
registerMemorixAbstractionRoutes(app, stack, { prefix: "/api/abstraction" });
```

Routes: `GET /types`, `GET /types/:type`, `GET /types/:type/bindings`, `GET /types/:type/records`, `POST /validate`, `GET /snapshot`.

---
_Source: https://npm.io/package/@x12i/memorix-abstraction · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
