Brings 36 commits from 2026-04-08..2026-04-10 into main:
- YNX-0102/0401/0603/0903/0904/0905 protocol/auth/pairing/rule messaging
- 5 new top-level docs (ACCEPTANCE/DEPLOYMENT/LESSONS_LEARNED/OPENCLAW_PLUGIN_DEV/OPERATIONS)
- 3863 LOC integration tests (tests/docker/ + tests/integration/framework.test.ts + tests/failure-path/pairing-failures.test.ts + MATRIX.md)
- scripts/ helpers
- globalThis refactor for plugin startup guards
Submodule pointers auto-ff to main's newer values (no regression).
Branch was stalled 6 weeks with PR #5 sitting open with empty body;
merging now since content is purely additive.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Both Yonexus.Client and Yonexus.Server used module-level variables as
hot-reload guards, which reset on every hot-reload (new VM context).
Fix submodule pointers to the corrected plugin index.ts commits.
Also add LESSONS_LEARNED.md and OPENCLAW_PLUGIN_DEV.md (copied from
Dirigent) with three new lessons from this session (§11 connection-plugin
hot-reload trap, §12 transport message routing race, §13 re-hello on
session race) and updated plugin dev guide (§2.2 connection plugin entry
pattern, §6 state table, §9 checklist, §10 cross-plugin globalThis API).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Wire rule registry and authenticated callbacks into both client and server
runtimes; expose __yonexusClient / __yonexusServer on globalThis for
cross-plugin communication. Add Docker-based integration test with
server-test-plugin (test_ping echo) and client-test-plugin (test_pong
receiver), plus docker-compose setup. Fix transport race condition where
a stale _connections entry caused promoteToAuthenticated to silently fail.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- YNX-0903: Add sendMessageToServer() and sendRuleMessage() to Client runtime
- YNX-0904: Add sendMessageToClient() and sendRuleMessageToClient() to Server runtime
- YNX-0905: Implement handleRuleMessage() for server-side message rewriting
with sender identifier injection (::::)
- Update TASKLIST.md to mark all 3 tasks as completed
- Yonexus.Protocol: add codec module with protocol encode/decode
- Yonexus.Server: add persistence types and ClientRecord structure
- Update TASKLIST.md to mark YNX-0102 and YNX-0401 complete
- Add Yonexus.Protocol/src/codec.ts with encodeBuiltin/decodeBuiltin,
rule message parsing, and type-safe envelope builders
- Add Yonexus.Server/plugin/core/persistence.ts with ClientRecord,
ServerRegistry, and serialization helpers
- Update exports in both modules