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)
6.3 KiB
6.3 KiB
Gitea API Integration
Интеграция с Gitea API 1.21+ для автмоатического управления issues, milestones и логирования работы агентов.
Установка
# Установите зависимости
bun install
# Или с npm
npm install
Настройка
Вариант 1: Токен через окружение
# Установите переменные окружения
export GITEA_API_URL="https://git.softuniq.eu/api/v1"
export GITEA_TOKEN="ваш_токен_здесь"
Вариант 2: Получение токена из логина/пароля
# Запустите скрипт для создания токена
./scripts/create-gitea-token.sh your_username your_password
# Скрипт выведет:
# export GITEA_TOKEN=abc123...
Вариант 3: Программно через API
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
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')
Логирование производительности агентов
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
// Получить все 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 |
Скрипты тестирования
Создание токена
./scripts/create-gitea-token.sh username password
Полный тест (токен + milestone + issues + comments)
./scripts/full-gitea-test.sh username password
Тест с существующим токеном
export GITEA_TOKEN=your_token
./scripts/test-gitea.sh
Структура ответов API
Milestone
{
"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
{
"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
{
"id": 1,
"name": "status: new",
"color": "0052cc",
"description": "New issue",
"exclusive": false,
"is_archived": false
}
Интеграция с агентами
Агенты могут использовать GiteaClient для:
- Создание tasks:
client.createIssue() - Обновление статуса:
client.setStatus() - Логирование прогресса:
client.createComment() - Работа с milestone:
client.createMilestone() - Парсинг чеклистов: Извлечение
- [x]из issue body
Pipeline Integration
// В .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)