{
  "schema": "leumas.docs.page/1",
  "id": "pkg:@leumas/behavior",
  "slug": "engines/behavior",
  "kind": "capabilities",
  "bucket": "package",
  "title": "@leumas/behavior",
  "name": "@leumas/behavior",
  "eyebrow": null,
  "chip": null,
  "summary": "The behaviour layer: EMA interest profiles with lazy decay, hourly/daily rollups, session transitions, and the next-best-action scorer. Drizzle handles are injected — this engine has no database...",
  "keywords": [
    "behavior",
    "decay",
    "rollups",
    "transitions",
    "drizzle",
    "leumas behavior",
    "behaviour",
    "interest"
  ],
  "audience": "both",
  "funnel": {
    "product": null,
    "cta": null
  },
  "body": "# @leumas/behavior\n\nInterest profiles, rollups and session transitions over the behaviour ledger.\n\n- **`profile.js`** — an exponential moving average with **lazy decay**. The mass decays alongside the\n  vector, which is what stops the profile freezing; `learningRate()` is the number that proves it.\n- **`weights.js`** — event weights in **one place**. Prose points here rather than restating them.\n- **`rollup.js`** — pure aggregation: hour/day rollup cells, session-bounded transitions, per-user folds.\n- **`store.js` / `runner.js`** — persistence and the job. Drizzle handles are injected.\n\nNothing here imports a database driver. `pnpm --filter @leumas/behavior test`.\n",
  "source": {
    "path": "shared/engines/behavior/README.md",
    "blobSha": "",
    "commit": "",
    "committedAt": "",
    "provenance": "no-git",
    "bytes": 827,
    "hash": "ba99e38f1c5ed1374bf1e61ccbb0156889ce09a6"
  },
  "urls": {
    "html": "/p/engines/behavior",
    "json": "/docs/engines/behavior.json",
    "md": "/docs/engines/behavior.md"
  },
  "links": {
    "composes": [],
    "usedBy": [],
    "product": [],
    "howTo": [],
    "skills": []
  },
  "exports": null
}
