Глава 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 URIGET /.well-known/skill-sharingОсновной метод обнаруженияИсследование всех навыков провайдера
Прямой URLGET {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 (Клиент вызова)

Отвечает за удалённый вызов обнаруженных навыков: построение запросов, обработка аутентификации, управление запросами статуса, обработка таймаутов и ошибок.