docs: expand lint scope batch48 (2 files)
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
|
||||
---
|
||||
|
||||
# 1. Мета
|
||||
## 1. Мета
|
||||
|
||||
Замінити класичні форми/кроки онбордингу повністю **агентським інтерфейсом**.
|
||||
Увесь onboarding виконується через `AgentOnboardingChat`, який:
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
---
|
||||
|
||||
# 2. Загальна архітектура
|
||||
## 2. Загальна архітектура
|
||||
|
||||
Усі дії будуються на:
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
Компоненти:
|
||||
|
||||
```
|
||||
```text
|
||||
src/features/onboarding-agent/
|
||||
AgentOnboardingChat.tsx
|
||||
useOnboardingState.ts
|
||||
@@ -44,11 +44,11 @@ src/features/onboarding-agent/
|
||||
script.json
|
||||
parser.ts
|
||||
transitions.ts
|
||||
```
|
||||
```text
|
||||
|
||||
---
|
||||
|
||||
# 3. State Machine
|
||||
## 3. State Machine
|
||||
|
||||
```ts
|
||||
type OnboardingStep =
|
||||
@@ -63,16 +63,16 @@ type OnboardingStep =
|
||||
| "ask_agent_prefs"
|
||||
| "ask_invites"
|
||||
| "done";
|
||||
```
|
||||
```text
|
||||
|
||||
Перехід між кроками базується на:
|
||||
|
||||
* відповіді користувача,
|
||||
* успішності API-виклику.
|
||||
- відповіді користувача,
|
||||
- успішності API-виклику.
|
||||
|
||||
---
|
||||
|
||||
# 4. Повний сценарій діалогу (репліки агента)
|
||||
## 4. Повний сценарій діалогу (репліки агента)
|
||||
|
||||
Нижче — готовий сценарій, який можна покласти в JSON або хардкод.
|
||||
|
||||
@@ -132,8 +132,8 @@ type OnboardingStep =
|
||||
|
||||
Після відповіді:
|
||||
|
||||
* map → `"public"` / `"confidential"`
|
||||
* `PATCH /teams/{teamId}`
|
||||
- map → `"public"` / `"confidential"`
|
||||
- `PATCH /teams/{teamId}`
|
||||
→ `ask_channel_name`.
|
||||
|
||||
---
|
||||
@@ -158,8 +158,8 @@ type OnboardingStep =
|
||||
|
||||
Mapping:
|
||||
|
||||
* `public` → `type: "public"`
|
||||
* `private` → `type: "group"`
|
||||
- `public` → `type: "public"`
|
||||
- `private` → `type: "group"`
|
||||
|
||||
API:
|
||||
`POST /channels`
|
||||
@@ -177,8 +177,8 @@ API:
|
||||
|
||||
Очікувані відповіді: так / ні.
|
||||
|
||||
* Якщо «ні» → `ask_invites`
|
||||
* Якщо «так» → `ask_agent_prefs`
|
||||
- Якщо «ні» → `ask_invites`
|
||||
- Якщо «так» → `ask_agent_prefs`
|
||||
|
||||
---
|
||||
|
||||
@@ -242,7 +242,7 @@ redirect → `/t/:teamId/c/:channelId`.
|
||||
|
||||
---
|
||||
|
||||
# 5. Intent Parser (як агент розуміє відповіді)
|
||||
## 5. Intent Parser (як агент розуміє відповіді)
|
||||
|
||||
Мінімальний підхід (regex):
|
||||
|
||||
@@ -251,26 +251,26 @@ function parseMode(input: string) {
|
||||
if (input.match(/1|пуб/i)) return "public";
|
||||
if (input.match(/2|прив/i)) return "confidential";
|
||||
}
|
||||
```
|
||||
```text
|
||||
|
||||
```ts
|
||||
function parseYesNo(input: string) {
|
||||
if (input.match(/^так|yes|y$/i)) return true;
|
||||
if (input.match(/^ні|no|n$/i)) return false;
|
||||
}
|
||||
```
|
||||
```text
|
||||
|
||||
Або гібридний:
|
||||
|
||||
* парсимо regex,
|
||||
* якщо незрозуміло → питаємо LLM:
|
||||
- парсимо regex,
|
||||
- якщо незрозуміло → питаємо LLM:
|
||||
*"Чи відповідь користувача означає Так/Ні/Інше?"*
|
||||
|
||||
---
|
||||
|
||||
# 6. Компонент `AgentOnboardingChat.tsx`
|
||||
## 6. Компонент `AgentOnboardingChat.tsx`
|
||||
|
||||
### Мінімальна структура:
|
||||
### Мінімальна структура
|
||||
|
||||
```tsx
|
||||
export function AgentOnboardingChat() {
|
||||
@@ -311,31 +311,31 @@ export function AgentOnboardingChat() {
|
||||
/>
|
||||
);
|
||||
}
|
||||
```
|
||||
```text
|
||||
|
||||
---
|
||||
|
||||
# 7. Acceptance Criteria (як перевіряти)
|
||||
## 7. Acceptance Criteria (як перевіряти)
|
||||
|
||||
* `/onboarding` відкривається як чат.
|
||||
* Користувач спілкується з агентом.
|
||||
* На кожному кроці агент відповідає правильно.
|
||||
* Усі API виклики працюють:
|
||||
- `/onboarding` відкривається як чат.
|
||||
- Користувач спілкується з агентом.
|
||||
- На кожному кроці агент відповідає правильно.
|
||||
- Усі API виклики працюють:
|
||||
|
||||
* `/teams`
|
||||
* `/teams/{id}`
|
||||
* `/channels`
|
||||
* `/agents`
|
||||
* Після завершення → redirect.
|
||||
* UX: користувач не бачить жодної форми. Все — діалог.
|
||||
- `/teams`
|
||||
- `/teams/{id}`
|
||||
- `/channels`
|
||||
- `/agents`
|
||||
- Після завершення → redirect.
|
||||
- UX: користувач не бачить жодної форми. Все — діалог.
|
||||
|
||||
---
|
||||
|
||||
# 8. Для Cursor
|
||||
## 8. Для Cursor
|
||||
|
||||
Коли ти даси йому задачу, використовуй цей формат:
|
||||
|
||||
```
|
||||
```text
|
||||
You are a senior React/TS engineer.
|
||||
|
||||
Implement the Agent-first onboarding at `/onboarding` using the specification in:
|
||||
@@ -349,11 +349,11 @@ Output:
|
||||
- list of modified files
|
||||
- diff
|
||||
- summary
|
||||
```
|
||||
```text
|
||||
|
||||
---
|
||||
|
||||
# 9. Інтеграція з існуючим кодом
|
||||
## 9. Інтеграція з існуючим кодом
|
||||
|
||||
## 9.1. Заміна класичного онбордингу
|
||||
|
||||
@@ -375,7 +375,7 @@ Output:
|
||||
|
||||
---
|
||||
|
||||
# 10. UI/UX Вимоги
|
||||
## 10. UI/UX Вимоги
|
||||
|
||||
## 10.1. Chat Interface
|
||||
|
||||
@@ -400,7 +400,7 @@ Output:
|
||||
|
||||
---
|
||||
|
||||
# 11. Обробка помилок
|
||||
## 11. Обробка помилок
|
||||
|
||||
## 11.1. Помилки API
|
||||
|
||||
@@ -424,7 +424,7 @@ Output:
|
||||
|
||||
---
|
||||
|
||||
# 12. Тестування
|
||||
## 12. Тестування
|
||||
|
||||
## 12.1. Unit Tests
|
||||
|
||||
@@ -446,7 +446,7 @@ Output:
|
||||
|
||||
---
|
||||
|
||||
# 13. Майбутні покращення
|
||||
## 13. Майбутні покращення
|
||||
|
||||
## 13.1. LLM Integration
|
||||
|
||||
@@ -471,4 +471,3 @@ Output:
|
||||
**Готово.**
|
||||
Це **повна специфікація агентського онбордингу**, готова до використання в Cursor.
|
||||
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
---
|
||||
|
||||
# Task 1 — Agent-Cards-Grid (плитки агентів)
|
||||
## Task 1 — Agent-Cards-Grid (плитки агентів)
|
||||
|
||||
## Мета
|
||||
|
||||
@@ -18,49 +18,49 @@
|
||||
|
||||
### 1. Компонент AgentCard
|
||||
|
||||
* Розмір: 280x360px (рекомендовано)
|
||||
* Структура:
|
||||
- Розмір: 280x360px (рекомендовано)
|
||||
- Структура:
|
||||
|
||||
* Верхній блок: Аватар + відео-аватар (64x64px)
|
||||
* Імʼя та роль
|
||||
* Метрики: Вік, Досвід 1T, Репутація
|
||||
* Присутність: бейджі каналів/проєктів
|
||||
* Статус підключення
|
||||
- Верхній блок: Аватар + відео-аватар (64x64px)
|
||||
- Імʼя та роль
|
||||
- Метрики: Вік, Досвід 1T, Репутація
|
||||
- Присутність: бейджі каналів/проєктів
|
||||
- Статус підключення
|
||||
|
||||
### 2. Компонент AgentGrid
|
||||
|
||||
* Сітка карток (responsive: 1-4 колонки)
|
||||
* Фільтри: "Всі", "Підключені", "Доступні"
|
||||
* Пошук по імені/ролі
|
||||
- Сітка карток (responsive: 1-4 колонки)
|
||||
- Фільтри: "Всі", "Підключені", "Доступні"
|
||||
- Пошук по імені/ролі
|
||||
|
||||
### 3. Дані
|
||||
|
||||
* API: `GET /agents?team_id=...`
|
||||
* Метрики: `GET /agents/{id}/metrics`
|
||||
* Присутність: `GET /agents/{id}/presence`
|
||||
- API: `GET /agents?team_id=...`
|
||||
- Метрики: `GET /agents/{id}/metrics`
|
||||
- Присутність: `GET /agents/{id}/presence`
|
||||
|
||||
### 4. Hover ефект
|
||||
|
||||
* Напівпрозорий оверлей з кнопками:
|
||||
* "Почати взаємодію"
|
||||
* "Підключити до каналу"
|
||||
* "Деталі агента"
|
||||
- Напівпрозорий оверлей з кнопками:
|
||||
- "Почати взаємодію"
|
||||
- "Підключити до каналу"
|
||||
- "Деталі агента"
|
||||
|
||||
### 5. Клік
|
||||
|
||||
* Відкриває Agent Console (Task 2)
|
||||
- Відкриває Agent Console (Task 2)
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
* Картки агентів відображаються у сітці
|
||||
* Показуються метрики (вік, 1T, репутація)
|
||||
* Hover показує опції взаємодії
|
||||
* Клік відкриває Agent Console
|
||||
* Фільтри та пошук працюють
|
||||
- Картки агентів відображаються у сітці
|
||||
- Показуються метрики (вік, 1T, репутація)
|
||||
- Hover показує опції взаємодії
|
||||
- Клік відкриває Agent Console
|
||||
- Фільтри та пошук працюють
|
||||
|
||||
## Приклад промта для Cursor
|
||||
|
||||
```
|
||||
```text
|
||||
Implement Agent Cards Grid using:
|
||||
|
||||
- 23_agent_cards_and_console.md
|
||||
@@ -76,7 +76,7 @@ Deliverables:
|
||||
5) Search by name/role.
|
||||
|
||||
Output: list of files + diff + summary.
|
||||
```
|
||||
```text
|
||||
|
||||
---
|
||||
|
||||
@@ -90,55 +90,55 @@ Output: list of files + diff + summary.
|
||||
|
||||
### 1. Структура Agent Console
|
||||
|
||||
* Верхня панель: Аватар, імʼя, метрики
|
||||
* Вкладки: Чат, Файли, Памʼять, Присутність, Еволюція
|
||||
* Контент вкладок (деталі нижче)
|
||||
- Верхня панель: Аватар, імʼя, метрики
|
||||
- Вкладки: Чат, Файли, Памʼять, Присутність, Еволюція
|
||||
- Контент вкладок (деталі нижче)
|
||||
|
||||
### 2. Вкладка "Чат"
|
||||
|
||||
* Використовує `AgentChatWindow` з `10_agent_ui_system.md`
|
||||
* Додатково: кнопка "Голосовий діалог" (stub для MVP)
|
||||
* Показ поточного контексту
|
||||
- Використовує `AgentChatWindow` з `10_agent_ui_system.md`
|
||||
- Додатково: кнопка "Голосовий діалог" (stub для MVP)
|
||||
- Показ поточного контексту
|
||||
|
||||
### 3. Вкладка "Файли та Документи"
|
||||
|
||||
* Список файлів (з API або stub)
|
||||
* Кнопка "Завантажити файл"
|
||||
* Індикатор: "Документи зберігаються в просторі вашої microDAO"
|
||||
- Список файлів (з API або stub)
|
||||
- Кнопка "Завантажити файл"
|
||||
- Індикатор: "Документи зберігаються в просторі вашої microDAO"
|
||||
|
||||
### 4. Вкладка "Памʼять і Знання"
|
||||
|
||||
* Використовує компоненти з `13_agent_memory_system.md`
|
||||
* Короткострокова та довгострокова памʼять
|
||||
* Кнопки управління памʼяттю
|
||||
- Використовує компоненти з `13_agent_memory_system.md`
|
||||
- Короткострокова та довгострокова памʼять
|
||||
- Кнопки управління памʼяттю
|
||||
|
||||
### 5. Вкладка "Присутність / Права доступу"
|
||||
|
||||
* Таблиця просторів (канали, проєкти)
|
||||
* Перемикачі підключення
|
||||
* Рівні доступу
|
||||
* Кнопка "Додати до нового каналу/проєкту"
|
||||
- Таблиця просторів (канали, проєкти)
|
||||
- Перемикачі підключення
|
||||
- Рівні доступу
|
||||
- Кнопка "Додати до нового каналу/проєкту"
|
||||
|
||||
### 6. Вкладка "Еволюція та дух спільноти"
|
||||
|
||||
* Лог внеску агента
|
||||
* Статистика запитів
|
||||
* Репутація від спільноти
|
||||
* Без фінансових термінів
|
||||
- Лог внеску агента
|
||||
- Статистика запитів
|
||||
- Репутація від спільноти
|
||||
- Без фінансових термінів
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
* Agent Console відкривається при кліку на картку
|
||||
* Всі 5 вкладок працюють
|
||||
* Чат інтегрований з Agent Runtime Core
|
||||
* Файли показуються (stub дані OK)
|
||||
* Памʼять інтегрована з Memory System
|
||||
* Присутність показує реальні дані
|
||||
* Еволюція показує лог (stub OK)
|
||||
- Agent Console відкривається при кліку на картку
|
||||
- Всі 5 вкладок працюють
|
||||
- Чат інтегрований з Agent Runtime Core
|
||||
- Файли показуються (stub дані OK)
|
||||
- Памʼять інтегрована з Memory System
|
||||
- Присутність показує реальні дані
|
||||
- Еволюція показує лог (stub OK)
|
||||
|
||||
## Приклад промта для Cursor
|
||||
|
||||
```
|
||||
```text
|
||||
Implement Agent Console UI using:
|
||||
|
||||
- 23_agent_cards_and_console.md
|
||||
@@ -157,7 +157,7 @@ Deliverables:
|
||||
6) Evolution tab: log display (stub data OK).
|
||||
|
||||
Output: list of files + diff + summary.
|
||||
```
|
||||
```text
|
||||
|
||||
---
|
||||
|
||||
@@ -171,23 +171,23 @@ Output: list of files + diff + summary.
|
||||
|
||||
### 1. Вік агента
|
||||
|
||||
* Розрахунок: `created_at` до поточної дати
|
||||
* Формат: "3 тижні", "6 місяців", "1 рік 2 місяці"
|
||||
* API: `GET /agents/{id}/metrics` → `{ age: { weeks, months, years } }`
|
||||
- Розрахунок: `created_at` до поточної дати
|
||||
- Формат: "3 тижні", "6 місяців", "1 рік 2 місяці"
|
||||
- API: `GET /agents/{id}/metrics` → `{ age: { weeks, months, years } }`
|
||||
|
||||
### 2. Досвід 1T
|
||||
|
||||
* Лічильник: велике число з розділювачами (12 340 1T)
|
||||
* Tooltip: "1T — це внутрішня одиниця обчислень і досвіду агента"
|
||||
* API: `GET /agents/{id}/metrics` → `{ experience1T: number }`
|
||||
* Візуалізація: великий текст з іконкою
|
||||
- Лічильник: велике число з розділювачами (12 340 1T)
|
||||
- Tooltip: "1T — це внутрішня одиниця обчислень і досвіду агента"
|
||||
- API: `GET /agents/{id}/metrics` → `{ experience1T: number }`
|
||||
- Візуалізація: великий текст з іконкою
|
||||
|
||||
### 3. Репутація спільноти
|
||||
|
||||
* Шкала: 0-100 або 0-5 зірок
|
||||
* Розрахунок: на основі фідбеку від учасників
|
||||
* API: `GET /agents/{id}/metrics` → `{ reputation: { score, type } }`
|
||||
* Візуалізація: прогрес-бар або зірки
|
||||
- Шкала: 0-100 або 0-5 зірок
|
||||
- Розрахунок: на основі фідбеку від учасників
|
||||
- API: `GET /agents/{id}/metrics` → `{ reputation: { score, type } }`
|
||||
- Візуалізація: прогрес-бар або зірки
|
||||
|
||||
### 4. Компонент AgentMetrics
|
||||
|
||||
@@ -200,18 +200,18 @@ interface AgentMetricsProps {
|
||||
export function AgentMetrics({ agentId, compact }: AgentMetricsProps) {
|
||||
// Відображення метрик
|
||||
}
|
||||
```
|
||||
```text
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
* Вік агента розраховується правильно
|
||||
* 1T показується з tooltip
|
||||
* Репутація відображається візуально
|
||||
* Метрики оновлюються при зміні даних
|
||||
- Вік агента розраховується правильно
|
||||
- 1T показується з tooltip
|
||||
- Репутація відображається візуально
|
||||
- Метрики оновлюються при зміні даних
|
||||
|
||||
## Приклад промта для Cursor
|
||||
|
||||
```
|
||||
```text
|
||||
Implement Agent Experience Metrics using:
|
||||
|
||||
- 23_agent_cards_and_console.md
|
||||
@@ -227,7 +227,7 @@ Deliverables:
|
||||
5) API integration: GET /agents/{id}/metrics.
|
||||
|
||||
Output: list of files + diff + summary.
|
||||
```
|
||||
```text
|
||||
|
||||
---
|
||||
|
||||
@@ -241,40 +241,40 @@ Output: list of files + diff + summary.
|
||||
|
||||
### 1. На картці агента
|
||||
|
||||
* Бейджі: "Публічні простори: 2", "Конфіденційні: 1"
|
||||
* При кліку — модалка зі списком просторів
|
||||
* Перемикачі для кожного простору
|
||||
- Бейджі: "Публічні простори: 2", "Конфіденційні: 1"
|
||||
- При кліку — модалка зі списком просторів
|
||||
- Перемикачі для кожного простору
|
||||
|
||||
### 2. У Agent Console (вкладка "Присутність")
|
||||
|
||||
* Таблиця просторів:
|
||||
* Простір / Тип / Доступ / Статус / Дії
|
||||
* Перемикач "Підключено/Відʼєднано"
|
||||
* Кнопка "Додати до нового простору"
|
||||
- Таблиця просторів:
|
||||
- Простір / Тип / Доступ / Статус / Дії
|
||||
- Перемикач "Підключено/Відʼєднано"
|
||||
- Кнопка "Додати до нового простору"
|
||||
|
||||
### 3. API
|
||||
|
||||
* `GET /agents/{id}/presence` → список просторів
|
||||
* `POST /agents/{id}/presence/connect` → підключити
|
||||
* `POST /agents/{id}/presence/disconnect` → відключити
|
||||
- `GET /agents/{id}/presence` → список просторів
|
||||
- `POST /agents/{id}/presence/connect` → підключити
|
||||
- `POST /agents/{id}/presence/disconnect` → відключити
|
||||
|
||||
### 4. UX
|
||||
|
||||
* При відключенні: підтвердження
|
||||
* При підключенні: вибір прав доступу
|
||||
* Оновлення UI після зміни
|
||||
- При відключенні: підтвердження
|
||||
- При підключенні: вибір прав доступу
|
||||
- Оновлення UI після зміни
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
* Бейджі на картці показують кількість просторів
|
||||
* Модалка зі списком просторів працює
|
||||
* Перемикачі в консолі працюють
|
||||
* API виклики зберігають зміни
|
||||
* UI оновлюється після змін
|
||||
- Бейджі на картці показують кількість просторів
|
||||
- Модалка зі списком просторів працює
|
||||
- Перемикачі в консолі працюють
|
||||
- API виклики зберігають зміни
|
||||
- UI оновлюється після змін
|
||||
|
||||
## Приклад промта для Cursor
|
||||
|
||||
```
|
||||
```text
|
||||
Implement Agent Connections Management using:
|
||||
|
||||
- 23_agent_cards_and_console.md
|
||||
@@ -291,7 +291,7 @@ Deliverables:
|
||||
5) UI updates after connection changes.
|
||||
|
||||
Output: list of files + diff + summary.
|
||||
```
|
||||
```text
|
||||
|
||||
---
|
||||
|
||||
@@ -337,13 +337,12 @@ Output: list of files + diff + summary.
|
||||
|
||||
## Зберігання даних
|
||||
|
||||
* Всі файли/документи зберігаються в сховищі microDAO
|
||||
* Показувати індикатор: "Документи зберігаються в просторі вашої microDAO"
|
||||
* DAGI використовується як "мозок", але не як сховище
|
||||
- Всі файли/документи зберігаються в сховищі microDAO
|
||||
- Показувати індикатор: "Документи зберігаються в просторі вашої microDAO"
|
||||
- DAGI використовується як "мозок", але не як сховище
|
||||
|
||||
---
|
||||
|
||||
**Готово.**
|
||||
Це **структурований список задач для Agent Cards та Console**, готовий до використання в Cursor.
|
||||
|
||||
|
||||
|
||||
@@ -125,3 +125,5 @@ docs/cursor/05_coding_standards.md
|
||||
docs/cursor/19_notifications_attention_agent.md
|
||||
docs/cursor/20_integrations_bridges_agent.md
|
||||
docs/cursor/22_agent_only_interface_tasks.md
|
||||
docs/cursor/08_agent_first_onboarding.md
|
||||
docs/cursor/24_agent_cards_tasks.md
|
||||
|
||||
Reference in New Issue
Block a user