Files
gitea-agent-testbed/docs/interface-contract.md
T
code-agent 52dd589f8c code-agent: implement issue 4
Approval-Correlation: 0543bb321a84cb936bc0ac4988615840
Plan-SHA256: 437a85f68d151ed4db780511812834041cfec5e7cf021fb77e238d5a6196e6fb
Base-SHA: 256be64ac7
2000-01-01 00:00:00 +00:00

1.5 KiB

인터페이스 계약

메시지 제출 이벤트

Textual의 Input.Submitted 이벤트가 #user-input에서 발생하면 ChatApp.on_input_submitted가 처리한다.

입력 정규화

  1. 이벤트의 value에 strip()을 적용한다.
  2. 입력 위젯의 값을 빈 문자열로 초기화한다.
  3. 정규화 결과가 빈 문자열이면 추가 처리를 중단한다.

공백만 포함한 입력은 사용자 메시지, 응답 선택, 대화 항목을 생성하지 않는다.

유효한 입력 처리

정규화 결과가 비어 있지 않으면 다음 순서로 처리한다.

  1. 정규화된 사용자 메시지를 submitted_inputs에 추가한다.
  2. random.choice(RESPONSE_MESSAGES)로 응답을 선택한다.
  3. 선택 응답을 selected_responses에 추가한다.
  4. 대화 영역에 사용자 메시지 Label을 추가한다.
  5. 바로 이어서 응답 Label을 추가한다.
  6. 대화 영역을 마지막 항목까지 스크롤한다.

사용자 메시지와 응답은 별도 대화 항목이며, 화면 표시 순서는 항상 사용자 메시지 다음 응답이다.

화면 위젯 계약

  • 대화 영역은 #conversation 식별자의 VerticalScroll이다.
  • 입력창은 #user-input 식별자의 Input이다.
  • 사용자 메시지는 user-message 클래스를 사용한다.
  • 응답은 response-message 클래스를 사용한다.
  • 애플리케이션 마운트 시 입력창에 포커스를 둔다.

종료 계약

Escape와 Ctrl+Q는 기존 quit 바인딩을 통해 애플리케이션 종료를 요청한다.