426e9eeabd
Voice Workbench / headless workbench (mocked backends) (push) Has been cancelled
Voice Workbench / real acoustic lane (nightly, provisioned only) (push) Has been cancelled
ci / test (push) Has been cancelled
ci / lint-and-format (push) Has been cancelled
ci / build (push) Has been cancelled
ci / dev-startup (push) Has been cancelled
gitleaks / gitleaks (push) Has been cancelled
Markdown Links / Relative Markdown Links (push) Has been cancelled
Quality (Extended) / Homepage Build (PR smoke) (push) Has been cancelled
Quality (Extended) / Comment-only diff guard (push) Has been cancelled
Quality (Extended) / Format + Type Safety Ratchet (push) Has been cancelled
Quality (Extended) / Develop Gate (secret scan + UI determinism) (push) Has been cancelled
Quality (Extended) / Develop Gate (lint) (push) Has been cancelled
Chat shell gestures / Chat shell gesture + parity e2e (push) Has been cancelled
Cloud Gateway Discord / Test (push) Has been cancelled
Benchmark Bridge Tests / benchmark (bunx @biomejs/biome check packages/lifeops-bench/src, benchmark-lint) (push) Has been cancelled
Benchmark Bridge Tests / benchmark (bunx vitest run --config packages/lifeops-bench/vitest.config.ts --root packages/lifeops-bench --passWithNoTests, benchmark-tests) (push) Has been cancelled
Build Agent Image / build-and-push (push) Has been cancelled
Dev Smoke / bun run dev onboarding chat (push) Has been cancelled
Dev Smoke / Vite HMR dependency-level smoke (push) Has been cancelled
Electrobun Submodule Guard / electrobun gitlink is fetchable (push) Has been cancelled
Publish @elizaos/example-code / check_npm (push) Has been cancelled
Publish @elizaos/example-code / publish_npm (push) Has been cancelled
Publish @elizaos/plugin-elizacloud / verify_version (push) Has been cancelled
Publish @elizaos/plugin-elizacloud / publish_npm (push) Has been cancelled
Sandbox Live Smoke / Sandbox live smoke (push) Has been cancelled
Snap Build & Test / Build Snap (amd64) (push) Has been cancelled
Snap Build & Test / Build Snap (arm64) (push) Has been cancelled
Test Packaging / elizaos CLI global-install smoke (node + bun) (push) Has been cancelled
Cloud Gateway Webhook / Test (push) Has been cancelled
Cloud Tests / lint-and-types (push) Has been cancelled
Cloud Tests / unit-tests (push) Has been cancelled
Cloud Tests / integration-tests (push) Has been cancelled
Cloud Tests / e2e-tests (push) Has been cancelled
CodeQL Advanced / Analyze (javascript-typescript) (push) Has been cancelled
Deploy Apps Worker (Product 2) / Determine environment (push) Has been cancelled
Deploy Apps Worker (Product 2) / Deploy apps worker to apps-control host (${{ needs.determine-env.outputs.environment }}) (push) Has been cancelled
Deploy Eliza Provisioning Worker / Determine environment (push) Has been cancelled
Deploy Eliza Provisioning Worker / Deploy worker to Hetzner host (${{ needs.determine-env.outputs.environment }} @ ${{ needs.determine-env.outputs.deployment_sha }}) (push) Has been cancelled
Dev Smoke / Classify changed paths (push) Has been cancelled
supply-chain / sbom (push) Has been cancelled
supply-chain / vulnerability-scan (push) Has been cancelled
Build, Push & Deploy to Phala Cloud / build-and-push (push) Has been cancelled
Test Packaging / Validate Packaging Configs (push) Has been cancelled
Test Packaging / Build & Test PyPI Package (push) Has been cancelled
Test Packaging / PyPI on Python ${{ matrix.python }} (push) Has been cancelled
Test Packaging / Pack & Test JS Tarballs (push) Has been cancelled
UI Fixture E2E / ui-fixture-e2e (push) Has been cancelled
UI Fixture E2E / fixture-e2e (push) Has been cancelled
UI Story Gate / story-gate (push) Has been cancelled
vault-ci / test (macos-latest) (push) Has been cancelled
vault-ci / test (ubuntu-latest) (push) Has been cancelled
vault-ci / test (windows-latest) (push) Has been cancelled
vault-ci / app-core wiring tests (push) Has been cancelled
verify-patches / verify patches/CHECKSUMS.sha256 (push) Has been cancelled
Voice Benchmark Smoke / voice-emotion fixture smoke (push) Has been cancelled
Voice Benchmark Smoke / voiceagentbench fixture smoke (push) Has been cancelled
Voice Benchmark Smoke / voicebench-quality unit smoke (push) Has been cancelled
Voice Benchmark Smoke / voicebench TypeScript unit (no audio) (push) Has been cancelled
Voice Benchmark Smoke / voice bench smoke summary (push) Has been cancelled
Windows CI / windows ([bun run --cwd packages/app-core test bun run --cwd packages/elizaos test bun run --cwd packages/cloud/shared test], app-and-cli) (push) Has been cancelled
Windows CI / windows ([bun run --cwd packages/scenario-runner test bun run --cwd packages/vault test bun run --cwd packages/security test bun run --cwd plugins/plugin-coding-tools test], framework-packages) (push) Has been cancelled
Windows CI / windows ([bun run --cwd plugins/plugin-elizacloud test bun run --cwd plugins/plugin-discord test bun run --cwd plugins/plugin-anthropic test bun run --cwd plugins/plugin-openai test bun run --cwd plugins/plugin-app-control test bun run --cwd plugins/pl… (push) Has been cancelled
Windows CI / windows ([node packages/scripts/run-turbo.mjs run build --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/agent --concurrency=4 node packages/scripts/run-bash-linux-only.mjs scripts/verify-riscv64-buildpaths.sh node packages/scripts/run… (push) Has been cancelled
Windows CI / windows ([node packages/scripts/run-turbo.mjs run typecheck --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/cloud-shared --concurrency=4 bun run --cwd packages/core test bun run --cwd packages/shared test], core-runtime, 75) (push) Has been cancelled
97 lines
4.8 KiB
Markdown
97 lines
4.8 KiB
Markdown
# @elizaos/plugin-relationships
|
|
|
|
Entity and relationship knowledge graph for Eliza agents.
|
|
|
|
Provides the `ENTITY` umbrella action (person / organization / place / project /
|
|
concept CRUD with identity claims, typed relationships, and merge), an
|
|
`ENTITY_GRAPH` context provider for the planner, and a drizzle
|
|
`pgSchema('app_relationships')` with `entities` and `relationships` tables.
|
|
|
|
## Status
|
|
|
|
**Scaffolded — decomposition in progress.** Action and provider handlers are
|
|
stubs that return a TODO marker. The real EntityStore, identity merge engine,
|
|
voice-observer-bridge, and RelationshipStore still live in
|
|
`@elizaos/plugin-personal-assistant`; they will move here in a follow-up pass.
|
|
|
|
## Migration mapping from `@elizaos/plugin-personal-assistant`
|
|
|
|
| Source under `plugins/plugin-personal-assistant/src/` | Will move to |
|
|
|---|---|
|
|
| `actions/entity.ts` (`ENTITY` action) | `plugins/plugin-relationships/src/actions/entity.ts` |
|
|
| `lifeops/entities/store.ts` (`EntityStore`) | `plugins/plugin-relationships/src/services/entity-store.ts` |
|
|
| `lifeops/entities/merge.ts` (identity merge engine) | `plugins/plugin-relationships/src/services/merge.ts` |
|
|
| `lifeops/entities/voice-observer-bridge.ts` | `plugins/plugin-relationships/src/services/voice-observer-bridge.ts` |
|
|
| `lifeops/entities/voice-observer.ts` | `plugins/plugin-relationships/src/services/voice-observer.ts` |
|
|
| `lifeops/entities/voice-attribution.ts` | `plugins/plugin-relationships/src/services/voice-attribution.ts` |
|
|
| `lifeops/entities/types.ts` (Entity, registries) | folded into `plugins/plugin-relationships/src/types.ts` |
|
|
| `lifeops/relationships/store.ts` (`RelationshipStore`) | `plugins/plugin-relationships/src/services/relationship-store.ts` |
|
|
| `lifeops/relationships/extraction.ts` | `plugins/plugin-relationships/src/services/relationship-extraction.ts` |
|
|
| `lifeops/relationships/types.ts` (Relationship, registries) | folded into `plugins/plugin-relationships/src/types.ts` |
|
|
| LifeOps `lifeops` provider — entity / relationship sections | `plugins/plugin-relationships/src/providers/entity-graph.ts` |
|
|
|
|
DB rows currently live in the LifeOps schema (`app_lifeops.life_entities`,
|
|
`life_entity_identities`, `life_entity_attributes`, `life_relationships`). The
|
|
new plugin owns the dedicated `app_relationships` schema with two minimal
|
|
tables; the rich identity + attribute + edge-state shapes from lifeops will
|
|
land in a follow-up migration.
|
|
|
|
## Plugin surface
|
|
|
|
**Action**
|
|
- `ENTITY` (`src/actions/entity.ts`) — umbrella op dispatch. Accepted ops:
|
|
`create`, `read`, `list`, `log_interaction`, `set_identity`,
|
|
`set_relationship`, `merge`. Contexts: `people`, `contacts`,
|
|
`relationships`. STUB returns a TODO marker.
|
|
|
|
**Provider**
|
|
- `ENTITY_GRAPH` (`src/providers/entity-graph.ts`) — injects a projection of
|
|
the owner's known entities and ego-network edges into the planner. STUB
|
|
returns an empty projection.
|
|
|
|
**Schema**
|
|
- `relationshipsSchema` / `entitiesTable` / `relationshipsTable`
|
|
(`src/db/schema.ts`) — `pgSchema("app_relationships")`. Registered via the
|
|
plugin object's `schema` field so the elizaOS runtime handles migrations.
|
|
|
|
## Layout
|
|
|
|
```
|
|
src/
|
|
index.ts Public exports + default Plugin export
|
|
plugin.ts Plugin object (action + provider + schema)
|
|
types.ts Entity / Relationship interfaces + constants
|
|
actions/
|
|
entity.ts ENTITY umbrella action (STUB)
|
|
providers/
|
|
entity-graph.ts ENTITY_GRAPH provider (STUB)
|
|
db/
|
|
schema.ts drizzle pgSchema + entities + relationships tables
|
|
index.ts re-export schema
|
|
```
|
|
|
|
## Commands
|
|
|
|
```bash
|
|
bun run --cwd plugins/plugin-relationships build # bun build → dist/ + tsc types
|
|
bun run --cwd plugins/plugin-relationships dev # hot-rebuild via build.ts
|
|
bun run --cwd plugins/plugin-relationships test # vitest run
|
|
bun run --cwd plugins/plugin-relationships typecheck # tsgo --noEmit
|
|
bun run --cwd plugins/plugin-relationships check # typecheck + test
|
|
bun run --cwd plugins/plugin-relationships clean # rm -rf dist .turbo
|
|
```
|
|
|
|
## Conventions / gotchas
|
|
|
|
- **`@elizaos/plugin-sql` must be loaded first.** The plugin declares this in
|
|
`dependencies: ["@elizaos/plugin-sql"]`; the runtime registers DB migrations
|
|
for `app_relationships` automatically.
|
|
- **`SELF_ENTITY_ID = "self"`** is the canonical id of the owner. All
|
|
ego-network edges originate from `self`.
|
|
- **`relationshipType` is open-string.** The lifeops `RelationshipTypeRegistry`
|
|
carries the built-in set (`follows`, `colleague_of`, `partner_of`, `manages`,
|
|
…) and will be ported alongside the store.
|
|
- **Stubs only.** Do not rely on `ENTITY` or `ENTITY_GRAPH` returning real
|
|
data yet — both intentionally return a TODO / empty result while the port
|
|
is in progress.
|