BLUEPRINT
Глава 3: Архитектура
3.1 Общая Архитектура
Протокол использует децентрализованную архитектуру Provider-Consumer, аналогичную модели обнаружения гиперссылок Web и механизму обнаружения узлов P2P-сетей.
┌─────────────────────────────────────────────────────────┐
│ Домен Провайдера (Provider Domain) │
│ │
│ ┌──────────────────────────┐ │
│ │ /.well-known/skill-sharing│ │
│ └────────┬─────────────────┘ │
│ │ │
│ ┌─────┴─────┐ │
│ ▼ ▼ │
│ ┌──────┐ ┌──────┐ │
│ │Деск.A│ │Деск.B│ │
│ └──┬───┘ └──┬───┘ │
│ ▼ ▼ │
│ ┌──────┐ ┌──────┐ │
│ │Эндп.A│ │Эндп.B│ │
│ └──────┘ └──────┘ │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ Потребитель Навыков (iFay) │
│ │
│ ┌────────────┐ ┌──────────────┐ ┌────────────┐ │
│ │Discovery │→ │Schema │→ │Invocation │ │
│ │Client │ │Validator │ │Client │ │
│ └────────────┘ └──────────────┘ └────────────┘ │
└─────────────────────────────────────────────────────────┘
3.2 Поток Взаимодействия Протокола
Фаза 1: Обнаружение Навыков
Потребитель (iFay) Провайдер
│ │
│── GET /.well-known/skill-sharing ─→│
│←── Индекс Навыков (Skill Index) ──│
│── Schema Validator парсинг ──→ │
Фаза 2: Вызов Навыков
Потребитель (iFay) Провайдер
│ │
│── POST {invocation_endpoint} ────→│
│←── 202 Accepted + ID выполнения ─│
│── GET {status_endpoint}/{id} ────→│
│←── Статус выполнения ────────────│
│── GET {result_endpoint}/{id} ────→│
│←── Результат выполнения ─────────│
3.3 Три Пути Обнаружения
| Путь | Метод | Описание | Применение |
|---|---|---|---|
| Well-Known URI | GET /.well-known/skill-sharing | Основной метод обнаружения | Исследование всех навыков провайдера |
| Прямой URL | GET {skill_descriptor_url} | Прямое получение при известном URL | Конкретный адрес навыка известен |
| Запрос к реестру | GET {registry_url}/skills?type={type} | Опционально. Массовый поиск через реестр | Поиск навыков по типу |
3.4 Архитектура Организации Файлов
project-root/
├── docs/
│ ├── en/ # Базовый язык (английский)
│ │ ├── specification/
│ │ ├── blueprint/
│ │ ├── community/
│ │ ├── develop/
│ │ └── sdk/
│ └── ... # Другие языки (та же структура)
├── schema/
│ ├── draft/
│ │ ├── schema.json
│ │ ├── schema.ts
│ │ └── schema.mdx
│ └── 2025-10-25/
└── src/
├── validator.ts
├── discovery.ts
├── invocation.ts
└── version.ts
3.5 Ответственности Компонентов
Discovery Client (Клиент обнаружения)
Отвечает за локализацию Skill Descriptors в децентрализованной сети: запросы к Well-Known URI, прямое получение по URL, массовый поиск через реестр, фильтрация по типу возможности.
Schema Validator
Отвечает за валидацию соответствия Skill Descriptors: валидация по schema.json, парсинг валидных документов, возврат ошибок для невалидных документов, сериализация в Pretty Print JSON.
Invocation Client (Клиент вызова)
Отвечает за удалённый вызов обнаруженных навыков: построение запросов, обработка аутентификации, управление запросами статуса, обработка таймаутов и ошибок.
