프로젝트 소개
Overflow는 overflow.nitjsefni.eu에서 이미 운영 중인 서비스로 제공됩니다. 사용자는 GitHub로 로그인하며, 호스팅된 인스턴스를 사용하는 데 별도의 배포가 필요하지 않습니다. 저장소의 설정 지침은 서비스 이용이 아닌 개발 환경 실행을 위한 것입니다.
등록된 공개 GitHub 저장소에는 개방 카탈로그(opening catalog)와 실제 카탈로그(actual catalog)가 있습니다. 등록 시 저장소에 카탈로그 라벨이 생성되고 웹훅이 설치됩니다. 스폰서는 이슈에 개방 라벨을 적용하며, 종료 풀 리퀘스트의 최종 커밋 이후 머지 전까지 실제 카탈로그 라벨을 적용하고 해당 라벨의 이름을 명시한 댓글을 게시합니다. 정산된 크레딧 전송은 감사 가능한 증거와 함께 기록되며, 카탈로그 변경 사항은 버전 관리되어 이미 정산된 작업의 가격을 소급하여 변경하지 않습니다.
로그인한 회원은 Ledger, Issues, Settlements, Register a repository, Calibration 및 Rules 페이지를 읽을 수 있습니다. 원장은 Overflow가 발행한 API 토큰을 통한 프로그램 방식의 저장소 등록도 지원합니다. 계정 등록은 여전히 브라우저의 GitHub 로그인을 통해 수동으로 이루어집니다. 토큰은 Register a repository 페이지에서 한 번만 표시되며 해시 형태로 저장되고, 재생성 시 이전 토큰은 무효화됩니다. POST /api/tokens는 동일 출처 세션 쿠키를 사용하여 토큰을 발행하며, APP_URL과 일치하는 Origin 헤더와 본문이 없거나 Content-Type이 application/json이어야 합니다. POST /api/repositories는 베어러 토큰과 repositoryUrl, openingName, actualName, openingLabels, actualLabels가 포함된 JSON을 수락하며, 실제 카탈로그는 1부터 10까지의 포인트를 포함하는 정확히 10개의 항목을 가져야 합니다. 오류는 코드와 메시지가 포함된 JSON 오류 엔벨로프를 사용합니다. PATCH /api/repositories는 새로운 카탈로그 버전을 추가하며, 해당 버전은 변경 시점부터 적용되므로 이전 증거 윈도우의 기록된 수치는 유지됩니다.
읽기 엔드포인트는 페이지가 렌더링하는 것과 동일한 JSON을 반환합니다: GET /api/dashboard, 선택적 repository, openingLabel 및 claimState 필터가 있는 GET /api/issues, GET /api/settlements, GET /api/settlements/id, GET /api/calibration이 이에 해당합니다. 이들은 베어러 ovf_ 토큰 또는 브라우저 쿠키를 사용하며, 읽기 작업은 출처 확인을 하지 않고 요청 본문을 받지 않습니다. 응답은 인증된 계정 범위로 제한되며, 정산 증거는 해당 정산의 당사자만 확인할 수 있습니다. 읽기 실패 시 일부 필드는 null로 처리되며, 목록 읽기는 최신 200행으로 제한됩니다.
API는 에이전트 하네스를 위해 POST /api/mcp를 통해 MCP 도구로도 제공됩니다. 인증에는 동일한 ovf_ 토큰이 사용됩니다. 전송 방식은 상태 비저장 스트리밍 HTTP입니다: POST당 하나의 JSON-RPC 요청, 호출 간 세션 상태 없음, 2025-06-18 프로토콜 버전 초기화 응답, 알림은 빈 HTTP 202를 수신합니다. MCP를 통한 쿠키 인증 쓰기 작업은 합성된 내부 호출에 동일 출처 보호를 위한 Origin 헤더가 없기 때문에 거부됩니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.