Files
APAW/archive/GITEA_INTEGRATION.md
¨NW¨ 5a77528b23 refactor: clean up root directory - move deprecated files to archive
Archive:
- docker-compose.yml, Dockerfile.playwright
- scripts/ (legacy test scripts)
- docs/, .test/ (old documentation and tests)
- IMPROVEMENT_PROPOSAL.md (superseded by .kilo/)
- BROWSER_VISIBILITY.md, README.Docker.md
- cleanup-packages.sh, fix-permissions.sh, install-apaw.sh

Keep in root:
- .kilo/ (active system)
- .claude/ (Claude Code runtime)
- AGENTS.md (agent reference)
- README.md (main documentation)
- src/ (utility code)
- package.json, tsconfig.json (project config)
2026-04-05 03:52:10 +01:00

239 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Gitea API Integration
Интеграция с Gitea API 1.21+ для автмоатического управления issues, milestones и логирования работы агентов.
## Установка
```bash
# Установите зависимости
bun install
# Или с npm
npm install
```
## Настройка
### Вариант 1: Токен через окружение
```bash
# Установите переменные окружения
export GITEA_API_URL="https://git.softuniq.eu/api/v1"
export GITEA_TOKEN=аш_токен_здесь"
```
### Вариант 2: Получение токена из логина/пароля
```bash
# Запустите скрипт для создания токена
./scripts/create-gitea-token.sh your_username your_password
# Скрипт выведет:
# export GITEA_TOKEN=abc123...
```
### Вариант 3: Программно через API
```typescript
import { GiteaClient } from './src/kilocode/agent-manager/gitea-client.js'
// Создать токен из логина/пароля
const { token } = await GiteaClient.createToken(
'your_username',
'your_password',
'Pipeline Token',
['all'] // или ['read:issue', 'write:issue', 'read:repository', 'write:repository']
)
// Использовать токен
const client = new GiteaClient({ token })
```
## Использование
### Создание Issues с Milestone
```typescript
import { GiteaClient } from './src/kilocode/agent-manager/gitea-client.js'
const client = new GiteaClient({
apiUrl: 'https://git.softuniq.eu/api/v1',
token: process.env.GITEA_TOKEN
})
client.setRepository('UniqueSoft', 'APAW')
// Создать milestone
const milestone = await client.createMilestone({
title: 'Sprint 1',
description: 'First sprint',
due_on: new Date(Date.now() + 14 * 24 * 60 * 60 * 1000).toISOString()
})
// Создать issue с milestone
const issue = await client.createIssue({
title: 'Implement authentication',
body: `## Чеклист
- [ ] Дизайн API
- [ ] Реализация
- [ ] Тесты`,
labels: ['status: new'],
milestone: milestone.id
})
// Добавить комментарий
await client.createComment(issue.number, {
body: `## ✅ Прогресс
### Выполнено
- ✅ API спроектирован
- ✅ Начата реализация
### В процессе
- 🔄 Написание тестов`
})
// Изменить статус
await client.setStatus(issue.number, 'implementing')
```
### Логирование производительности агентов
```typescript
import { logAgentPerformance, logPipelineStep } from './src/kilocode/agent-manager/gitea-client.js'
// Логировать шаг пайплайна
await logPipelineStep(client, issueNumber, '@lead-developer', 'started', 'Implementing authentication')
// Логировать результат работы агента
await logAgentPerformance(client, issueNumber, 'lead-developer', 8, 'Clean implementation, good test coverage')
```
### Работа с Labels
```typescript
// Получить все labels репозитория
const labels = await client.getRepoLabels()
// Добавить labels к issue
await client.addLabels(issueNumber, [1, 2, 3]) // по ID
await client.addLabels(issueNumber, ['bug', 'priority:high']) // по имени
// Заменить все labels
await client.replaceLabels(issueNumber, [1, 2])
// Удалить label
await client.removeLabel(issueNumber, 1)
// Установить статус (удаляет старые status: labels)
await client.setStatus(issueNumber, 'implementing')
```
## API Scopes
Gitea использует гранулярные scopes вместо старых `repo`, `issue`:
| Scope | Описание |
|-------|----------|
| `all` | Полный доступ |
| `read:issue` | Чтение issues |
| `write:issue` | Создание/изменение issues |
| `read:repository` | Чтение репозитория |
| `write:repository` | Изменение репозитория |
| `read:milestone` | Чтение milestones |
| `write:milestone` | Создание/изменение milestones |
## Скрипты тестирования
### Создание токена
```bash
./scripts/create-gitea-token.sh username password
```
### Полный тест (токен + milestone + issues + comments)
```bash
./scripts/full-gitea-test.sh username password
```
### Тест с существующим токеном
```bash
export GITEA_TOKEN=your_token
./scripts/test-gitea.sh
```
## Структура ответов API
### Milestone
```json
{
"id": 42,
"title": "Pipeline Integration Test",
"description": "...",
"state": "open",
"open_issues": 3,
"closed_issues": 0,
"created_at": "2026-04-04T00:27:11Z",
"due_on": "2026-04-11T00:27:03Z"
}
```
### Issue
```json
{
"number": 1,
"title": "Setup Gitea Client",
"body": "## Чеклист\n- [x] Задача 1\n- [ ] Задача 2",
"state": "open",
"labels": [{ "id": 1, "name": "status: new", "color": "0052cc" }],
"milestone": { "id": 42, "title": "..." },
"comments": 3
}
```
### Label
```json
{
"id": 1,
"name": "status: new",
"color": "0052cc",
"description": "New issue",
"exclusive": false,
"is_archived": false
}
```
## Интеграция с агентами
Агенты могут использовать GiteaClient для:
1. **Создание tasks**: `client.createIssue()`
2. **Обновление статуса**: `client.setStatus()`
3. **Логирование прогресса**: `client.createComment()`
4. **Работа с milestone**: `client.createMilestone()`
5. **Парсинг чеклистов**: Извлечение `- [x]` из issue body
### Pipeline Integration
```typescript
// В .kilo/commands/pipeline.md
import { GiteaClient, PipelineRunner } from './src/kilocode/index.js'
const runner = await createPipelineRunner({
giteaToken: process.env.GITEA_TOKEN
})
// Запустить пайплайн для issue
await runner.run({ issueNumber: 42 })
// Оценить производительность
await runner.logEvaluation(42, [
{ agent: 'lead-developer', score: 8, notes: 'Clean code' },
{ agent: 'code-skeptic', score: 7, notes: 'Found 2 issues' }
], 2, 1.5)
```