Files
hado/README.md

3.4 KiB
Raw Permalink Blame History

Hado — 波 · ядро умных уведомлений

Сервисы пушат события с датой, ядро само считает каскад напоминаний, окна и доставляет туда, где ты сейчас доступен (веб, Telegram, webhook/Home Assistant). Спека: docs/superpowers/specs/2026-09-03-hado-core-design.md.

Dev

cp core/.env.example core/.env
docker compose up -d --build
docker compose exec app php artisan key:generate
docker compose exec app php artisan migrate
docker compose exec app php artisan hado:source:create docs   # токен печатается один раз
  • http://localhost:8080/ — инбокс. В проде пользователь приходит в заголовке X-Remote-User от хаба; локально поставь HADO_DEV_USER=nikita в core/.env (работает только при APP_ENV=local) и открывай в браузере без заголовков.
  • PUT /api/events с Authorization: Bearer <токен> — см. спеку §5

Тесты локально: cd core && php artisan test (SQLite in-memory, нужны расширения pdo_sqlite, intl в php.ini). Стиль: vendor/bin/pint.

Telegram

  1. Создай бота у @BotFather, положи токен и username в core/.env.
  2. Придумай TELEGRAM_WEBHOOK_SECRET, зарегистрируй webhook: curl "https://api.telegram.org/bot<TOKEN>/setWebhook?url=https://hado.<домен>/hooks/telegram&secret_token=<SECRET>"
  3. В инбоксе «Подключить Telegram» → отправь боту /start <код>.

MCP (агент)

Нейросеть работает с инбоксом через MCP-сервер внутри ядра (laravel/mcp, POST /mcp). Спека: docs/superpowers/specs/2026-09-05-hado-mcp-design.md.

docker compose exec app php artisan hado:agent:token nikita   # токен печатается один раз; повторный вызов перевыпускает, --revoke отзывает
claude mcp add --transport http hado https://hado.<домен>/mcp --header "Authorization: Bearer hado_agent_…"

Агент видит все события пользователя и закрывает любые (mark_done, mark_ack), а создаёт, правит и снимает только свои — от источника manual, как кнопка «Добавить» в инбоксе (editable: true в ответах).

Home Assistant

В инбоксе добавь webhook-канал: deliver_url — HA webhook-триггер (https://ha/api/webhook/<id>), presence_url — любой URL, отвечающий {"present": true|false} (например, template-сенсор через REST API или Node-RED). Автоматизация в HA получает JSON {event, actions} и может дёрнуть actions.done POST-ом без авторизации.

Прод

core/Dockerfile (serversideup/php), compose с scheduler и worker, Caddy — deploy/Caddyfile.snippet в хаб sekai.

Compose в репозитории — dev-стек (Dockerfile.dev, artisan serve); прод-сборка через core/Dockerfile (serversideup/php) описана, но не проверена — отдельный шаг перед деплоем.