Skip to content

Chess TUI — interactive mode with AI tutor #131

@lthibault

Description

@lthibault

Extends the spectator TUI (#122) into an interactive mode. The human player plays against an LLM-driven AI opponent, assisted by a second AI acting as a chess tutor via a chat panel.

This is the "and then we go further" follow-up to the arena0-parity demo.

Layout (extends #122)

  • Left: ASCII chess board — human selects moves via arrow keys + enter, or algebraic notation input
  • Top-right: Move history
  • Bottom-right: Chat panel — human types natural language questions ("is Nf3 good here?", "what's the plan?"), tutor responds conversationally via scoped LLM capability
  • Bottom bar: Connection status, turn indicator

Architecture

  • The human's node spawns a tutor child process via host.executor().runBytes(wasm)
  • The tutor receives a narrowed capability set: read-only board access (getState, getLegalMoves, getFen) + scoped MCP client capability to the LLM — but NOT applyMove
  • The human commits moves directly through the session protocol; the tutor only advises
  • The AI opponent on the other node is a standalone LLM agent (no consultant sub-process)

This is the primary showcase for scoped capability delegation (#124 verifies the permission boundary).

Depends on: #122 (spectator TUI), #120 (MCP client capability), #124 (delegation mechanism).

Acceptance criteria

  • Human can select and submit moves interactively (arrow keys or algebraic notation)
  • Chat panel accepts natural language input and returns tutor responses
  • Tutor process holds read-only board capability (cannot call applyMove)
  • Tutor process holds scoped LLM capability for generating advice
  • Game end states handled (checkmate, stalemate, resignation)

Metadata

Metadata

Assignees

No one assigned

    Labels

    phase:4Phase 4: Dynamic capability demos

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions