fix: CI branch filter + Cursor auto-context rules

CI:
- python-services-ci now only runs on main branch (not feature branches)
- Install deps with lock fallback (if lock file is stale, install without it)

Cursor rules:
- New project-context.mdc (alwaysApply: true) — gives AI full project
  context immediately in every new chat
- Updated noda1-operations.mdc: alwaysApply: true, fixed container names
  (dagi-router-node1, not dagi-staging-router)

This ensures that when opening a new Cursor chat in this workspace,
the AI already knows: project structure, NODE1 server details, all 13
agents, SSH credentials location, and key documentation paths.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Apple
2026-02-09 09:09:20 -08:00
parent a1599df053
commit aee2a55a26
4 changed files with 80 additions and 5 deletions

View File

@@ -1,7 +1,7 @@
---
description: NODA1 (node1-daarion) — контекст, порти, перевірка агентів, типові виправлення
globs: "**/docs/NODA1*.md,**/scripts/node1/**/*.sh,gateway-bot/**/*.py,infra/**/*.yml,NODA1*.md,PROJECT-MASTER-INDEX.md,config/README.md"
alwaysApply: false
alwaysApply: true
---
# NODA1 — Операції та контекст
@@ -29,7 +29,7 @@ alwaysApply: false
| RAG | 9500 | `/health` |
| Swapper | 8890 | `/health` |
Контейнери: `dagi-gateway-node1`, `dagi-staging-router` (або `dagi-*-router`), `dagi-memory-service-node1`, `dagi-qdrant-node1`.
Контейнери: `dagi-gateway-node1`, `dagi-router-node1`, `dagi-memory-service-node1`, `dagi-qdrant-node1`, `swapper-service-node1`, `ollama`.
## Перевірка агентів
@@ -41,7 +41,7 @@ alwaysApply: false
## Типові виправлення
1. **Router unhealthy** — перезапуск: `docker restart dagi-staging-router` (або актуальна назва контейнера router).
1. **Router unhealthy** — перезапуск: `docker restart dagi-router-node1`.
2. **Gateway не відповідає** — `docker logs dagi-gateway-node1 --tail 100`; при потребі `docker restart dagi-gateway-node1`.
3. **Агент без prompt/token** — перевірити `gateway-bot/http_api.py` (AGENT_REGISTRY) і наявність `*_prompt.txt` та env з токенами на сервері.
4. **Зміни в коді** — задеплоїти на NODA1 (git pull, rebuild, restart відповідних контейнерів згідно з проектом).

View File

@@ -0,0 +1,67 @@
---
description: MicroDAO DAARION — головний контекст проєкту (завжди активний)
globs:
alwaysApply: true
---
# MicroDAO DAARION — Контекст проєкту
## Про що цей проєкт
Платформа DAARION.city — мережа AI-агентів для децентралізованих спільнот (DAO).
13 агентів працюють у Telegram через єдиний стек: Gateway → Router → LLM (DeepSeek API + Ollama/Swapper).
## Поточний стан
- **Production сервер**: НОДА1 (Hetzner GEX44, 144.76.224.179)
- **Робоча гілка**: `node1-production-snapshot-2026-02-09` — актуальний production код
- **Стара гілка `main`**: застаріла, НЕ відповідає production
- **GitHub**: github.com/IvanTytar/microdao-daarion
## Агенти (13 шт.)
DAARWIZZ, Helion, NUTRA, DRUID, GREENFOOD, AgroMatrix, Alateya, CLAN, EONARCH, Senpai, Sofiia, Soul/Athena, Yaromir
## Критичні файли
| Файл | Що це |
|------|-------|
| `PROJECT-MASTER-INDEX.md` | Єдина точка входу до всієї документації |
| `config/agent_registry.yml` | Single Source of Truth для конфігурації агентів |
| `gateway-bot/http_api.py` | Головний код Gateway (164KB, обробка Telegram) |
| `gateway-bot/behavior_policy.py` | SOWA v2.2 — політика відповідей агентів |
| `gateway-bot/*_prompt.txt` | Системні промпти агентів |
| `services/router/main.py` | Router з vision + DeepSeek routing |
| `docker-compose.node1.yml` | Docker Compose для НОДА1 |
## Як працювати з НОДА1
- **SSH**: `sshpass -p '<пароль з .cursor/noda1-credentials.local.mdc>' ssh root@144.76.224.179`
- **Credentials**: `.cursor/noda1-credentials.local.mdc` (НЕ комітити!)
- **Проект на сервері**: `/opt/microdao-daarion/`
- **Детальна інструкція**: `.cursor/rules/noda1-operations.mdc`
## Контейнери на НОДА1
| Контейнер | Сервіс | Порт |
|-----------|--------|------|
| `dagi-gateway-node1` | Telegram Gateway | 9300 |
| `dagi-router-node1` | LLM Router | 9102 (ext) → 8000 (int) |
| `swapper-service-node1` | Model Swapper | 8890 |
| `dagi-memory-service-node1` | Memory Service | 8000 |
| `dagi-qdrant-node1` | Vector DB | 6333 |
| `ollama` | LLM Runtime | 11434 |
## LLM моделі
- **DeepSeek API** — основна модель для всіх агентів (deepseek-chat)
- **qwen3-vl-8b** — vision модель (через Swapper /vision)
- **qwen3:8b** — локальна текстова модель (Ollama через Swapper)
## Правила для AI
1. **Мова**: відповідай українською
2. **Обережність**: перед змінами на НОДА1 — завжди робити бекап
3. **Не ламати**: ніколи не видаляти контейнери без розуміння наслідків
4. **Документація**: `PROJECT-MASTER-INDEX.md` — головний документ, читай його при потребі
5. **Git**: працюємо на гілці `node1-production-snapshot-*`, не на main

View File

@@ -2,11 +2,13 @@ name: python-services-ci
on:
push:
branches: [main]
paths:
- "services/**"
- "gateway-bot/**"
- ".github/workflows/python-services-ci.yml"
pull_request:
branches: [main]
paths:
- "services/**"
- "gateway-bot/**"
@@ -33,11 +35,16 @@ jobs:
python-version: "3.11"
cache: "pip"
- name: Install deps (locked)
- name: Install deps
working-directory: ${{ matrix.service }}
run: |
python -m pip install --upgrade pip
python -m pip install -r requirements.txt -c requirements.lock
if [ -f requirements.lock ]; then
python -m pip install -r requirements.txt -c requirements.lock || \
python -m pip install -r requirements.txt
else
python -m pip install -r requirements.txt
fi
- name: Pip check
working-directory: ${{ matrix.service }}

1
.gitignore vendored
View File

@@ -67,3 +67,4 @@ Thumbs.db
.cursor/noda1-credentials.local.mdc
._*
**/._*
logs/