@retailcrm/embed-ui 0.9.22-alpha.5 → 0.9.22-alpha.7

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 CHANGED
@@ -1,6 +1,21 @@
1
1
  # Changelog
2
2
 
3
3
 
4
+ ## [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)
5
+
6
+ ### Bug Fixes
7
+
8
+ * Package manifests normalized for npm publish ([c612b50](https://github.com/retailcrm/embed-ui/commit/c612b5040ba79bab6c88360554b8f156b48e3721))
9
+ ## [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)
10
+
11
+ ### Features
12
+
13
+ * MCP client config selection added ([e46fccd](https://github.com/retailcrm/embed-ui/commit/e46fccde382e6d0af2550932e00d41f8a3bcc1af))
14
+
15
+ ### Bug Fixes
16
+
17
+ * **v1-endpoint:** MCP startup probes handled ([9695b77](https://github.com/retailcrm/embed-ui/commit/9695b779de22fdd73c977546e592e327db4f5f1a))
18
+ * **v1-endpoint:** Project-level MCP config generated ([16ff7a2](https://github.com/retailcrm/embed-ui/commit/16ff7a2a0321ba01c186da0f6ad3664930bd1de4))
4
19
  ## [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
20
 
6
21
  ### 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` — дополнительно подключить или создать конфиги поддерживаемых AI-клиентов.
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`. Он отдает AI-friendly
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
 
@@ -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-alpha.5",
4
+ "version": "0.9.22-alpha.7",
5
5
  "description": "API and components for creating RetailCRM UI extensions",
6
- "repository": "git@github.com:retailcrm/embed-ui.git",
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": "./bin/embed-ui.mjs",
25
+ "bin": "bin/embed-ui.mjs",
23
26
  "files": [
24
27
  "bin",
25
28
  "dist",
@@ -54,10 +57,10 @@
54
57
  "@omnicajs/symfony-router": "^1.0.0",
55
58
  "@omnicajs/vue-remote": "^0.2.23",
56
59
  "@remote-ui/rpc": "^1.4.5",
57
- "@retailcrm/embed-ui-v1-components": "^0.9.22-alpha.5",
58
- "@retailcrm/embed-ui-v1-contexts": "^0.9.22-alpha.5",
59
- "@retailcrm/embed-ui-v1-endpoint": "^0.9.22-alpha.5",
60
- "@retailcrm/embed-ui-v1-types": "^0.9.22-alpha.5",
60
+ "@retailcrm/embed-ui-v1-components": "^0.9.22-alpha.7",
61
+ "@retailcrm/embed-ui-v1-contexts": "^0.9.22-alpha.7",
62
+ "@retailcrm/embed-ui-v1-endpoint": "^0.9.22-alpha.7",
63
+ "@retailcrm/embed-ui-v1-types": "^0.9.22-alpha.7",
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-alpha.5",
72
+ "@retailcrm/embed-ui-v1-testing": "^0.9.22-alpha.7",
70
73
  "@types/git-semver-tags": "^7.0.0",
71
74
  "@types/node": "^22.19.2",
72
75
  "@types/semver": "^7.7.1",