Add read-only pi settings tab (models, MCP, subagents, skills) #24

Open
developer wants to merge 2 commits from feature/14_pi_settings_tab into main
Collaborator

Closes #14

Что сделано

Вкладка «Настройки pi» — read-only просмотр конфигурации pi-агента на машине (вариант 1 «карточки-секции», согласованный в issue).

Бекенд

  • Новый эндпоинт GET /api/settings/pi (та же Bearer-авторизация, что у остальных /api/*).
  • Модуль src/pisettings.js читает ~/.pi/agent (переопределяется переменной PI_HOME):
    • Модели: основная (defaultModel/defaultProvider из settings.json), fallback — только имя модели из настроек расширения pi-omniroute-sync; доп. провайдеры из каталога models.json;
    • MCP-серверы: из mcp.json — имя, транспорт (http/stdio), адрес/команда; число инструментов — из кэша mcp-cache.json (статус «нет в кэше», если pi ещё не прогревал кэш);
    • Субагенты: agents/*.md — имя и описание из frontmatter;
    • Скиллы: из установленных пакетов pi (git-пакеты в ~/.pi/agent/git/**, npm-пакеты), имя + описание, группировка по источнику.
  • Секреты не возвращаются никогда (в файлах лежат apiKey и пр. — в API отдаются только имена моделей/серверов/скиллов; есть тест, что ключ не появляется в ответе).
  • Битые/отсутствующие файлы не роняют ответ: available:false или пустые секции + warnings.

Фронт

  • Вкладка «Настройки pi» после «Списка агентов»; карточки «Модели», «MCP-серверы» (таблица), «Субагенты», «Скиллы» (две колонки на десктопе, одна на узких экранах).
  • Работает для любого активного агента (данные берутся с его /api/settings/pi).

Документация

  • README: PI_HOME в таблице конфигурации, описание эндпоинта и вкладки.

Как проверить

cd watcherenish && npm test        # 41/41 зелёные (7 новых: collector + API)
npm start                          # http://127.0.0.1:8787 → вкладка «Настройки pi»
# или с нестандартным каталогом pi:
PI_HOME=/path/to/.pi/agent npm start

В UI: вкладка «Настройки pi» → основная модель, fallback, таблица MCP (имя/транспорт/адрес/число инструментов/статус кэша), субагенты, скиллы по источникам. При отсутствии каталога pi — плашка и пустые секции, ошибок нет.

Тесты

npm test — 41/41 (было 34, добавлено 7: collector — модели/fallback/секреты/mcp/субагенты/скиллы, деградация на битых файлах, отсутствие каталога, HTTP 200/401/PI_HOME). Дополнительно прогнан смоук в браузере на реальных данных: подсветка вкладки, секции, отсутствие секретов в ответе API.

Closes #14 ## Что сделано Вкладка «Настройки pi» — read-only просмотр конфигурации pi-агента на машине (вариант 1 «карточки-секции», согласованный в issue). ### Бекенд - Новый эндпоинт `GET /api/settings/pi` (та же Bearer-авторизация, что у остальных `/api/*`). - Модуль `src/pisettings.js` читает `~/.pi/agent` (переопределяется переменной `PI_HOME`): - **Модели**: основная (`defaultModel`/`defaultProvider` из `settings.json`), fallback — только имя модели из настроек расширения `pi-omniroute-sync`; доп. провайдеры из каталога `models.json`; - **MCP-серверы**: из `mcp.json` — имя, транспорт (http/stdio), адрес/команда; число инструментов — из кэша `mcp-cache.json` (статус «нет в кэше», если pi ещё не прогревал кэш); - **Субагенты**: `agents/*.md` — имя и описание из frontmatter; - **Скиллы**: из установленных пакетов pi (git-пакеты в `~/.pi/agent/git/**`, npm-пакеты), имя + описание, группировка по источнику. - **Секреты не возвращаются никогда** (в файлах лежат apiKey и пр. — в API отдаются только имена моделей/серверов/скиллов; есть тест, что ключ не появляется в ответе). - Битые/отсутствующие файлы не роняют ответ: `available:false` или пустые секции + `warnings`. ### Фронт - Вкладка «Настройки pi» после «Списка агентов»; карточки «Модели», «MCP-серверы» (таблица), «Субагенты», «Скиллы» (две колонки на десктопе, одна на узких экранах). - Работает для любого активного агента (данные берутся с его `/api/settings/pi`). ### Документация - README: `PI_HOME` в таблице конфигурации, описание эндпоинта и вкладки. ## Как проверить ```bash cd watcherenish && npm test # 41/41 зелёные (7 новых: collector + API) npm start # http://127.0.0.1:8787 → вкладка «Настройки pi» # или с нестандартным каталогом pi: PI_HOME=/path/to/.pi/agent npm start ``` В UI: вкладка «Настройки pi» → основная модель, fallback, таблица MCP (имя/транспорт/адрес/число инструментов/статус кэша), субагенты, скиллы по источникам. При отсутствии каталога pi — плашка и пустые секции, ошибок нет. ## Тесты `npm test` — 41/41 (было 34, добавлено 7: collector — модели/fallback/секреты/mcp/субагенты/скиллы, деградация на битых файлах, отсутствие каталога, HTTP 200/401/PI_HOME). Дополнительно прогнан смоук в браузере на реальных данных: подсветка вкладки, секции, отсутствие секретов в ответе API.
Reads ~/.pi/agent (override with PI_HOME): default model/provider from
settings.json, fallback model from the pi-omniroute-sync extension config
(model name only), custom providers from models.json, MCP servers from
mcp.json with tool counts from mcp-cache.json, subagents from agents/*.md,
skills from installed pi packages (git + npm). Never returns secrets;
malformed or missing files degrade to empty values with warnings.
New nav tab shows GET /api/settings/pi data as read-only section cards
(agreed option 1 in #14): models (default + fallback), MCP server table
(transport, address/command, tool count, cache status), subagent prompts
and installed skills grouped by source. Document PI_HOME and the new
endpoint in README.

Прикрепи скриншоты, как это выглядит

Прикрепи скриншоты, как это выглядит
Author
Collaborator

Скриншоты прикрепил к PR:

  • settings-pi-tab-top.jpg — вид сверху: карточки «Модели» (основная, fallback, провайдеры) и таблица «MCP-серверы»;
  • settings-pi-tab-fullpage.jpg — вся вкладка целиком: модели, MCP, субагенты, скиллы (сгруппированы по источникам).

Данные живые — снято с этой машины (/root/.pi/agent). Если что-то в виде захочется поменять (компоновка карточек, порядок секций) — скажи, поправлю в той же ветке.

Скриншоты прикрепил к PR: - [settings-pi-tab-top.jpg](https://forgejo.lamanshe.ru/attachments/4ca68879-9d35-4f95-b377-cc9296a9b845) — вид сверху: карточки «Модели» (основная, fallback, провайдеры) и таблица «MCP-серверы»; - [settings-pi-tab-fullpage.jpg](https://forgejo.lamanshe.ru/attachments/cfa3a445-1166-4322-b9ac-e370492d6e57) — вся вкладка целиком: модели, MCP, субагенты, скиллы (сгруппированы по источникам). Данные живые — снято с этой машины (`/root/.pi/agent`). Если что-то в виде захочется поменять (компоновка карточек, порядок секций) — скажи, поправлю в той же ветке.
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feature/14_pi_settings_tab:feature/14_pi_settings_tab
git switch feature/14_pi_settings_tab

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff feature/14_pi_settings_tab
git switch feature/14_pi_settings_tab
git rebase main
git switch main
git merge --ff-only feature/14_pi_settings_tab
git switch feature/14_pi_settings_tab
git rebase main
git switch main
git merge --no-ff feature/14_pi_settings_tab
git switch main
git merge --squash feature/14_pi_settings_tab
git switch main
git merge --ff-only feature/14_pi_settings_tab
git switch main
git merge feature/14_pi_settings_tab
git push origin main
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
forgejo-admin/watcherenish!24
No description provided.