5.3 KiB
Yonexus.Client — Scaffold Plan
This document refines the repository structure into concrete planned files and responsibilities.
1. Planned Tree
.
├── plugin/
│ ├── core/
│ │ ├── localState.ts
│ │ ├── keys.ts
│ │ ├── pairing.ts
│ │ ├── auth.ts
│ │ ├── heartbeat.ts
│ │ ├── dispatch.ts
│ │ └── errors.ts
│ ├── hooks/
│ │ ├── onGatewayStart.ts
│ │ └── onGatewayStop.ts
│ ├── commands/
│ │ ├── showStatus.ts
│ │ ├── reconnect.ts
│ │ └── resetTrust.ts
│ ├── tools/
│ │ ├── sendMessageToServer.ts
│ │ └── getConnectionState.ts
│ ├── index.ts
│ └── openclaw.plugin.json
├── skills/
│ └── ...
├── servers/
│ └── clientRuntime.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 client core modules
- import hooks
- import commands
- import tools
- initialize client runtime container
- register hooks with OpenClaw
- register commands with OpenClaw
- register tools with OpenClaw
Design rule:
- no reconnect/auth/pairing business logic should live directly in this file
3. plugin/openclaw.plugin.json
Planned manifest responsibilities:
- define plugin name:
Yonexus.Client - define entrypoint
- declare version
- define config schema / default config shape
- declare plugin metadata
- declare permissions if needed
Planned Config Shape
{
"mainHost": "",
"identifier": "",
"notifyBotToken": "",
"adminUserId": ""
}
Planned Validation Expectations
mainHostmust be requiredidentifiermust be requiredmainHostshould be a valid WebSocket endpoint
4. plugin/core/
localState.ts
Planned responsibilities:
- load/save client local trust state
- persist secret and timestamps
- manage current pairing/auth state
keys.ts
Planned responsibilities:
- generate Ed25519 keypair
- load/save encoded keys
- sign auth proof payloads
pairing.ts
Planned responsibilities:
- track pending pairing flow
- accept human-provided pairing code
- send pair_confirm
- store secret after pair_success
auth.ts
Planned responsibilities:
- construct proof payload
- create signature
- send auth_request
- handle auth_success/auth_failed
- react to re_pair_required
heartbeat.ts
Planned responsibilities:
- schedule heartbeat loop
- stop loop on disconnect
- handle optional heartbeat_ack
dispatch.ts
Planned responsibilities:
- builtin message routing
- application rule registry
- inbound message dispatch
- sendMessageToServer routing
errors.ts
Planned responsibilities:
- typed/structured error definitions
- standard client-side error codes
5. plugin/hooks/
onGatewayStart.ts
Planned responsibilities:
- initialize local state
- ensure keypair exists
- start client runtime
- attempt initial connection
onGatewayStop.ts
Planned responsibilities:
- stop heartbeat
- close socket gracefully
- persist final state if needed
6. plugin/commands/
These are optional in early versions, but the directory should exist.
Potential first commands:
showStatus.ts— inspect connection/auth/pairing statusreconnect.ts— manually trigger reconnectresetTrust.ts— clear local secret and force re-pair
7. plugin/tools/
Potential first tools:
sendMessageToServer.tsgetConnectionState.ts
These should wrap core logic, not duplicate it.
8. servers/
clientRuntime.ts
Planned responsibilities:
- manage WebSocket client runtime
- manage reconnect/backoff loop
- broker raw send/receive with server
Design rule:
- even though the client is not primarily a server, runtime/service bootstrap code still belongs in
servers/for structural consistency - reusable logic remains in
plugin/core/
9. skills/
Initial version may keep this minimal.
Possible future skill topics:
- reconnect troubleshooting
- pairing recovery
- auth debugging guidance
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 local client config if explicitly desired later
11. Initial Bring-Up Order
Recommended first implementation order:
- manifest +
plugin/index.ts servers/clientRuntime.tsplugin/core/localState.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.
servers/should exist even if early client runtime is lightweight.