Conversation
New packages/docs with 10 pages: intro (what/how/concepts), connect-your-agent (MCP/Node SDK/TTYA), deep-dive (protocol/ encryption/security/API). Dashboard theme, dark mode default. Add docs link to dashboard navbar.
This reverts commit c15b7c8.
- Add escapeHTML helper for <title> and body contexts in TTYA chat page - Update stale test assertion (status-bar → status-pill) - Remove rootDir/outDir from root tsconfig (packages set their own) - Add typecheck script to root package.json - Add dashboard test coverage (routes + useRoute hook, 25 tests) - Gitignore .diagrams/ and scripts/gen-tldr.mjs
- Update @fastify/static to ^9.1.1 (CVE path traversal + route bypass) - Pin serialize-javascript >=7.0.5 via pnpm.overrides (RCE fix) - Fix CORS origin bypass: reject missing Origin, fallback to IP check - Add 30s timeout on joinPublicGroup to prevent connection pool exhaustion - Sanitize error messages in API responses (no internal leakage) - Set 0700/0600 permissions on data directory and database file - Add MAX_TTYA_FRAME_SIZE (64KB) to prevent OOM via malicious peers - Add runtime validation (isValidTTYARequest/Response) for P2P messages - Cap pending request queue at 1000 entries - Add visitor map TTL cleanup (30min stale, 5min interval)
…ation DM Encryption (replaces broken placeholder): - Add X25519 public key exchange in identity handshake - Implement ECDH shared secret derivation (computeSharedSecret) - Wire Double Ratchet into agent.ts for send/receive DMs - Add SQLite table + RatchetStateRepository for per-peer state persistence - Add MAX_TTYA_FRAME_SIZE (64KB) to both bridge and ttya-manager TTYA Bridge Authentication: - Bridge generates ephemeral Ed25519 keypair on startup - Sends signed auth frame (agentPubKey || timestamp) on connection - Agent verifies signature + timestamp (±5min tolerance) - 5-second auth timeout — unauthenticated connections are dropped - Receive buffer size guard prevents OOM from malicious peers
Add default 'error' event listener in Agent constructor. Without it, any error emitted by SwarmManager (e.g. failed P2P handshake, peer disconnect) kills the Node.js process — documented EventEmitter behavior. This fixes guaranteed crashes in MCP server and CLI when peers are unreachable or network conditions are degraded.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The dashboard handoff PR #7 has already merged, but this branch subsequently received six commits that are still absent from this repository's
main. This follow-up brings in those changes: direct-message encryption, TTYA connection handling, local API restrictions, and resilience when peers disconnect or cannot be reached.What changed
Review notes
The six commits include a documentation-site addition and its exact revert; there is no net documentation-site addition. The final comparison contains 27 changed files, including a substantial lockfile update.
The signed TTYA frame proves possession of the supplied ephemeral key; this change does not establish a configured trusted-bridge identity or mutual authentication. The newer security integration already present in
shmlkv/network.self.mdcontains additional hardening beyond this branch.Validation
mainand confirmed these six commits remain unmerged here.