@retailcrm/embed-ui 0.9.22-alpha.5 → 0.9.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/README.md +12 -4
- package/bin/embed-ui.mjs +30 -2
- package/package.json +12 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
## [0.9.22](https://github.com/retailcrm/embed-ui/compare/v0.9.22-alpha.7...v0.9.22) (2026-05-20)
|
|
5
|
+
## [0.9.22-alpha.7](https://github.com/retailcrm/embed-ui/compare/v0.9.22-alpha.6...v0.9.22-alpha.7) (2026-05-20)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
* Package manifests normalized for npm publish ([c612b50](https://github.com/retailcrm/embed-ui/commit/c612b5040ba79bab6c88360554b8f156b48e3721))
|
|
10
|
+
## [0.9.22-alpha.6](https://github.com/retailcrm/embed-ui/compare/v0.9.22-alpha.5...v0.9.22-alpha.6) (2026-05-20)
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
* MCP client config selection added ([e46fccd](https://github.com/retailcrm/embed-ui/commit/e46fccde382e6d0af2550932e00d41f8a3bcc1af))
|
|
15
|
+
|
|
16
|
+
### Bug Fixes
|
|
17
|
+
|
|
18
|
+
* **v1-endpoint:** MCP startup probes handled ([9695b77](https://github.com/retailcrm/embed-ui/commit/9695b779de22fdd73c977546e592e327db4f5f1a))
|
|
19
|
+
* **v1-endpoint:** Project-level MCP config generated ([16ff7a2](https://github.com/retailcrm/embed-ui/commit/16ff7a2a0321ba01c186da0f6ad3664930bd1de4))
|
|
4
20
|
## [0.9.22-alpha.5](https://github.com/retailcrm/embed-ui/compare/v0.9.22-alpha.4...v0.9.22-alpha.5) (2026-05-19)
|
|
5
21
|
|
|
6
22
|
### Features
|
package/README.md
CHANGED
|
@@ -61,7 +61,7 @@ npx @retailcrm/embed-ui init ./web --package-manager yarn
|
|
|
61
61
|
- каталоги — создаются `endpoint`, `pages`, `widgets`, `shared`, `i18n` и `i18n/locales` внутри frontend-каталога;
|
|
62
62
|
- `AGENTS.md` — создается или дополняется инструкциями корневого пакета и выбранных пакетов;
|
|
63
63
|
- MCP — добавляется `.mcp.json` для `v1-endpoint`;
|
|
64
|
-
- client configs для Codex CLI, Cursor, Junie и VS Code — не создаются без `--mcp-client-configs`;
|
|
64
|
+
- project-level client configs для Codex CLI, Cursor, Junie и VS Code — не создаются без `--mcp-client-configs`;
|
|
65
65
|
- Git — в неинтерактивном режиме не инициализируется без `--git`, а в интерактивном режиме предлагается, если корень проекта не является Git-репозиторием;
|
|
66
66
|
- существующие файлы не перезаписываются, а зависимости с потенциальным конфликтом не заменяются без явных force-флагов.
|
|
67
67
|
|
|
@@ -89,7 +89,7 @@ npx @retailcrm/embed-ui init ./web --cwd ./my-project --package-manager npm
|
|
|
89
89
|
- `--no-template` — не создавать стартовые Vue-файлы и `extensionrc.json`.
|
|
90
90
|
- `--no-agents` — не создавать и не дополнять `AGENTS.md`.
|
|
91
91
|
- `--no-mcp` — не добавлять MCP-настройки пакетов.
|
|
92
|
-
- `--mcp-client-configs codex,cursor,junie,vscode` — дополнительно
|
|
92
|
+
- `--mcp-client-configs codex,cursor,junie,vscode` — дополнительно создать project-level конфиги поддерживаемых AI-клиентов.
|
|
93
93
|
- `--git` — выполнить `git init` в корне проекта, если каталог еще не является Git-репозиторием.
|
|
94
94
|
|
|
95
95
|
`--force` включает силовой режим для управляемых частей, но учитывает флаги `--no-*`. Например, можно обновить только
|
|
@@ -106,8 +106,9 @@ npx @retailcrm/embed-ui init ./web --force --no-install --no-template
|
|
|
106
106
|
- `@retailcrm/embed-ui-v1-components` — добавляет порядок чтения README, AI-документации и YAML-профилей компонентов.
|
|
107
107
|
- `@retailcrm/embed-ui-v1-endpoint` — добавляет инструкции по целям виджетов и MCP-ресурсам.
|
|
108
108
|
|
|
109
|
-
Для `v1-endpoint` также создается `.mcp.json` с сервером `retailcrm-embed-ui-v1-endpoint`.
|
|
110
|
-
|
|
109
|
+
Для `v1-endpoint` также создается `.mcp.json` с сервером `retailcrm-embed-ui-v1-endpoint`. Этот файл рассчитан на
|
|
110
|
+
Claude Code project scope и использует `${CLAUDE_PROJECT_DIR:-.}/node_modules/.bin/embed-ui-v1-endpoint-mcp`, чтобы
|
|
111
|
+
сервер резолвился относительно открытого проекта. MCP отдает AI-friendly описания целей виджетов через ресурсы:
|
|
111
112
|
|
|
112
113
|
- `embed-ui-v1-endpoint://targets`;
|
|
113
114
|
- `embed-ui-v1-endpoint://targets/<encoded-target>`.
|
|
@@ -119,6 +120,13 @@ npx @retailcrm/embed-ui init ./web --force --no-install --no-template
|
|
|
119
120
|
npx @retailcrm/embed-ui init ./web --no-install --mcp-client-configs codex,cursor,junie,vscode
|
|
120
121
|
```
|
|
121
122
|
|
|
123
|
+
Для Codex CLI создается `.codex/config.toml`. Codex подхватывает его только в trusted project, поэтому после генерации
|
|
124
|
+
проект нужно открыть/перезапустить в Codex и доверить ему проект, если клиент спросит. User-level подключение через
|
|
125
|
+
`codex mcp add` намеренно не выполняется автоматически: на одной машине могут быть проекты с разными версиями
|
|
126
|
+
`@retailcrm/embed-ui-v1-endpoint`, а user-level серверы с одинаковыми MCP resource URI могут конфликтовать между собой.
|
|
127
|
+
Для Cursor и VS Code CLI генерирует project-level конфиги с `${workspaceFolder}/node_modules/.bin/...`; для Junie
|
|
128
|
+
остается относительный `./node_modules/.bin/...`.
|
|
129
|
+
|
|
122
130
|
Повторный запуск без `--force` не дублирует управляемые секции и записи MCP. При `--force` обновляются только записи
|
|
123
131
|
этого пакета, ручные серверы и соседние разделы не удаляются.
|
|
124
132
|
|
package/bin/embed-ui.mjs
CHANGED
|
@@ -34,7 +34,7 @@ Options:
|
|
|
34
34
|
--fix-sections Move init dependencies to expected package.json sections
|
|
35
35
|
--no-agents Do not create or update AGENTS.md in init mode
|
|
36
36
|
--no-mcp Do not add package MCP instructions in init mode
|
|
37
|
-
--mcp-client-configs Comma-separated MCP client configs to create (codex,cursor,junie,vscode)
|
|
37
|
+
--mcp-client-configs Comma-separated project-level MCP client configs to create (codex,cursor,junie,vscode)
|
|
38
38
|
--git Initialize Git repository in init mode when cwd is not a Git work tree
|
|
39
39
|
-h, --help Show this help
|
|
40
40
|
|
|
@@ -459,7 +459,7 @@ const promptForInstallSelection = async (packageJson) => {
|
|
|
459
459
|
const DEFAULT_INDENT = " ";
|
|
460
460
|
const DEFAULT_NEWLINE = "\n";
|
|
461
461
|
const INIT_RUNTIME_DEPENDENCIES = [
|
|
462
|
-
{ name: "@omnicajs/vue-remote", range: "^0.2.
|
|
462
|
+
{ name: "@omnicajs/vue-remote", range: "^0.2.24" },
|
|
463
463
|
{ name: "@remote-ui/rpc", range: "^1.4.7" },
|
|
464
464
|
{ name: "pinia", range: "^2.2" },
|
|
465
465
|
{ name: "vue", range: "^3.5" },
|
|
@@ -4518,6 +4518,19 @@ const INIT_ACTION_DESCRIPTIONS = {
|
|
|
4518
4518
|
git: "git init в каталоге проекта, если Git еще не настроен",
|
|
4519
4519
|
install: "Запуск выбранного package manager после изменения package.json"
|
|
4520
4520
|
};
|
|
4521
|
+
const MCP_CLIENT_CONFIG_LABELS = {
|
|
4522
|
+
codex: "Codex CLI",
|
|
4523
|
+
cursor: "Cursor",
|
|
4524
|
+
junie: "Junie",
|
|
4525
|
+
vscode: "VS Code"
|
|
4526
|
+
};
|
|
4527
|
+
const MCP_CLIENT_CONFIG_DESCRIPTIONS = {
|
|
4528
|
+
codex: ".codex/config.toml for trusted Codex projects",
|
|
4529
|
+
cursor: ".cursor/mcp.json with ${workspaceFolder}",
|
|
4530
|
+
junie: ".junie/mcp/mcp.json",
|
|
4531
|
+
vscode: ".vscode/mcp.json with ${workspaceFolder}"
|
|
4532
|
+
};
|
|
4533
|
+
const MCP_CLIENT_CONFIGS = Object.keys(MCP_CLIENT_CONFIG_LABELS);
|
|
4521
4534
|
const isGitWorkTree$1 = (cwd) => {
|
|
4522
4535
|
try {
|
|
4523
4536
|
execFileSync("git", ["rev-parse", "--is-inside-work-tree"], {
|
|
@@ -4625,6 +4638,20 @@ const resolvePromptedPackageManager = async (detectedPackageManager, explicitPac
|
|
|
4625
4638
|
}))
|
|
4626
4639
|
});
|
|
4627
4640
|
};
|
|
4641
|
+
const resolvePromptedMcpClientConfigs = async (options) => {
|
|
4642
|
+
if (options.noMcp || options.mcpClientConfigs) {
|
|
4643
|
+
return options.mcpClientConfigs;
|
|
4644
|
+
}
|
|
4645
|
+
return checkbox({
|
|
4646
|
+
message: "MCP client configs",
|
|
4647
|
+
choices: MCP_CLIENT_CONFIGS.map((clientConfig) => ({
|
|
4648
|
+
name: MCP_CLIENT_CONFIG_LABELS[clientConfig],
|
|
4649
|
+
value: clientConfig,
|
|
4650
|
+
checked: false,
|
|
4651
|
+
description: MCP_CLIENT_CONFIG_DESCRIPTIONS[clientConfig]
|
|
4652
|
+
}))
|
|
4653
|
+
});
|
|
4654
|
+
};
|
|
4628
4655
|
const resolveInteractiveInitOptions = async (cwd, options, detectedPackageManager) => {
|
|
4629
4656
|
if (!options.interactive) {
|
|
4630
4657
|
return options;
|
|
@@ -4649,6 +4676,7 @@ const resolveInteractiveInitOptions = async (cwd, options, detectedPackageManage
|
|
|
4649
4676
|
}
|
|
4650
4677
|
const selectedActions = await resolvePromptedActions(nextOptions);
|
|
4651
4678
|
applyPromptedActions(nextOptions, selectedActions);
|
|
4679
|
+
nextOptions.mcpClientConfigs = await resolvePromptedMcpClientConfigs(nextOptions);
|
|
4652
4680
|
nextOptions.packageManager = await resolvePromptedPackageManager(
|
|
4653
4681
|
detectedPackageManager,
|
|
4654
4682
|
nextOptions.packageManager
|
package/package.json
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@retailcrm/embed-ui",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.9.22
|
|
4
|
+
"version": "0.9.22",
|
|
5
5
|
"description": "API and components for creating RetailCRM UI extensions",
|
|
6
|
-
"repository":
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+ssh://git@github.com/retailcrm/embed-ui.git"
|
|
9
|
+
},
|
|
7
10
|
"author": "RetailDriverLLC <integration@retailcrm.ru>",
|
|
8
11
|
"license": "MIT",
|
|
9
12
|
"contributors": [
|
|
@@ -19,7 +22,7 @@
|
|
|
19
22
|
"./dist/*": "./dist/*",
|
|
20
23
|
"./types/*": "./types/*"
|
|
21
24
|
},
|
|
22
|
-
"bin": "
|
|
25
|
+
"bin": "bin/embed-ui.mjs",
|
|
23
26
|
"files": [
|
|
24
27
|
"bin",
|
|
25
28
|
"dist",
|
|
@@ -52,12 +55,12 @@
|
|
|
52
55
|
"@floating-ui/dom": "^1.6.13",
|
|
53
56
|
"@inquirer/prompts": "^8.4.3",
|
|
54
57
|
"@omnicajs/symfony-router": "^1.0.0",
|
|
55
|
-
"@omnicajs/vue-remote": "^0.2.
|
|
58
|
+
"@omnicajs/vue-remote": "^0.2.24",
|
|
56
59
|
"@remote-ui/rpc": "^1.4.5",
|
|
57
|
-
"@retailcrm/embed-ui-v1-components": "^0.9.22
|
|
58
|
-
"@retailcrm/embed-ui-v1-contexts": "^0.9.22
|
|
59
|
-
"@retailcrm/embed-ui-v1-endpoint": "^0.9.22
|
|
60
|
-
"@retailcrm/embed-ui-v1-types": "^0.9.22
|
|
60
|
+
"@retailcrm/embed-ui-v1-components": "^0.9.22",
|
|
61
|
+
"@retailcrm/embed-ui-v1-contexts": "^0.9.22",
|
|
62
|
+
"@retailcrm/embed-ui-v1-endpoint": "^0.9.22",
|
|
63
|
+
"@retailcrm/embed-ui-v1-types": "^0.9.22",
|
|
61
64
|
"yargs": "^17.7.2"
|
|
62
65
|
},
|
|
63
66
|
"devDependencies": {
|
|
@@ -66,7 +69,7 @@
|
|
|
66
69
|
"@modulify/git-toolkit": "^0.0.2",
|
|
67
70
|
"@modulify/pkg": "^1.0.1",
|
|
68
71
|
"@omnicajs/eslint-plugin-dependencies": "^0.0.2",
|
|
69
|
-
"@retailcrm/embed-ui-v1-testing": "^0.9.22
|
|
72
|
+
"@retailcrm/embed-ui-v1-testing": "^0.9.22",
|
|
70
73
|
"@types/git-semver-tags": "^7.0.0",
|
|
71
74
|
"@types/node": "^22.19.2",
|
|
72
75
|
"@types/semver": "^7.7.1",
|