Внешние возможности¶
Внешние возможности описываются в необязательном файле проекта .embraion/external-capabilities.yaml. Он содержит сведения о независимо установленных программах и функциях хоста, которые могут понадобиться проекту. Правила EmbrAIon Core и контракты проекта сохраняют приоритет. По умолчанию файла нет; это означает пустой список. Описание не устанавливает программы, не загружает исходники, не включает плагины хоста, не расширяет доступ и не доказывает выполнение навыка.
Для списка действует строгая версионированная схема. Установкой и обнаружением возможностей host-managed управляет хост или пользователь. EmbrAIon записывает метаданные и показывает ограниченную диагностику; он не устанавливает, не копирует и не заменяет возможности хоста. Проект может обычным языком попросить установить возможность через поддерживаемый процесс выбранного хоста, проверить там установку, а затем попросить EmbrAIon зарегистрировать фактические источник, версию или digest, лицензию, хост, доступ и класс данных. Регистрация описывает требование проекта; она не является условием доступности уже установленной возможности для хоста.
schema-version: 1
capabilities:
- id: spec-kit
kind: host-managed
source: https://github.com/github/spec-kit
version: 1.2.3
license: MIT
hosts: [codex]
host-requirements: {codex: [plugins]}
env-vars: []
access: external-execution
data-class: PRIVATE
Пример описывает отдельно установленную возможность; её версию и требования к хосту нужно сверить с фактической установкой перед использованием. Для каждой записи нужны уникальный ID, тип, источник, точная version или digest в формате sha256:, лицензия, список hosts, имена переменных среды в env-vars, уровень access и data-class: PUBLIC, PRIVATE либо CONFIDENTIAL. Необязательное поле host-requirements перечисляет требуемые функции заявленных хостов; диагностика показывает эти имена, но не может проверить их локально. Значения доступа: read-only, workspace-write, external-execution. Поддерживаемые хосты: codex, claude-code, copilot, portable. Не записывайте сюда учётные данные, значения токенов, аргументы команд или значения конфигурации хоста. URL источника должен содержать обычный путь HTTPS-репозитория без учётных данных, параметров запроса и фрагмента. Идентификатор хоста может иметь вид host:<identifier>.
Схема v1 по-прежнему принимает kind: managed-bundle, id: unity и source: builtin:unity, чтобы читать и диагностировать существующие списки. Это совместимость с устаревшей записью, а не поставляемый или доступный для выбора пакет. Диагностика помечает такую запись как недоступную. Команда install отклоняет её для выбранного записью хоста, а update отклоняет её до записи конфигурации или проекций. EmbrAIon не преобразует её автоматически и не меняет её версию. Запись host-managed не может выбирать навыки для проекции.
Для миграции сначала независимо установите нужную возможность Unity через выбранный хост и проверьте там её идентичность и доступность. Затем явно удалите запись builtin:unity из .embraion/external-capabilities.yaml; при необходимости зарегистрируйте независимо установленную возможность новой записью host-managed с фактическими метаданными. Повторно запускайте install только после удаления устаревшей записи. Ранее спроецированные файлы навыков Unity сохраняются, пока устаревшая запись не удалена явно и не запущена очистка файлов с подтверждённым владением. Изменённые или чужие файлы сохраняются при такой очистке и требуют отдельной ручной проверки. Наличие равноценного навыка на замену не предполагается.
Диагностика различает шесть стадий: declared, installed-config, host-discovered, instructions-read, tools-ready, executed. Чтение списка подтверждает только declared. Устаревшая встроенная запись недоступна. Для возможностей host-managed локальная диагностика не подключена к работающему хосту; установка и последующие стадии остаются unverified, пока переданный отчёт наблюдения не заявит об их наличии. Принятые заявления помечаются self-reported, а не подтверждаются. Описанный источник, наличие переменной среды или заявленное событие JSON не доказывают загрузку хостом или выполнение. Без достоверного наблюдения работающего хоста значение ready остаётся false.
Вызывающая сторона может передать ограниченный отчёт наблюдения для диагностики без записи файлов. Он должен содержать schema-version: 1, точный scope, возвращённый observation_scope(...) или диагностикой, целевой host, время observed-at в формате ISO с часовым поясом и записи с точными id, source, version-or-digest и заявленными stages. Отчёты старше 24 часов, более чем на пять минут из будущего, с другой идентичностью списка или неизвестными полями игнорируются. scope связывает абсолютный путь проекта, версию фреймворка, хост и список; это контрольная сумма идентичности, а не аутентификация. Даже актуальный отчёт с верной областью остаётся самостоятельным заявлением. Проверка переменных среды возвращает только имена и признак наличия; значения никогда не выводятся.
Команда embraion capabilities --path <project> --host codex --json показывает диагностический список. --observation <report.json> передаёт отчёт; команда не обнаруживает плагины хоста и не запускает инструменты. Отсутствующие или неоднозначные сведения о требуемой возможности не считаются готовностью. Команда embraion update оставляет версии и digest возможностей host-managed под управлением проекта; устаревшую запись builtin:unity нужно удалить явно до обновления.