13 KiB
13 KiB
TASKS.md — Полный список задач Team Board
Обновлено: 2026-02-28
Легенда
- ✅ Готово
- 🔧 В работе
- 📋 Запланировано
- 💡 Идея (требует brainstorm)
Инфраструктура
- ✅ Tracker MVP: FastAPI + SQLAlchemy 2 + PostgreSQL 16
- ✅ Docker для Tracker (bind mounts: postgres, uploads, projects)
- ✅ Nginx + SSL (dev.team.uix.su)
- ✅ CI/CD: Gitea Actions auto-deploy
- ✅ Redis удалён (был не нужен)
- ✅ BFF удалён — фронт напрямую к Tracker
Аутентификация
- ✅ JWT auth для людей (login/password)
- ✅ Token auth для агентов (Bearer tb-xxx)
- ✅ Auth middleware на всех /api/ endpoints
- ✅ OPTIONS preflight пропускается
- ✅ Bcrypt пароли (миграция с SHA-256)
- 📋 Authentik OAuth (SSO через auth.uix.su)
Модели данных
- ✅ Unified Member model (human + agent)
- ✅ UUID как primary identifier везде (slug только для display)
- ✅ Soft-delete для agents (is_active flag)
- ✅ AgentConfig: capabilities, labels, chat/task_listen, prompt, model, provider
- ✅ Project: name, slug, description, repo_urls, status, task_counter, auto_assign
- ✅ ProjectMember (many-to-many)
- ✅ Task: title, desc, type, status, priority, labels, assignee, reviewer, watchers, parent_id, depends_on
- ✅ TaskAction (structured audit log)
- ✅ TaskLink (blocks, depends_on, relates_to)
- ✅ Label (глобальные, app-wide)
- ✅ TaskLabel (many-to-many)
- ✅ Step (checklist внутри задачи)
- ✅ Chat + Message (unified: чат + комментарии к задачам)
- ✅ Message: thinking, tool_log, actor_id, mentions
- ✅ Attachment (файлы в чате)
- ✅ ProjectFile (файлы проекта)
- ✅ Centralized enums (tracker/enums.py)
WebSocket
- ✅ WS Foundation: подключение, auth, heartbeat
- ✅ Auto-subscribe на проекты при auth
- ✅ broadcast_message (с фильтрацией агентов)
- ✅ broadcast_task_event (с project_id)
- ✅ System messages: @mention filtering для агентов
- ✅ Agent streaming: start/delta/tool/end events
- ✅ config.updated event (hot reload)
- ✅ Frontend WS heartbeat (30 сек)
REST API
- ✅ CRUD: projects, tasks, steps, messages, members
- ✅ Task links API (POST/GET/DELETE)
- ✅ Labels API (global CRUD + task associations)
- ✅ Project files API (upload, download, search, thumbnails)
- ✅ Chat attachments API
- ✅ Task search (q= по номеру + title)
- ✅ Subscription modes: all, mentions, assigned, none
- ✅ Auto-assign (task labels ↔ agent labels, project option)
- ✅ Init handshake: assigned_tasks в auth.ok
Web Client (Vite + React SPA)
Kanban Board
- ✅ 5 колонок (backlog → done) с цветами
- ✅ Карточки: приоритет, assignee, labels
- ✅ Parent/child key на карточках (TE-1 / TE-3)
- ✅ Move buttons (← →)
- ✅ Task dedup fix
Task Modal
- ✅ Inline edit title + description
- ✅ Task key сверху (breadcrumb с родителем)
- ✅ Status, priority, assignee, reviewer selectors
- ✅ Steps (checklist с прогресс-баром)
- ✅ Comments (newest first, input on top)
- ✅ File attachments в чате
- ✅ Dependencies section (colored labels + search autocomplete)
- ✅ Subtasks section (status dots, clickable navigation)
- ✅ "+" Подзадача button
- ✅ Thinking blocks (collapsible 💭)
- ✅ Tool log (collapsible 🔧)
Create Task Modal
- ✅ Title, Description
- ✅ Type (task/bug/feature)
- ✅ Status selector (colored circles, default backlog)
- ✅ Priority selector (colored circles)
- ✅ Assignee + Reviewer dropdowns
- ✅ Labels toggle buttons
- ✅ Parent ID (for subtasks)
Chat Panel
- ✅ Fullscreen, dedup by ID
- ✅ Message styling (yellow=system, green=agent)
- ✅ @mention autocomplete (MentionInput)
- ✅ File attachments
Project
- ✅ Tabs: Board / Chat / Files / Settings
- ✅ Project Files (drag & drop, search, thumbnails)
- ✅ Project Settings: name, desc, repos, status, auto-assign toggle
- ✅ Member management (humans + agent toggles)
Settings (app-wide)
- ✅ Settings Layout с sidebar
- ✅ 🏷️ Лейблы — глобальные лейблы (CRUD, color picker)
- ✅ 🤖 Агенты — список, создание, редактирование
- ✅ Agent Modal: capabilities, labels, listen modes, prompt, model, token management
Auth & Navigation
- ✅ Login page
- ✅ Sidebar с проектами
- ✅ Mobile viewport fix (100dvh)
- ✅ No-cache для index.html
Picogent (Pi Agent Core — TypeScript)
- ✅ WS transport с auth
- ✅ Router: pure relay, zero side effects
- ✅ Agent streaming (start/delta/tool/end)
- ✅ Config split: agent.json + config.json
- ✅ Hot config update (config.updated handler)
- ✅ Anti-loop: ignore agent messages unless @mentioned
- ✅ Bootstrap context: AGENT.md + memory files
- ✅ Session compaction via Haiku
- ✅ Per-project memory (UUID-based dirs)
- ✅ Auto-reply (if no send_message tool called)
- ✅ 23 MCP tools: tasks(5), steps(2), messages(2), projects(2), members(1), files(6), task links(3)
- ✅ systemd template: picogent@.service
Агенты
- ✅ Coder: slug=coder, capabilities=[code,review], AGENT.md (BMAD Dev style)
- ✅ Architect: slug=architect, capabilities=[architecture,review,planning], AGENT.md (BMAD Winston)
- ✅ Anti-loop rules в обоих AGENT.md
- ✅ Multi-agent: max 1 exchange per topic
Безопасность
- ✅ Path traversal protection (basename + realpath)
- ✅ Agent sandbox (allowedPaths = [agentHome])
- ✅ CASCADE delete (tasks → messages, steps)
- ✅ Auth на всех mutations (get_current_member Depends)
Запланировано
Фича: RBAC — система прав
- 💡 Brainstorm: архитектура permissions (roles, per-endpoint checks)
- 📋 Реализация: таблица roles, role_permissions, middleware
- 📋 Права для агентов (ограничение действий)
- 📋 Viewer role (read-only, уже решено концептуально)
Фича: Subtasks (расширение)
- ✅ parent_id в модели Task
- ✅ Subtasks section в TaskModal
- ✅ Create subtask button
- 📋 Subtasks на kanban доске (индентация или группировка)
- 📋 Drag & drop subtask в другого родителя
Фича: Task Priorities (расширение)
- ✅ Priority field в модели + UI
- 📋 Сортировка по приоритету на доске
- 📋 Фильтр по приоритету
Фича: PR-flow + Gitea интеграция
- 💡 Brainstorm: архитектура интеграции с Gitea API
- 📋 requires_pr flag на задаче
- 📋 Webhook от Gitea → Tracker (PR created/merged)
- 📋 Auto-move задачи в review при PR creation
- 📋 Auto-move в done при PR merge
Фича: Review Iterations
- 📋 author ≠ reviewer validation
- 📋 Max 3 review iterations
- 📋 Review comments → task comments
Фича: Voice Messages
- 📋 Web: MediaRecorder → upload audio
- 📋 Audio player в чате
- 📋 STT транскрипция для агентов (через Thoth)
- 📋 Android: voice recording
Фича: Telegram Bridge (Picobridge)
- 📋 Bridge agent (member_type=bridge)
- 📋 WS → Telegram notifications
- 📋 Важные события: assigned, mentions
- 📋 Bidirectional: Telegram → Tracker
Фича: Android Client
- ✅ Brainstorm завершён (Kotlin + Jetpack Compose)
- 📋 Создать репо team-board/android
- 📋 MVP: Kanban + Chat + Voice + Task creation
Фича: Authentik OAuth
- 📋 OAuth2 flow с auth.uix.su
- 📋 Auto-create member при первом login
- 📋 SSO для всех сервисов
Фича: Billing / API Usage
- 💡 Brainstorm: что считать, как хранить
- 📋 Tracking token usage per agent
- 📋 Cost dashboard
Фича: Расширенные зависимости
- ✅ TaskLink model (blocks, depends_on, relates_to)
- ✅ UI: colored labels + search autocomplete
- 📋 Валидация циклических зависимостей
- 📋 Блокировка взятия задач с незавершёнными зависимостями
- 📋 Граф зависимостей (визуализация)
Фича: Файлы в задачах
- 📋 Attachments прямо на задаче (не только в чате)
- 📋 Drag & drop в TaskModal
Фича: Picogent npm package
- 📋 bin entry, shebang
- 📋 Publish в Gitea registry
Фича: Фильтры и поиск
- 📋 Фильтр задач по assignee, priority, labels на доске
- 📋 Глобальный поиск задач
- 📋 Saved filters
Фича: Vector Search (Phase 3)
- 💡 Когда >20 проектов — RAG для agent memory
Исследования и заимствования
Google A2A Protocol — что можно взять
Источник: https://github.com/a2aproject/A2A (RC v1.0)
- 💡 context_id — кросс-задачный контекст для группировки связанных задач. Агент помнит что TE-5, TE-6, TE-7 — одна история. Наследуется от родителя.
- 💡 Extensions framework — механизм плагинов для агентов:
- Data-only: метаинформация (стоимость, SLA)
- Profile: ограничения на формат данных
- Method Extensions: кастомные API endpoints (git-diff, run-tests)
- State Machine: кастомные статусы задач
- 💡 Agent Card (
/.well-known/agent.json) — стандартный формат описания агента для совместимости с внешними A2A-агентами - 💡 Artifact vs Message — разделение: Message = общение, Artifact = результат работы
- 💡 A2A Gateway — адаптер для интеграции с внешними A2A-совместимыми агентами
Фича: Agent Skills (Inter-agent Method Invocation)
Вдохновлено: A2A Method Extensions
- 💡
skillsполе в AgentConfig — массив объектов {id, name, description, input_schema, output_schema} - 💡 API:
GET /agents/{id}/skills— список skills агента - 💡 API:
POST /agents/{id}/skills/{skill_id}/invoke— вызов skill - 💡 WS event
skill.invoke→ агент получает структурированный запрос - 💡 WS event
skill.result→ результат возвращается вызывающему - 💡 MCP tool
list_agent_skills(agent)— агент узнаёт skills других агентов - 💡 MCP tool
invoke_skill(agent, skill_id, params)— формальный вызов - 💡 Discovery: skills включаются в auth.ok (bootstrap) для всех участников проекта
- 💡 Tracker = прокси (маршрутизирует invoke → целевому агенту через WS)
- 💡 Input/output schema validation на Tracker (до отправки агенту)
Фича: Agent Secrets & Granular Permissions
Связано с: RBAC, Agent Skills
- 💡 Agent Secrets — зашифрованное хранилище секретов per-agent (API keys, prod credentials, SSH keys)
- Секреты доступны ТОЛЬКО агенту-владельцу (не через UI, не другим агентам)
- Tracker хранит encrypted, агент расшифровывает при получении
- Управление: admin создаёт/обновляет через UI, агент читает через MCP tool
get_secret(key)
- 💡 Resource Permissions — какой агент к чему имеет доступ:
prod_deploy— только deploy-agentdb_write— только coder (read-only для остальных)external_api— только у агента с соответствующим секретом
- 💡 Sandbox levels — расширение текущего allowedPaths:
- Level 0: только свой agentHome (текущее)
- Level 1: + project files (read)
- Level 2: + project files (write) + git
- Level 3: + system commands (deploy, restart)
- 💡 Предпосылка для Agent Skills — без permissions skills бесполезны
Фича: Token Budget & Error Recovery
- 📋 Picogent: graceful error handling при 429/402 от LLM API
- Системное сообщение в чат: "⚠️ Агент X: rate limit / billing error"
- Статус агента →
error(новый MemberStatus) - Retry с backoff для 429, полная остановка для 402
- 📋 Token usage tracking: Picogent считает usage → отправляет в Tracker
- 📋 UI: расход токенов per agent (dashboard)
- 📋 Alerts: уведомление при приближении к лимиту (80%, 95%)
- 💡 Budget limits: max tokens per agent per day/month
- 💡 Auto-pause: агент автоматически останавливается при достижении лимита