first commit

This commit is contained in:
2026-05-29 08:20:56 +01:00
commit 949299f58d
6368 changed files with 527176 additions and 0 deletions

View File

@@ -0,0 +1,63 @@
---
name: sp-network-plugin-registry
description: Network plugin for peer registry — peer entry storage, binary message encoding, and registry synchronisation across mesh. Part of network-plugin-* family.
---
# sp-network-plugin-registry
| Symbol | Kind | Responsibility |
|---|---|---|
| `RegistryPlugin` | Class | Network plugin managing peer registry |
| `Registry` | Class | Stores and queries peer entries with metadata |
| `RegistrySyncManager` | Class | Synchronises registry state across mesh peers |
| `BinaryMessageEncoder` | Class | Binary encoder for registry sync messages |
| `NETWORK_REG_CODES` | Constant | Error codes via `defineCodes` |
| `NetworkRegError` | Class | Typed error with registry codes |
| `PeerEntry` | Type | Peer record with id, addresses, capabilities, metadata |
**File Structure:** `packages/networking/network/network-plugin-registry/src/{registry,sync,encoder,errors}/`
**Sibling packages:**
- `@suaveplan/network` — core network interfaces
- `@suaveplan/network-bootstrap` — uses registry for peer discovery
**Patterns:**
*Quick Start:*
```ts
import { RegistryPlugin } from "@suaveplan/network-plugin-registry";
const registry = new RegistryPlugin();
node.use(registry);
```
*Peer lookup:*
```ts
import { Registry } from "@suaveplan/network-plugin-registry";
const reg = new Registry();
reg.add({ id: "peer-1", addresses: ["ws://host:port"], capabilities: ["relay"] });
const peer = reg.get("peer-1");
```
*Sync:*
```ts
import { RegistrySyncManager } from "@suaveplan/network-plugin-registry";
const sync = new RegistrySyncManager({ interval: 30000 });
```
**Constraints:**
- Implements `NetworkPlugin` from `@suaveplan/network`
- `Registry` stores peer entries with id, addresses, capabilities, and last-seen
- `RegistrySyncManager` periodically syncs registry deltas to mesh peers
- `BinaryMessageEncoder` encodes sync messages for bandwidth efficiency
- Peer entries expire after configurable TTL unless refreshed
- CRDT-like merge for conflicting peer information
- Error codes use `defineCodes` from `@suaveplan/error`
**Checklist:**
- [ ] `RegistryPlugin` implements `NetworkPlugin`
- [ ] `Registry` stores and retrieves peer entries
- [ ] `RegistrySyncManager` propagates deltas to mesh peers
- [ ] `BinaryMessageEncoder` produces compact wire format
- [ ] Peer entries expire after TTL unless refreshed
- [ ] Conflicts merged deterministically
- [ ] Error codes use `defineCodes` from `@suaveplan/error`