API и компоненты для создания расширений интерфейса RetailCRM
Витрина storybook для последней выпущенной версии: embed-ui/v1-components/latest.
v1-components— UI-компоненты и сопутствующая документация, README.md пакета.v1-contexts— реактивные контексты и доступ к данным RetailCRM JS API, README.md пакета.v1-endpoint— endpoint API для встраиваемых страниц и виджетов, README.md пакета.v1-testing— тестовые утилиты и вспомогательные типы для интеграций, README.md пакета.v1-types— базовые type declarations для публичного API, README.md пакета.
Для v1-components также доступен npx-скрипт, который может создать или дополнить локальный
AGENTS.md инструкциями по работе с @retailcrm/embed-ui-v1-components:
npx @retailcrm/embed-ui-v1-components init-agentsПакет поставляет бинарник embed-ui, который можно запускать через npx.
CLI умеет обновлять версии пакетов, добавлять пакеты в существующий проект и выполнять начальную инициализацию
фронтенда расширения.
npx @retailcrm/embed-ui --helpКоманда init создает или дополняет проект фронтенда расширения:
- добавляет
package.json, если его еще нет; - добавляет зависимости
@retailcrm/embed-ui*,vue,pinia,vue-i18nи dev-зависимости для Vite, TypeScript и ESLint; - создает
tsconfig.json,vite.config.ts,eslint.config.js,env.d.ts; - создает или дополняет
.gitignoreтиповыми правилами дляnode_modules,dist,coverage,.envи логов; - создает стартовые файлы во frontend-каталоге: endpoint worker, страницу настроек, виджет заказа, i18n JSON-сообщения;
- добавляет
extensionrc.jsonиscripts/publish-extension.mjs; - добавляет
AGENTS.mdи MCP-настройки пакетов, если они не отключены флагами; - может инициализировать Git-репозиторий, если включить
--gitили выбрать это действие в интерактивном режиме.
npx @retailcrm/embed-ui init ./web --package-manager yarnЕсли не указывать дополнительные флаги, init работает так:
- корень проекта — текущий рабочий каталог;
- frontend-каталог — позиционный аргумент команды, а если его нет, то
./srcдля нового проекта или./web, если./srcуже существует; - версия пакетов — версия запущенного CLI;
- package manager — определяется по единственному lock-файлу в корне проекта, в интерактивном терминале запрашивается у пользователя, в неинтерактивном режиме используется
npm; - интерактивный выбор package manager показывает только найденные в
PATHварианты, а явно выбранный недоступный manager останавливаетinitдо записи файлов; - пакеты —
@retailcrm/embed-ui,v1-components,v1-contexts,v1-typesиv1-endpoint; - установка зависимостей — запускается автоматически после изменения
package.json; - шаблон — создается стартовая конфигурация для страницы настроек и виджета
order/card:common.after; - каталоги — создаются
endpoint,pages,widgets,shared,i18nиi18n/localesвнутри frontend-каталога; AGENTS.md— создается или дополняется инструкциями корневого пакета и выбранных пакетов;- MCP — добавляется
.mcp.jsonдля выбранных пакетов с MCP (v1-contextsиv1-endpoint); - project-level client configs для Codex CLI, Cursor, Junie и VS Code — не создаются без
--mcp-client-configs; - Git — в неинтерактивном режиме не инициализируется без
--git, а в интерактивном режиме предлагается, если корень проекта не является Git-репозиторием; - существующие файлы не перезаписываются, а зависимости с потенциальным конфликтом не заменяются без явных force-флагов.
По умолчанию команда использует текущий рабочий каталог как корень проекта. Его можно задать явно:
npx @retailcrm/embed-ui init ./web --cwd ./my-project --package-manager npmЕсли в проекте уже есть src, для нового фронтенда расширения удобнее использовать отдельный каталог, например
./web. CLI не перезаписывает существующие файлы без явного разрешения и выводит предупреждения о пропущенных шагах.
Полезные флаги:
--no-install— не запускать установку зависимостей после измененияpackage.json.--interactive— задать основные параметры через TTY-интерфейс со списками выбора, сохранив флаги как явные ограничения.--verbose— вывести подробный список изменений послеinit; без него CLI печатает краткую сводку.--version 0.9.21— использовать указанную версию пакетов вместо версии запущенного CLI.--exact— записывать точные версии вместо диапазонов.--packages embed-ui,components,contexts,types,endpoint— явно выбрать пакеты для установки и настройки.--force-deps— заменить несовместимые версии зависимостей.--fix-sections— перенести зависимости в ожидаемые секцииdependencies/devDependencies.--force-files— перезаписать генерируемые стартовые файлы.--no-configs— не создаватьtsconfig.json,vite.config.ts,eslint.config.jsиenv.d.ts.--no-template— не создавать стартовые Vue-файлы иextensionrc.json.--no-agents— не создавать и не дополнятьAGENTS.md.--no-mcp— не добавлять MCP-настройки пакетов.--mcp-client-configs codex,cursor,junie,vscode— дополнительно создать project-level конфиги поддерживаемых AI-клиентов.--git— выполнитьgit initв корне проекта, если каталог еще не является Git-репозиторием.
--force включает силовой режим для управляемых частей, но учитывает флаги --no-*. Например, можно обновить только
агентские инструкции и MCP-настройки без перегенерации стартовых файлов:
npx @retailcrm/embed-ui init ./web --force --no-install --no-templateПри init CLI добавляет общий раздел в AGENTS.md, а пакеты могут добавить свои инструкции. Сейчас это используют:
@retailcrm/embed-ui-v1-components— добавляет порядок чтения README, AI-документации и YAML-профилей компонентов.@retailcrm/embed-ui-v1-contexts— добавляет инструкции по контекстам, actions, custom contexts и MCP-ресурсам.@retailcrm/embed-ui-v1-endpoint— добавляет инструкции по целям виджетов и MCP-ресурсам.
Для v1-contexts и v1-endpoint, если эти пакеты выбраны для установки, также создается .mcp.json с серверами
retailcrm-embed-ui-v1-contexts и retailcrm-embed-ui-v1-endpoint. Этот файл рассчитан на Claude Code project scope
и использует ${CLAUDE_PROJECT_DIR:-.}/node_modules/.bin/..., чтобы серверы резолвились относительно открытого проекта.
MCP отдает AI-friendly описания через ресурсы:
embed-ui-v1-contexts://contexts;embed-ui-v1-contexts://contexts/<encoded-context>;embed-ui-v1-contexts://actions;embed-ui-v1-contexts://actions/<encoded-scope>;embed-ui-v1-contexts://custom-contexts;embed-ui-v1-contexts://custom-contexts/<encoded-entity>;embed-ui-v1-endpoint://targets;embed-ui-v1-endpoint://targets/<encoded-target>.
Конфиги конкретных клиентов не создаются по умолчанию, потому что в них чаще бывают пользовательские правки. Чтобы добавить только поддерживаемые project-level конфиги, укажите:
npx @retailcrm/embed-ui init ./web --no-install --mcp-client-configs codex,cursor,junie,vscodeДля Codex CLI создается .codex/config.toml. Codex подхватывает его только в trusted project, поэтому после генерации
проект нужно открыть/перезапустить в Codex и доверить ему проект, если клиент спросит. User-level подключение через
codex mcp add намеренно не выполняется автоматически: на одной машине могут быть проекты с разными версиями
@retailcrm/embed-ui*, а user-level серверы с одинаковыми MCP resource URI могут конфликтовать между собой.
Для Cursor и VS Code CLI генерирует project-level конфиги с ${workspaceFolder}/node_modules/.bin/...; для Junie
остается относительный ./node_modules/.bin/....
Повторный запуск без --force не дублирует управляемые секции и записи MCP. При --force обновляются только записи
этого пакета, ручные серверы и соседние разделы не удаляются.
Можно запустить бинарник через npx, чтобы обновить пакеты @retailcrm/embed-ui* во всех package.json
текущего рабочего дерева или выбранного поддерева
(dependencies, devDependencies, peerDependencies, optionalDependencies).
npx @retailcrm/embed-ui
npx @retailcrm/embed-ui --version 0.9.11
npx @retailcrm/embed-ui ./my-project 0.9.11
npx @retailcrm/embed-ui --target ./my-project --dry-runПо умолчанию используется последняя версия из npm. Флаг --exact переключает формат обновления на точную версию.
CLI сохраняет исходные отступы и переводы строк в каждом изменяемом package.json.
Для точечного добавления пакетов только в один package.json есть флаг --add.
Если не передать --packages, CLI откроет интерактивный режим с выбором пакетов и кратким описанием.
npx @retailcrm/embed-ui --add
npx @retailcrm/embed-ui --add --packages components,contexts
npx @retailcrm/embed-ui --add --target ./my-project --version 0.9.11Доступные идентификаторы пакетов: embed-ui, components, contexts, types, endpoint.
Пакет testing пока не добавляется через публичную инициализацию.
Цели встраивания определяют места, где будет размещена разметка виджета, генерируемая расширением.
https://docs.retailcrm.ru/Developers/modules/PublishingModuleMarketplace/JsModulesTargets