CtrlK
BlogDocsLog inGet started
Tessl Logo

jbaruch/tui4j-chat

Build terminal chat UIs with TUI4J - Elm Architecture chat client for AI agent demos with Spring Boot integration

90

1.38x
Quality

90%

Does it follow best practices?

Impact

94%

1.38x

Average score across 3 eval scenarios

SecuritybySnyk

Advisory

Suggest reviewing before use

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-3/

{
  "context": "Tests whether the agent correctly returns HTTP calls as Command lambdas off the UI thread, creates a custom Message record for async results, uses CommandLineRunner for Spring Boot integration, and disables the web server in application.properties.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Command lambda for HTTP",
      "description": "update() returns UpdateResult.from(this, () -> callAgent(input)) — an async Command lambda — rather than blocking on the HTTP call inline",
      "max_score": 12
    },
    {
      "name": "Custom Message record",
      "description": "A record (or class) implementing Message is defined to carry the HTTP response back to update() (e.g. record AgentResponse(String content) implements Message)",
      "max_score": 12
    },
    {
      "name": "Async result handled in update()",
      "description": "update() checks for the custom Message type (instanceof) and processes the response when received",
      "max_score": 10
    },
    {
      "name": "CommandLineRunner used",
      "description": "TuiRunner.java implements CommandLineRunner (not ApplicationRunner or a @PostConstruct method)",
      "max_score": 10
    },
    {
      "name": "Spring @Component annotation",
      "description": "TuiRunner is annotated with @Component (or equivalent Spring stereotype)",
      "max_score": 8
    },
    {
      "name": "Program launch in run()",
      "description": "TuiRunner.run() calls new Program(chatModel).withAltScreen().run()",
      "max_score": 10
    },
    {
      "name": "Web server disabled",
      "description": "application.properties contains spring.main.web-application-type=none",
      "max_score": 12
    },
    {
      "name": "Textarea reset after submit",
      "description": "textarea.reset() is called after reading the submitted input value",
      "max_score": 8
    },
    {
      "name": "Waiting flag pattern",
      "description": "A boolean waiting flag (or equivalent) is set to true when HTTP call is dispatched and false when response arrives",
      "max_score": 9
    },
    {
      "name": "Viewport refresh after response",
      "description": "viewport.setContent() and viewport.gotoBottom() are called after the async response is received",
      "max_score": 9
    }
  ]
}

evals

tile.json