5.4 KiB
Yonexus.Server — Scaffold Plan
This document refines the repository structure into concrete planned files and responsibilities.
1. Planned Tree
.
├── plugin/
│ ├── core/
│ │ ├── registry.ts
│ │ ├── pairing.ts
│ │ ├── auth.ts
│ │ ├── heartbeat.ts
│ │ ├── dispatch.ts
│ │ └── errors.ts
│ ├── hooks/
│ │ ├── onGatewayStart.ts
│ │ └── onGatewayStop.ts
│ ├── commands/
│ │ ├── listClients.ts
│ │ ├── showClient.ts
│ │ └── rePairClient.ts
│ ├── tools/
│ │ ├── sendMessageToClient.ts
│ │ ├── listClientStatus.ts
│ │ └── getPairingState.ts
│ ├── index.ts
│ └── openclaw.plugin.json
├── skills/
│ └── ...
├── servers/
│ ├── wsServer.ts
│ └── sessionManager.ts
├── scripts/
│ └── install.mjs
├── protocol/
│ └── ... (submodule)
├── PLAN.md
├── STRUCTURE.md
└── SCAFFOLD.md
This is a planning scaffold, not yet an implementation commitment down to exact filenames. Names may evolve, but responsibilities should remain stable.
2. plugin/index.ts
plugin/index.ts is wiring only.
Planned responsibilities:
- import server core modules
- import hooks
- import commands
- import tools
- initialize server runtime container
- register hooks with OpenClaw
- register commands with OpenClaw
- register tools with OpenClaw
Design rule:
- no pairing/auth/dispatch business logic should live directly in this file
3. plugin/openclaw.plugin.json
Planned manifest responsibilities:
- define plugin name:
Yonexus.Server - define entrypoint
- declare version
- define config schema / default config shape
- declare plugin metadata
- declare permissions if needed
Planned Config Shape
{
"followerIdentifiers": [],
"notifyBotToken": "",
"adminUserId": "",
"listenHost": "0.0.0.0",
"listenPort": 8787,
"publicWsUrl": ""
}
Planned Validation Expectations
listenPortmust be requiredfollowerIdentifiersmust be an arraynotifyBotTokenmust be requiredadminUserIdmust be required
4. plugin/core/
registry.ts
Planned responsibilities:
- client registry CRUD
- active session tracking
- persistent state load/save
pairing.ts
Planned responsibilities:
- pairing code generation
- pairing pending state
- Discord DM notification orchestration
- pair_confirm validation
- secret issuance
auth.ts
Planned responsibilities:
- auth_request verification
- signature verification
- nonce window validation
- rate-limit checks
- re-pair trigger decisions
heartbeat.ts
Planned responsibilities:
- lastHeartbeatAt updates
- status transitions
- sweep timer logic
- disconnect timeout handling
dispatch.ts
Planned responsibilities:
- builtin message routing
- application rule rewriting
- rule registry
- rule dispatch
- sendMessageToClient routing
errors.ts
Planned responsibilities:
- typed/structured error definitions
- standard server-side error codes
5. plugin/hooks/
onGatewayStart.ts
Planned responsibilities:
- initialize registry/runtime
- start WebSocket server
- start heartbeat sweep
onGatewayStop.ts
Planned responsibilities:
- stop heartbeat sweep
- close sockets gracefully
- persist final state if needed
6. plugin/commands/
These are optional in early versions, but the directory should exist.
Potential first commands:
listClients.ts— list known clients and statusesshowClient.ts— inspect one client’s trust/liveness staterePairClient.ts— revoke trust and force next reconnect to re-pair
7. plugin/tools/
Potential first tools:
sendMessageToClient.tslistClientStatus.tsgetPairingState.ts
These should wrap core logic, not duplicate it.
8. servers/
wsServer.ts
Planned responsibilities:
- WebSocket server startup and bind
- connection accept lifecycle
- socket-level send/receive plumbing
sessionManager.ts
Planned responsibilities:
- map identifiers to active connections
- enforce one active session per identifier
- close/replace older sessions when needed
Design rule:
- service bootstrap/network transport code belongs here
- reusable business/state logic stays in
plugin/core/
9. skills/
Initial version may keep this minimal.
Possible future skill topics:
- Yonexus.Server operations
- pairing recovery
- debugging auth failures
10. scripts/install.mjs
Planned CLI responsibilities:
--install--uninstall--openclaw-profile-path <path>
Planned install behavior:
- build output copied into the OpenClaw plugin directory
- install target path determined by profile path
Planned uninstall behavior:
- remove installed plugin directory
- optionally clean server plugin config if explicitly desired later
11. Initial Bring-Up Order
Recommended first implementation order:
- manifest +
plugin/index.ts servers/wsServer.tsplugin/core/registry.ts- hello / hello_ack routing
- pairing flow
- auth flow
- heartbeat
- commands/tools
12. Notes
protocol/is the single protocol source of truth; do not duplicate protocol docs in this repo.- File names can change, but the wiring/core/service separation should remain.
- Commands and tools can start thin and grow later.