- matrix-gateway: POST /internal/matrix/presence/online endpoint - usePresenceHeartbeat hook with activity tracking - Auto away after 5 min inactivity - Offline on page close/visibility change - Integrated in MatrixChatRoom component
8.7 KiB
8.7 KiB
✅ Автоматичні повідомлення від Monitor Agent про зміни в проєкті
Дата: 2025-11-23
Статус: ✅ Реалізовано
🎯 Що зроблено
1. Створено сервіс відстеження змін проєкту
Файл: src/services/projectChangeTracker.ts
Функціональність:
- ✅ Відстеження змін в проєкті (файли, конфігурації, сервіси, агенти, деплойменти, git)
- ✅ Автоматична генерація повідомлень від Monitor Agent
- ✅ Інтеграція з WebSocket для real-time оновлень
- ✅ Періодична перевірка змін (кожні 10 секунд)
- ✅ API інтеграція з Monitor Service
Типи змін, які відстежуються:
- 📄 file - зміни в файлах
- ⚙️ config - зміни в конфігураціях
- 🔧 service - зміни в сервісах
- 🤖 agent - зміни в агентах
- 🚀 deployment - деплойменти
- 📝 git - git коміти
2. Інтегровано в DagiMonitorPage
Файл: src/pages/DagiMonitorPage.tsx
Зміни:
- ✅ Додано імпорт
projectChangeTracker - ✅ Автоматичне відстеження змін при завантаженні сторінки
- ✅ Автоматичне відображення повідомлень від Monitor Agent про зміни
- ✅ Підсвічування повідомлень про зміни (indigo фон)
- ✅ Кнопка "🧪 Тест зміни" для тестування функціональності
3. Автоматичні повідомлення
Як працює:
ProjectChangeTrackerвідстежує зміни в проєкті- При виявленні зміни генерується повідомлення від Monitor Agent
- Повідомлення автоматично додається в чат на сторінці
/dagi-monitor - Повідомлення відображається з іконкою та детальною інформацією
Формат повідомлення:
🤖 **Monitor Agent:**
📄 **FILE** змінено: src/pages/DagiMonitorPage.tsx
Додано автоматичні повідомлення від Monitor Agent про зміни в проєкті
📝 Commit: abc123
👤 Автор: Developer
🔧 Сервіс: frontend
🚀 Як використовувати
1. Автоматичне відстеження
Система автоматично відстежує зміни при:
- Відкритті сторінки
/dagi-monitor - Періодичній перевірці (кожні 10 секунд)
- Отриманні подій через WebSocket
2. Тестування
Натисніть кнопку "🧪 Тест зміни" в header сторінки /dagi-monitor для симуляції зміни проєкту.
3. Ручне додавання змін
import { projectChangeTracker } from '../services/projectChangeTracker';
// Додати зміну вручну
await projectChangeTracker.addChange({
type: 'file',
action: 'modified',
path: 'src/components/MyComponent.tsx',
description: 'Додано нову функціональність',
details: {
component: 'MyComponent',
feature: 'new-feature',
},
});
📋 API Endpoints (майбутнє)
Отримати зміни проєкту
GET /api/project/changes
Відповідь:
{
"changes": [
{
"id": "change-123",
"type": "file",
"action": "modified",
"path": "src/pages/DagiMonitorPage.tsx",
"description": "Додано автоматичні повідомлення",
"timestamp": "2025-11-23T12:00:00Z",
"details": {
"component": "DagiMonitorPage",
"feature": "project-change-tracking"
}
}
]
}
Генерувати повідомлення від Monitor Agent
POST /api/agent/monitor/project-change
Content-Type: application/json
{
"change": {
"id": "change-123",
"type": "file",
"action": "modified",
"path": "src/pages/DagiMonitorPage.tsx",
"description": "Додано автоматичні повідомлення",
"timestamp": "2025-11-23T12:00:00Z"
},
"context": {
"timestamp": "2025-11-23T12:00:00Z",
"project": "microdao-daarion"
}
}
Відповідь:
{
"message": "🤖 **Monitor Agent:**\n\n📄 **FILE** змінено: src/pages/DagiMonitorPage.tsx\n\nДодано автоматичні повідомлення від Monitor Agent про зміни в проєкті"
}
🔧 Налаштування
Змінити інтервал перевірки
В src/services/projectChangeTracker.ts:
private readonly CHECK_INTERVAL = 10000; // 10 секунд (за замовчуванням)
Вимкнути автоматичне відстеження
projectChangeTracker.stopTracking();
Очистити зміни
projectChangeTracker.clearChanges();
📊 Типи змін
File Changes
{
type: 'file',
action: 'created' | 'modified' | 'deleted',
path: 'src/components/MyComponent.tsx',
description: 'Створено новий компонент',
}
Config Changes
{
type: 'config',
action: 'modified',
path: 'services/swapper-service/config/swapper_config.yaml',
description: 'Додано default_model для НОДА1',
}
Service Changes
{
type: 'service',
action: 'deployed',
path: 'services/swapper-service',
description: 'Swapper Service задеплоєно на НОДА1',
details: {
service: 'swapper-service',
node: 'node-1',
},
}
Agent Changes
{
type: 'agent',
action: 'created',
path: 'agents/monitor',
description: 'Створено Monitor Agent',
details: {
agent: 'monitor',
node: 'node-2',
},
}
Git Changes
{
type: 'git',
action: 'committed',
path: 'src/pages/DagiMonitorPage.tsx',
description: 'Додано автоматичні повідомлення від Monitor Agent',
details: {
commit: 'abc123',
author: 'Developer',
branch: 'main',
},
}
🎨 UI Покращення
Підсвічування повідомлень про зміни
Повідомлення від Monitor Agent про зміни мають:
- Indigo фон (
bg-indigo-50) - Indigo border (
border-indigo-200) - Іконка 🤖 перед текстом
Приклад відображення
┌─────────────────────────────────────────┐
│ 🤖 **Monitor Agent:** │
│ │
│ 📄 **FILE** змінено: │
│ src/pages/DagiMonitorPage.tsx │
│ │
│ Додано автоматичні повідомлення... │
│ │
│ 📝 Commit: abc123 │
│ 👤 Автор: Developer │
│ │
│ 12:34 │
└─────────────────────────────────────────┘
✅ Статус
Реалізовано:
- ✅ Сервіс відстеження змін проєкту
- ✅ Автоматичні повідомлення від Monitor Agent
- ✅ Інтеграція в DagiMonitorPage
- ✅ Тестова кнопка для симуляції змін
- ✅ Підсвічування повідомлень про зміни
Майбутнє:
- ⏳ Backend API для відстеження git змін
- ⏳ Інтеграція з git hooks
- ⏳ Відстеження змін в Docker контейнерах
- ⏳ Відстеження змін в конфігураціях через file watchers
🧪 Тестування
- Відкрити
http://localhost:8899/dagi-monitor - Натиснути кнопку "🧪 Тест зміни"
- Перевірити, що повідомлення від Monitor Agent з'явилося в чаті
- Перевірити підсвічування (indigo фон)
Готово до використання! 🚀