# 📂 Детальный каталог и карта связей

Ниже приведена сводная таблица, описывающая роль каждого репозитория и его взаимодействие с внешним миром (откуда приходят данные и куда отправляются).

| Репозиторий | Роль и Внутренняя Логика | Связи (Вход/Выход/Протоколы) |
| :--- | :--- | :--- |
| **🟢 Core Product** | | |
| `greentic` | **CLI & Local Execution**: Основной интерфейс пользователя. Содержит встроенный `ToolExecutor` (см. `src/executor.rs`), который может локально загружать и исполнять Wasm-компоненты через `wasmtime`, имитируя работу облака. Управляет секретами (`SecretsManager`), логами и каналами связи на локальной машине. | **Вход:** Команды пользователя (Terminal).<br>**Выход:**<br>• `greentic-repo` (HTTP/HTTPS) — скачивание пакетов.<br>• Docker Socket — запуск контейнеров.<br>• Локальная ФС — чтение конфигов. |
| `greentic-runner` | **Production Runtime**: Серверное ядро системы. <br>• **PackRuntime**: Загружает `.gtpack` архивы, распаковывает их и держит в памяти. <br>• **Wasm Engine**: Использует `wasmtime` для изоляции. Запускает каждый вызов компонента в отдельном потоке (`run_on_wasi_thread`) для безопасности. <br>• **Binding**: Связывает абстрактные ресурсы (секреты, KV-store) с реальными провайдерами через `gtbind` файлы. <br>• **HTTP/Axum**: Поднимает веб-сервер для вебхуков и API. | **Вход:**<br>• Webhooks (HTTP/POST) от мессенджеров (Slack/TG).<br>• NATS (Sub) — команды и задачи.<br>**Выход:**<br>• `greentic-repo` (HTTP) — обновления.<br>• Внешние API (HTTP) — вызовы из компонентов.<br>• Redis/DB — сохранение State.<br>• Vault/KMS — получение секретов. |
| `greentic-dev` | **Dev Orchestrator**: Обертка (Wrapper) над остальными утилитами. Не содержит собственной сложной логики исполнения, но управляет процессами `greentic-flow`, `greentic-component` и `docker` для создания удобного Developer Experience (hot-reload, scaffolding). | **Вход:** CLI args.<br>**Выход:**<br>• Вызов бинарников `greentic-*`.<br>• `greentic-repo` (HTTP) — публикация пакетов (Push). |
| **🛠️ Tooling** | | |
| `greentic-component` | **Wasm Builder & Signer**: <br>• **Lifecycle**: Управляет циклом сборки Rust -> Wasm (`wasm32-wasip2`). <br>• **Security**: Отвечает за подпись артефактов и генерацию манифестов (`ComponentManifest`). Проверяет хэши и политики безопасности перед сборкой. <br>• **Preparing**: Оптимизирует бинарники перед упаковкой (`prepare.rs`). | **Вход:** Исходный код (Rust), wit-интерфейсы.<br>**Выход:**<br>• Файловая система (Wasm файлы).<br>• Реестр (проверка версий зависимостей). |
| `greentic-flow` | **YAML Compiler & Validator**: <br>• **Compile**: Преобразует пользовательский YAML (`FlowDoc`) в строгий граф исполнения (`Flow` struct). <br>• **Routing**: Рассчитывает логику переходов (`Routing::Branch`, `Routing::Next`) и проверяет наличие всех узлов. <br>• **Linting**: Проверяет типы данных и связи. Используется как библиотека внутри `runner` для парсинга флоу. | **Вход:** YAML файлы флоу.<br>**Выход:** Скомпилированная структура в памяти или JSON. Не имеет сетевых зависимостей (чистая логика). |
| `greentic-pack` | **Distribution Builder**: Собирает компоненты (Wasm) и флоу (YAML) в единый архив `.gtpack`. Генерирует `manifest.cbor` и индексные файлы для дистрибуции. Отвечает за разрешение зависимостей (resolution). | **Вход:** Wasm компоненты, YAML флоу.<br>**Выход:** Архив `.gtpack`. |
| `greentic-mcp-generator` | **Code Gen**: Утилита для кодогенерации бойлерплейта, необходимого для создания MCP-совместимых инструментов. | **Вход:** Схемы/Интерфейсы.<br>**Выход:** Исходный код (Rust). |
| **🧱 Components** | **Building Blocks (Wasm)**: Реализации конкретной бизнес-логики. | *Компоненты работают внутри Wasm-песочницы Runner'а:* |
| `component-adaptive-card` | Рендеринг JSON-схему Adaptive Cards в HTML/JSON для разных мессенджеров. | **Вход:** JSON данные.<br>**Выход:** JSON схемы карточек (Slack Block Kit / MS Teams adaptive cards). |
| `component-flow2flow` | Позволяет вызывать "под-флоу" (Sub-flows), передавая управление и контекст между разными процессами. | **Взаимодействие:** Внутренний вызов Runner'а (передача управления другому процессу в памяти). |
| `component-llm-openai` | Клиент OpenAI API. Инкапсулирует работу с токенами, ретраи и форматирование промптов. | **Выход:** OpenAI API (HTTPS, api.openai.com). Ипользует API Key из секретов раннера. |
| `component-oauth-card` | Генерирует UI-карточки с кнопками "Войти через...", обрабатывает callback-ссылки. | **Вход:** Данные авторизации.<br>**Выход:** UI элемент с ссылкой. |
| `component-script-rhai` | Встраивает легкий скриптовый язык **Rhai**. Позволяет писать простую логику (if/else, mapping) прямо внутри YAML, без компиляции Wasm. | **Вход/Выход:** Только данные контекста флоу (переменные). Нет сетевого доступа. |
| `component-templates` | Движок шаблонизации (Handlebars/Jinja). Применяет данные из контекста флоу к текстовым шаблонам (генерация писем, сообщений). | **Вход:** Шаблон + Данные.<br>**Выход:** Текстовая строка. |
| **🔌 Features** | | |
| `greentic-mcp` | **Model Context Protocol**: Мост (Bridge) между Greentic и миром MCP. Позволяет подключать любые MCP-серверы как нативные инструменты платформы. | **Вход:** JSON-RPC сообщения.<br>**Выход:** Транспорт stdio или SSE (Server-Sent Events) до MCP-сервера. |
| `greentic-oauth` | **Auth Broker**: Централизованный сервис OAuth 2.0. Хранит Refresh Tokens, выдает Access Tokens по запросу рантайма. Реализует протоколы обмена Authorization Code. | **Вход:** Браузер пользователя (Redirects).<br>**Выход:**<br>• OAuth Provider APIs (Google/Slack/GitHub) — обмен кодов.<br>• KMS (AWS/GCP) — шифрование токенов.<br>• БД (Postgres) — хранение Refresh токенов. |
| `greentic-messaging` | Абстракция над мессенджерами. Нормализует сообщения в единый формат (текст, картинка, файл) перед передачей в флоу. | **Транспорт:** NATS.<br>**Связь:** Соединяет Ingress-адаптеры (получающие вебхуки) и Engine (исполняющий логику). |
| `greentic-messaging-providers`| Конкретные реализации API: Telegram Bot API, Slack Web API, WhatsApp Business API. | **Вход:** Webhooks от платформы.<br>**Выход:** HTTP запросы к API платформы (sendMessage). |
| `greentic-events` | Система обработки событий (не чатовых). Webhooks, таймеры, системные сигналы. | **Вход:** Webhooks, Cron schedule.<br>**Выход:** Инициализация флоу. |
| **🏗️ Infra & Ops** | | |
| `greentic-repo` | **Secure Registry**: <br>• **Supply Chain**: Сканирует загружаемые пакеты на уязвимости. Подписывает их криптографическими ключами платформы. <br>• **Distributor API**: Раздает обновления рантаймам. <br>• **Attestation**: Проверяет происхождение артефактов (Provenance). | **Вход:**<br>• HTTP PUT (публикация).<br>• HTTP GET (скачивание раннерами).<br>**Выход:**<br>• S3 / GCS / Local FS — хранение блобов.<br>• NATS (Pub) — отправка задач воркерам (сканирование). |
| `greentic-deployer` | Сервис, который берет `.gtpack` и разворачивает его в облаке (Kubernetes/Serverless). | **Выход:**<br>• Kubernetes API.<br>• Cloud Provider APIs (AWS/Azure/GCP) — создание ресурсов. |
| `greentic-provision` | Infrastructure as Code (IaC). Создает базы данных, очереди и другие ресурсы, требуемые пакетом. | **Выход:** Terraform / Pulumi / Cloud APIs. |
| `greentic-config` | Управление конфигурацией. Загружает настройки из файлов, переменных окружения и удаленных источников. Разрешает конфликты конфигов. | **Вход:** Файлы, ENV, удаленные конфиг-серверы (Consul/Etcd). |
| **📚 Shared Libs** | | |
| `greentic-types` | Общие Rust структуры данных (DTO), используемые во всех проектах. Гарантирует совместимость типов между Runner, CLI и Repo. | **Роль:** Общая библиотека типов (Crate). |
| `greentic-state` | Реализация State Store (Redis/Postgres/Memory). Позволяет флоу сохранять данные между шагами (`key-value`). | **Связь:** Redis / Postgres / In-Memory HashMap. |
| `greentic-secrets` | Клиент для работы с секретами (Vault/AWS/Env). Расшифровывает и кэширует секреты в памяти процесса. | **Связь:** HashiCorp Vault / AWS Secrets Manager. |
| `greentic-session` | Управление пользовательскими сессиями. Хранит контекст разговора (историю, текущий шаг флоу). | **Связь:** State Store (Redis). |
| `greentic-telemetry` | Интеграция с OpenTelemetry. Сбор метрик, трейсов и логов для observability. | **Выход:** OTLP Collector (gRPC/HTTP). |
