mlspace-plugin 0.2.2__tar.gz → 0.3.1__tar.gz

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.
Files changed (133) hide show
  1. mlspace_plugin-0.3.1/.agents/plugins/marketplace.json +20 -0
  2. mlspace_plugin-0.3.1/.claude-plugin/marketplace.json +12 -0
  3. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/INSTALL.md +64 -19
  4. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/INSTALL_AGENT.md +20 -7
  5. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/PKG-INFO +19 -14
  6. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/README.md +18 -13
  7. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/RELEASE.md +15 -9
  8. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/plugin/.claude-plugin/plugin.json +1 -1
  9. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/plugin/.codex-plugin/plugin.json +1 -1
  10. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/plugin/.mcp.json +1 -1
  11. mlspace_plugin-0.3.1/plugin/README.md +67 -0
  12. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/plugin/mcp.json +2 -5
  13. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/plugin/plugin.json +1 -1
  14. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/pyproject.toml +2 -1
  15. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/scripts/build_plugin.py +9 -43
  16. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/scripts/gen_plugin.py +26 -17
  17. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/__init__.py +1 -1
  18. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/client_setup.py +102 -76
  19. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/config.py +23 -5
  20. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/init_cli.py +46 -17
  21. mlspace_plugin-0.3.1/src/mlspace_mcp/native_plugins.py +116 -0
  22. mlspace_plugin-0.3.1/src/mlspace_mcp/setup_conflicts.py +105 -0
  23. mlspace_plugin-0.3.1/src/mlspace_mcp/setup_verification.py +106 -0
  24. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_client_setup.py +91 -87
  25. mlspace_plugin-0.3.1/tests/test_credential_pointer.py +56 -0
  26. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_env_file.py +1 -0
  27. mlspace_plugin-0.3.1/tests/test_native_cli_integration.py +117 -0
  28. mlspace_plugin-0.3.1/tests/test_native_plugins.py +96 -0
  29. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_onboarding_init.py +86 -9
  30. mlspace_plugin-0.3.1/tests/test_opencode_journey.py +249 -0
  31. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_plugin_bundle.py +15 -32
  32. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_plugin_release.py +7 -26
  33. mlspace_plugin-0.3.1/tests/test_setup_conflicts.py +202 -0
  34. mlspace_plugin-0.3.1/tests/test_setup_native_journey.py +137 -0
  35. mlspace_plugin-0.3.1/tests/test_setup_verification.py +54 -0
  36. mlspace_plugin-0.2.2/plugin/README.md +0 -119
  37. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/.env.example +0 -0
  38. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/.gitignore +0 -0
  39. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/AGENTS.md +0 -0
  40. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/CONTRIBUTING.md +0 -0
  41. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/LICENSE +0 -0
  42. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/plugin/skills/mlspace-call-deployed-model-predict/SKILL.md +0 -0
  43. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/plugin/skills/mlspace-deploy-inference-service/SKILL.md +0 -0
  44. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/plugin/skills/mlspace-diagnose-data-transfer/SKILL.md +0 -0
  45. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/plugin/skills/mlspace-diagnose-failed-training-job/SKILL.md +0 -0
  46. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/plugin/skills/mlspace-diagnose-job-launch-rejection/SKILL.md +0 -0
  47. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/plugin/skills/mlspace-diagnose-unhealthy-inference/SKILL.md +0 -0
  48. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/plugin/skills/mlspace-discover-launchable-resources/SKILL.md +0 -0
  49. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/plugin/skills/mlspace-launch-training-job/SKILL.md +0 -0
  50. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/plugin/skills/mlspace-list-running-jobs/SKILL.md +0 -0
  51. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/plugin/skills/mlspace-resume-notebook-and-set-autoshutdown/SKILL.md +0 -0
  52. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/plugin/skills/mlspace-stage-s3-to-nfs/SKILL.md +0 -0
  53. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/plugin/skills/mlspace-transfer-compute-node/SKILL.md +0 -0
  54. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/scripts/demo_multi_workspace.py +0 -0
  55. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/scripts/gen_body_schemas.py +0 -0
  56. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/scripts/mcp_call.py +0 -0
  57. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/scripts/serve_stdio.sh +0 -0
  58. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/scripts/serve_stdio_dryrun.sh +0 -0
  59. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/__main__.py +0 -0
  60. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/_status.py +0 -0
  61. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/auth.py +0 -0
  62. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/bodyspec.py +0 -0
  63. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/client.py +0 -0
  64. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/errors.py +0 -0
  65. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/formatting.py +0 -0
  66. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/job_hooks.py +0 -0
  67. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/jsonc.py +0 -0
  68. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/overview.py +0 -0
  69. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/registry.py +0 -0
  70. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/resource_refs.py +0 -0
  71. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/server.py +0 -0
  72. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/setup_ui.py +0 -0
  73. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/spec/body_schemas.json +0 -0
  74. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/spec/openapi.json +0 -0
  75. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/tls.py +0 -0
  76. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/tools/__init__.py +0 -0
  77. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/tools/allocations.py +0 -0
  78. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/tools/async_inference.py +0 -0
  79. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/tools/build_image.py +0 -0
  80. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/tools/dalle.py +0 -0
  81. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/tools/data_transfer.py +0 -0
  82. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/tools/docker_registry.py +0 -0
  83. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/tools/inference.py +0 -0
  84. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/tools/jobs.py +0 -0
  85. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/tools/notebooks.py +0 -0
  86. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/tools/queues.py +0 -0
  87. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/tools/resources.py +0 -0
  88. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/tools/tensorboards.py +0 -0
  89. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/tools/workspaces.py +0 -0
  90. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/src/mlspace_mcp/workspace_context.py +0 -0
  91. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/conftest.py +0 -0
  92. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/specutil.py +0 -0
  93. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_allocations.py +0 -0
  94. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_artifact_sync.py +0 -0
  95. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_async_inference.py +0 -0
  96. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_auth.py +0 -0
  97. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_autofill.py +0 -0
  98. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_bodyspec.py +0 -0
  99. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_build_image.py +0 -0
  100. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_client.py +0 -0
  101. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_configs_shrink.py +0 -0
  102. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_dalle.py +0 -0
  103. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_data_transfer.py +0 -0
  104. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_docker_registry.py +0 -0
  105. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_drift.py +0 -0
  106. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_dry_run.py +0 -0
  107. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_dry_run_fidelity.py +0 -0
  108. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_errors.py +0 -0
  109. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_false_success.py +0 -0
  110. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_formatting.py +0 -0
  111. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_init_cli.py +0 -0
  112. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_integration.py +0 -0
  113. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_job_status.py +0 -0
  114. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_jobs.py +0 -0
  115. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_log_normalisation.py +0 -0
  116. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_mcp_error_contract.py +0 -0
  117. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_notebooks.py +0 -0
  118. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_onboarding_tls.py +0 -0
  119. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_overview.py +0 -0
  120. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_plugin_cli.py +0 -0
  121. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_preflight.py +0 -0
  122. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_queue_scope.py +0 -0
  123. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_queues.py +0 -0
  124. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_registry.py +0 -0
  125. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_resource_refs.py +0 -0
  126. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_resources.py +0 -0
  127. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_route_confusion.py +0 -0
  128. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_setup_ui.py +0 -0
  129. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_skills.py +0 -0
  130. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_tensorboards.py +0 -0
  131. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_workspace_context.py +0 -0
  132. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_workspaces.py +0 -0
  133. {mlspace_plugin-0.2.2 → mlspace_plugin-0.3.1}/tests/test_wrapper_hardening.py +0 -0
@@ -0,0 +1,20 @@
1
+ {
2
+ "name": "mlspace",
3
+ "interface": {
4
+ "displayName": "MLSpace"
5
+ },
6
+ "plugins": [
7
+ {
8
+ "name": "mlspace",
9
+ "source": {
10
+ "source": "local",
11
+ "path": "./plugin"
12
+ },
13
+ "policy": {
14
+ "installation": "AVAILABLE",
15
+ "authentication": "ON_INSTALL"
16
+ },
17
+ "category": "Productivity"
18
+ }
19
+ ]
20
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "mlspace",
3
+ "owner": {
4
+ "name": "Cloud.ru"
5
+ },
6
+ "plugins": [
7
+ {
8
+ "name": "mlspace",
9
+ "source": "./plugin"
10
+ }
11
+ ]
12
+ }
@@ -1,6 +1,7 @@
1
1
  # Установка MLSpace MCP: macOS и Linux
2
2
 
3
- Нужны Python 3.10+, `uv`, установленный Claude Code, Codex или OpenCode,
3
+ Нужны Python 3.10+, `uv` (команда `uvx`), Git для нативных плагинов,
4
+ актуальный Claude Code, Codex или OpenCode,
4
5
  Cloud.ru Key ID и Key Secret. Windows пока не поддерживаем.
5
6
 
6
7
  Первая установка из PyPI выполняется одной командой:
@@ -20,7 +21,7 @@ mlspace-plugin setup
20
21
  ```
21
22
 
22
23
  Если пакет уже установлен: `uv tool install --force .`.
23
- При установке из wheel: `uv tool install /путь/к/mlspace_plugin-0.2.2-py3-none-any.whl`.
24
+ При установке из wheel: `uv tool install /путь/к/mlspace_plugin-0.3.1-py3-none-any.whl`.
24
25
  Не используйте editable-установку из `/tmp` для постоянной работы.
25
26
  Далее команды показаны для PyPI. После установки исходников или wheel через
26
27
  `uv tool install` заменяйте `uvx mlspace-plugin@latest` на `mlspace-plugin`,
@@ -34,7 +35,15 @@ mlspace-plugin setup
34
35
  звёздочки показывают ввод. Ключи создаются в консоли Cloud.ru в профиле, «Ключи доступа».
35
36
  3. Загрузит воркспейсы. Печатайте имя, проект или ID для поиска. Стрелки перемещают
36
37
  курсор, пробел отмечает, Enter завершает выбор. Ctrl-U очищает поиск; выбор сохраняется.
37
- 4. Проверит выбранные воркспейсы, сохранит настройки и подключит MCP вместе со скиллами.
38
+ 4. Проверит выбранные воркспейсы и сохранит настройки.
39
+ 5. Для Claude Code и Codex добавит marketplace этого GitHub-репозитория и установит
40
+ `mlspace@mlspace`. Для OpenCode запишет MCP-подключение и скиллы в
41
+ `~/.config/opencode/skills` (учитывается `XDG_CONFIG_HOME`).
42
+ 6. Сверит скиллы, запустит MCP и проверит инструменты и выбранные воркспейсы.
43
+
44
+ Если настройка клиента не завершилась, проверенные ключи остаются сохранёнными.
45
+ Мастер перечислит установленные клиенты; устраните причину и выполните напечатанную
46
+ команду `Retry`. Она сохраняет выбор клиентов, включая незавершённые подключения.
38
47
 
39
48
  Откройте новую сессию выбранного клиента; если MCP не появился, перезапустите клиент.
40
49
  Сервер запускается клиентом автоматически. Первый запрос:
@@ -75,15 +84,39 @@ uvx mlspace-plugin@latest setup --force --client-path opencode=/полный/п
75
84
  `--force` повторяет настройку с сохранёнными ключами на прежнем endpoint.
76
85
  `--replace-credentials` запрашивает новые. При смене endpoint ключи запрашиваются
77
86
  заново, если источник явно не выбран. `--client` можно повторять.
78
- Существующие посторонние MCP, комментарии JSONC и изменённые пользователем скиллы
79
- не перезаписываются молча; конфликт показывает путь для разбора.
80
- Если уже установлен MLSpace native plugin, используйте его и `--config-only`
81
- либо сначала удалите старую интеграцию, чтобы не создавать второй MCP.
87
+ Посторонние MCP, комментарии JSONC и дополнительные пользовательские скиллы сохраняются.
88
+ Если в OpenCode уже есть другое подключение `mcp.mlspace` или отличающиеся скиллы
89
+ с именами из пакета, мастер **до ввода ключей** покажет все эти конфликты вместе.
90
+ Для подключения выберите `r`, чтобы сохранить резервную копию конфига и заменить
91
+ только `mcp.mlspace`. Для каждого конфликтующего скилла доступны:
92
+
93
+ - `k` — оставить свою версию активной и исключить её из обновлений плагина.
94
+ Этот выбор сохраняется для последующих запусков setup. Проверка сообщит,
95
+ что пользовательская версия не проверялась на совпадение с релизом.
96
+ - `r` — сохранить весь каталог скилла, включая вспомогательные файлы, в резервной
97
+ копии и установить пакетный `SKILL.md`.
98
+ - Enter — отменить настройку без замены конфликтующих файлов.
99
+
100
+ Резервные копии находятся в `backups/setup-*` рядом с `install-state.json`
101
+ в каталоге настроек MLSpace, **вне каталогов скиллов**; мастер печатает точный путь.
102
+ Они создаются перед заменой после проверки credentials. Если резервное копирование
103
+ не удалось, конфликтующие файлы не заменяются. Отличие от пакета само по себе
104
+ не означает ручное редактирование: это может быть файл от старой установки.
105
+ `--force` не разрешает замену конфликтов. В `--non-interactive` мастер перечисляет
106
+ их и останавливается; для выбора запустите ту же команду в своём терминале без этого флага.
107
+
108
+ Уже установленный `mlspace@mlspace` из этого репозитория переиспользуется.
109
+ Если имя marketplace занято другим источником или есть отдельная прямая регистрация
110
+ MLSpace в Claude/Codex, мастер остановится до ввода ключей. Разберите указанное
111
+ подключение; мастер не удаляет его автоматически.
82
112
 
83
113
  ## Где ключи
84
114
 
85
115
  `~/.config/mlspace-plugin/.env` (или каталог из `XDG_CONFIG_HOME`): права файла `0600`,
86
116
  каталога MLSpace `0700`. В конфиге клиента — только путь и команда запуска.
117
+ Несекретный указатель `~/.config/mlspace-plugin/credentials-path.json` хранит путь
118
+ к выбранному файлу. Поэтому `--path` и нестандартный `XDG_CONFIG_HOME` не требуют
119
+ wrapper или экспорта переменных перед каждым запуском клиента.
87
120
  Это не шифрование: процессы того же пользователя и администратор могут прочитать
88
121
  файл. Не отправляйте его в чат и не добавляйте в Git. x-api-key получается автоматически
89
122
  и не сохраняется. Доступ к каждому выбранному workspace проверяется, но это не
@@ -102,15 +135,27 @@ uvx mlspace-plugin@latest setup --force --client-path opencode=/полный/п
102
135
 
103
136
  ## Обновление пакета и скиллов
104
137
 
105
- Для установки через PyPI повторите `uvx mlspace-plugin@latest setup --force`.
106
- Мастер сохранит ключи, предложит выбор workspace и обновит скиллы без локальных
107
- изменений. MCP обновляется во всех клиентах, ранее подключённых мастером,
108
- чтобы версия сервера совпадала с общими скиллами. `--client` выбирает новые
109
- подключения, а существующие управляемые подключения обновляются вместе.
110
- Изменённые вручную регистрации и скиллы вызовут конфликт с указанием файла.
111
- Регистрация MCP, созданная мастером и не изменённая вручную, обновляется
112
- автоматически. Посторонние и изменённые регистрации требуют разбора конфликта.
113
- Для постоянной установки: `uv tool upgrade mlspace-plugin`, затем
114
- `mlspace-plugin setup --force`. Для установки из checkout: `uv tool install --force .`.
115
- Автоматического обновления в фоне нет. Native plugin из архива обновляйте
116
- через менеджер плагинов клиента; инструкции находятся в `plugin/README.md`.
138
+ ```bash
139
+ uvx mlspace-plugin@latest setup --force
140
+ ```
141
+
142
+ Мастер переиспользует ключи, предложит выбор workspace и обновит все сохранившиеся
143
+ подключения, созданные им ранее. `--client` добавляет новые подключения.
144
+ Удалённые подключения не восстанавливаются автоматически.
145
+
146
+ Claude Code и Codex обновляют нативный плагин через свой менеджер; MCP и скиллы
147
+ приходят из одного релиза. OpenCode обновляет команду MCP и свои скиллы.
148
+ Для отличающихся конфигов и скиллов OpenCode мастер предлагает выбор, описанный выше.
149
+ Дополнительные скиллы с отдельными именами, в том числе `mlspace-*`, не мешают
150
+ установке и проверке. Скиллы, оставленные через `k`, не обновляются плагином.
151
+ Кеш нативного плагина принадлежит менеджеру клиента: свои правки храните отдельно.
152
+
153
+ Для постоянной установки сначала `uv tool upgrade mlspace-plugin`, затем
154
+ `mlspace-plugin setup --force`. Сборка из исходников должна соответствовать
155
+ версии публичного marketplace; для разработки используйте `--config-only`
156
+ или изолированную тестовую установку.
157
+
158
+ Собственного фонового обновления нет. Настройки автообновления Claude/Codex
159
+ мастер не меняет. Установка и проверка конкретной версии требуют доступа к GitHub
160
+ и PyPI. Если публикация релиза ещё не завершена, setup сообщает об ошибке;
161
+ повторите его после завершения публикации.
@@ -18,19 +18,32 @@
18
18
  (по SSH — на целевой машине). Для stage добавьте согласованный `--base-url`.
19
19
  Объясните: два ключа под звёздочками → поиск и выбор workspace → подключение.
20
20
  Дождитесь сообщения о завершении. Человек не должен присылать секреты или файл.
21
- 4. Мастер сам обнаруживает клиентов, проверяет TLS и API, устанавливает MCP и
22
- скиллы. Если клиентов несколько, человек выбирает нужные. Для известного
21
+ 4. Мастер сам обнаруживает клиентов, проверяет TLS и API. В Claude Code/Codex
22
+ он добавляет GitHub marketplace и устанавливает нативный плагин; в OpenCode
23
+ записывает MCP и скиллы в собственный каталог клиента. Если клиентов несколько, человек выбирает нужные. Для известного
23
24
  клиента можно заранее дать `--client claude-code`, `--client codex` или `--client opencode`.
24
25
  Сбой TLS исправляется системным CA или PEM от администратора через `--ca-file`.
25
26
  Никогда не отключайте TLS и не подставляйте сертификат с недоверенного сервера.
26
- 5. Проверьте `uvx mlspace-plugin@latest --list-tools`. Эта команда проверяет только состав
27
- инструментов, а не авторизацию и не загрузку выбранным клиентом.
27
+ 5. Успешный setup уже проверяет установленные скиллы, MCP initialize, список
28
+ инструментов и выбранные workspace. Это проверка процесса MCP, а не открытой
29
+ сессии агента. `--list-tools` само по себе не подтверждает подключение.
28
30
  Попросите открыть новую сессию клиента (при необходимости перезапустить).
29
31
  После появления MCP выполните read-only запрос списка выбранных workspace.
30
32
  До этого не заявляйте, что клиент уже загрузил MCP и скиллы.
31
- 6. Если возник конфликт с существующим плагином или изменённым скиллом,
32
- разберите названный несекретный путь. Не удаляйте чужую интеграцию автоматически.
33
- При частичном успехе сообщите, какие этапы завершены, затем повторите setup с `--force`.
33
+ 6. При существующей настройке объясните выбор до отправки человека в терминал:
34
+ мастер покажет конфликты OpenCode одним списком перед вводом ключей.
35
+ `k` оставляет пользовательский скилл активным и исключает из обновлений;
36
+ `r` сохраняет резервную копию и заменяет конфликтующий файл; Enter отменяет.
37
+ Новые скиллы пользователя с отдельными именами сохраняются автоматически.
38
+ Не удаляйте каталоги `mlspace-*` и не считайте отличие от пакета доказательством
39
+ ручного изменения. Не заменяйте выбор человека флагом `--force` — он этого не делает.
40
+ В неинтерактивном режиме конфликты перечисляются без изменений: предложите человеку
41
+ запустить ту же команду без `--non-interactive`, сохранив endpoint, путь и выбор клиентов.
42
+ Для конфликта нативного плагина Claude/Codex разберите указанный несекретный путь;
43
+ не удаляйте чужую интеграцию автоматически.
44
+ При частичном успехе сообщите, какие этапы завершены, и используйте команду `Retry`
45
+ из ошибки: она сохраняет выбор незавершённых подключений. Для автоматизации
46
+ добавьте прежние `--non-interactive` и `--workspace`.
34
47
 
35
48
  ## Автоматизация с уже подготовленными credentials
36
49
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: mlspace-plugin
3
- Version: 0.2.2
3
+ Version: 0.3.1
4
4
  Summary: Cloud.ru MLSpace plugin: MCP server, agent skills and setup
5
5
  Project-URL: Repository, https://github.com/noesskeetit/mlspace-plugin
6
6
  Project-URL: Issues, https://github.com/noesskeetit/mlspace-plugin/issues
@@ -107,8 +107,10 @@ mlspace-plugin setup
107
107
  Мастер обнаруживает Claude Code, Codex и OpenCode, просит только Key ID и Key Secret
108
108
  с маской `*****`, предлагает поиск воркспейсов по имени/проекту/ID и множественный
109
109
  выбор. Проверяет API, сохраняет credentials в пользовательский `.env` с правами
110
- `0600`, подключает MCP и устанавливает все скиллы из пакета. Откройте новую сессию
111
- клиента; сервер запускается автоматически.
110
+ `0600`. Для Claude Code и Codex мастер добавляет marketplace этого репозитория
111
+ и устанавливает нативный плагин с MCP и скиллами. OpenCode получает MCP и скиллы
112
+ в собственном каталоге. Мастер проверяет запуск MCP; затем откройте новую сессию
113
+ клиента — сервер запускается автоматически.
112
114
 
113
115
  TLS использует системные доверенные CA. Для корпоративного PEM есть `--ca-file`:
114
116
  мастер сохраняет копию для последующих запусков. Ошибка TLS/сети останавливает
@@ -118,14 +120,14 @@ TLS использует системные доверенные CA. Для ко
118
120
  endpoint переиспользуются. Для замены ключей добавьте `--replace-credentials`.
119
121
  Для stage укажите `--base-url https://mlspace-stage.example.com`.
120
122
  Только credentials без подключения клиентов — `--config-only`.
121
- Если уже используете native plugin, выбирайте этот режим, чтобы не дублировать MCP.
123
+ Уже установленный нативный плагин из этого репозитория переиспользуется.
122
124
 
123
125
  Подробнее: [установка, SSH, сертификаты и повторная настройка](https://github.com/noesskeetit/mlspace-plugin/blob/main/INSTALL.md).
124
126
  Для разработки: `uv sync --extra dev` и `uv run pytest`.
125
127
 
126
128
  **Порядок поиска кредов** — от общего к частному, побеждает более конкретное:
127
129
 
128
- 1. `~/.config/mlspace-plugin/.env` — пользовательский конфиг, сюда пишет `setup`
130
+ 1. Файл, сохранённый `setup` (по умолчанию `~/.config/mlspace-plugin/.env`)
129
131
  2. файл из `MLSPACE_ENV_FILE` — выбран явно
130
132
  3. настоящие переменные окружения — бьют любой файл
131
133
 
@@ -133,8 +135,10 @@ endpoint переиспользуются. Для замены ключей до
133
135
  укажите его явно через `MLSPACE_ENV_FILE`, чтобы чужой репозиторий не мог
134
136
  подменить адрес API при использовании сохранённых ключей.
135
137
 
136
- Отсутствующие файлы просто пропускаются, а значения из нижних уровней дополняют
137
- верхние. Если кредов нет вообще, сервер печатает, где искал, и что запустить.
138
+ `~/.config/mlspace-plugin/credentials-path.json` хранит только путь к выбранному
139
+ файлу: настройка через `--path` или `XDG_CONFIG_HOME` работает и после перезапуска
140
+ клиента с другим окружением. Повреждённый указатель или отсутствующий целевой файл
141
+ дают ошибку; другой аккаунт молча не подставляется.
138
142
 
139
143
  | Переменная | Обяз. | По умолчанию | Назначение |
140
144
  |---|:---:|---|---|
@@ -274,13 +278,14 @@ write-запросов подаются параметром `body: dict`; об
274
278
  ## Плагин: Codex, Claude Code и совместимые агенты
275
279
 
276
280
  [Поставка MLSpace](plugin/README.md) объединяет MCP-сервер и 12 скиллов.
277
- Архив релиза `mlspace-plugin-<версия>.zip` содержит точную версию сервера,
278
- общие скиллы и манифесты для загрузчиков Codex и Claude Code. Его установка
279
- не зависит от публикации `mlspace-plugin` в публичном PyPI.
280
-
281
- После распаковки и однократного `setup --config-only` через wheel из архива добавьте каталог релиза как
282
- marketplace клиента. [Команды установки и сборки](plugin/README.md).
283
- Ключи остаются в пользовательском конфиге вне плагина.
281
+ Обычная установка — `uvx mlspace-plugin@latest setup`: marketplace подключается
282
+ автоматически. Нативные клиенты управляют плагином `mlspace@mlspace` сами.
283
+ Манифест фиксирует точную версию runtime из PyPI вместе со скиллами.
284
+ Ключи и CA остаются в пользовательском конфиге вне кеша плагина.
285
+
286
+ Повторный `setup --force` обновляет сохранившиеся подключения мастера.
287
+ Собственного фонового обновления нет; политики автообновления клиентов мастер
288
+ не меняет. ZIP релиза содержит те же манифесты и скиллы, без вложенного wheel.
284
289
 
285
290
  Для других агентов предусмотрены Agent Plugins 1.0, Agent Skills и обычное
286
291
  MCP-подключение; поддержку конкретного загрузчика нужно проверять отдельно.
@@ -56,8 +56,10 @@ mlspace-plugin setup
56
56
  Мастер обнаруживает Claude Code, Codex и OpenCode, просит только Key ID и Key Secret
57
57
  с маской `*****`, предлагает поиск воркспейсов по имени/проекту/ID и множественный
58
58
  выбор. Проверяет API, сохраняет credentials в пользовательский `.env` с правами
59
- `0600`, подключает MCP и устанавливает все скиллы из пакета. Откройте новую сессию
60
- клиента; сервер запускается автоматически.
59
+ `0600`. Для Claude Code и Codex мастер добавляет marketplace этого репозитория
60
+ и устанавливает нативный плагин с MCP и скиллами. OpenCode получает MCP и скиллы
61
+ в собственном каталоге. Мастер проверяет запуск MCP; затем откройте новую сессию
62
+ клиента — сервер запускается автоматически.
61
63
 
62
64
  TLS использует системные доверенные CA. Для корпоративного PEM есть `--ca-file`:
63
65
  мастер сохраняет копию для последующих запусков. Ошибка TLS/сети останавливает
@@ -67,14 +69,14 @@ TLS использует системные доверенные CA. Для ко
67
69
  endpoint переиспользуются. Для замены ключей добавьте `--replace-credentials`.
68
70
  Для stage укажите `--base-url https://mlspace-stage.example.com`.
69
71
  Только credentials без подключения клиентов — `--config-only`.
70
- Если уже используете native plugin, выбирайте этот режим, чтобы не дублировать MCP.
72
+ Уже установленный нативный плагин из этого репозитория переиспользуется.
71
73
 
72
74
  Подробнее: [установка, SSH, сертификаты и повторная настройка](https://github.com/noesskeetit/mlspace-plugin/blob/main/INSTALL.md).
73
75
  Для разработки: `uv sync --extra dev` и `uv run pytest`.
74
76
 
75
77
  **Порядок поиска кредов** — от общего к частному, побеждает более конкретное:
76
78
 
77
- 1. `~/.config/mlspace-plugin/.env` — пользовательский конфиг, сюда пишет `setup`
79
+ 1. Файл, сохранённый `setup` (по умолчанию `~/.config/mlspace-plugin/.env`)
78
80
  2. файл из `MLSPACE_ENV_FILE` — выбран явно
79
81
  3. настоящие переменные окружения — бьют любой файл
80
82
 
@@ -82,8 +84,10 @@ endpoint переиспользуются. Для замены ключей до
82
84
  укажите его явно через `MLSPACE_ENV_FILE`, чтобы чужой репозиторий не мог
83
85
  подменить адрес API при использовании сохранённых ключей.
84
86
 
85
- Отсутствующие файлы просто пропускаются, а значения из нижних уровней дополняют
86
- верхние. Если кредов нет вообще, сервер печатает, где искал, и что запустить.
87
+ `~/.config/mlspace-plugin/credentials-path.json` хранит только путь к выбранному
88
+ файлу: настройка через `--path` или `XDG_CONFIG_HOME` работает и после перезапуска
89
+ клиента с другим окружением. Повреждённый указатель или отсутствующий целевой файл
90
+ дают ошибку; другой аккаунт молча не подставляется.
87
91
 
88
92
  | Переменная | Обяз. | По умолчанию | Назначение |
89
93
  |---|:---:|---|---|
@@ -223,13 +227,14 @@ write-запросов подаются параметром `body: dict`; об
223
227
  ## Плагин: Codex, Claude Code и совместимые агенты
224
228
 
225
229
  [Поставка MLSpace](plugin/README.md) объединяет MCP-сервер и 12 скиллов.
226
- Архив релиза `mlspace-plugin-<версия>.zip` содержит точную версию сервера,
227
- общие скиллы и манифесты для загрузчиков Codex и Claude Code. Его установка
228
- не зависит от публикации `mlspace-plugin` в публичном PyPI.
229
-
230
- После распаковки и однократного `setup --config-only` через wheel из архива добавьте каталог релиза как
231
- marketplace клиента. [Команды установки и сборки](plugin/README.md).
232
- Ключи остаются в пользовательском конфиге вне плагина.
230
+ Обычная установка — `uvx mlspace-plugin@latest setup`: marketplace подключается
231
+ автоматически. Нативные клиенты управляют плагином `mlspace@mlspace` сами.
232
+ Манифест фиксирует точную версию runtime из PyPI вместе со скиллами.
233
+ Ключи и CA остаются в пользовательском конфиге вне кеша плагина.
234
+
235
+ Повторный `setup --force` обновляет сохранившиеся подключения мастера.
236
+ Собственного фонового обновления нет; политики автообновления клиентов мастер
237
+ не меняет. ZIP релиза содержит те же манифесты и скиллы, без вложенного wheel.
233
238
 
234
239
  Для других агентов предусмотрены Agent Plugins 1.0, Agent Skills и обычное
235
240
  MCP-подключение; поддержку конкретного загрузчика нужно проверять отдельно.
@@ -7,11 +7,11 @@
7
7
  `uv lock` и `uv run python scripts/gen_plugin.py`. Обновите примеры имён wheel/ZIP
8
8
  в инструкциях, если версия присутствует в имени файла.
9
9
  2. Выполните проверки из `CONTRIBUTING.md` на Linux и macOS.
10
- 3. Соберите пакет (в командах ниже замените 0.2.2 на выпускаемую версию):
10
+ 3. Соберите пакет (в командах ниже замените 0.3.1 на выпускаемую версию):
11
11
 
12
12
  ```sh
13
- uv build --out-dir dist/release-0.2.2
14
- uv run python scripts/build_plugin.py --wheel dist/release-0.2.2/mlspace_plugin-0.2.2-py3-none-any.whl --output dist/plugin-release-0.2.2
13
+ uv build --out-dir dist/release-0.3.1
14
+ uv run python scripts/build_plugin.py --output dist/plugin-release-0.3.1
15
15
  ```
16
16
 
17
17
  4. Просмотрите содержимое wheel, sdist и ZIP. В них не должно быть credentials,
@@ -23,18 +23,24 @@ uv run python scripts/build_plugin.py --wheel dist/release-0.2.2/mlspace_plugin-
23
23
  `UV_PUBLISH_TOKEN` средствами вашего хранилища секретов, не аргументом команды:
24
24
 
25
25
  ```sh
26
- uv publish --trusted-publishing never dist/release-0.2.2/mlspace_plugin-0.2.2-py3-none-any.whl dist/release-0.2.2/mlspace_plugin-0.2.2.tar.gz
26
+ uv publish --trusted-publishing never dist/release-0.3.1/mlspace_plugin-0.3.1-py3-none-any.whl dist/release-0.3.1/mlspace_plugin-0.3.1.tar.gz
27
27
  ```
28
28
 
29
29
  6. Проверьте версию и SHA256 обоих файлов через PyPI JSON API; проверьте установку
30
- `uvx --from mlspace-plugin==0.2.2 mlspace-plugin --version` из нового кеша.
31
- ZIP и SHA256SUMS приложите к тому же релизу публичного Git-репозитория.
30
+ `uvx --from mlspace-plugin==0.3.1 mlspace-plugin --version` из нового кеша.
31
+ 7. Только после проверки точной версии в PyPI обновите рабочую ветку GitHub
32
+ marketplace и создайте тег релиза. До этого проверяйте изменения на отдельной
33
+ release-ветке или локальном Git marketplace: main не должен ссылаться на
34
+ отсутствующий пакет. ZIP и SHA256SUMS приложите к тому же релизу.
35
+ 8. В чистом HOME выполните публичный setup, проверьте source/version нативных
36
+ плагинов, MCP handshake и загрузку скиллов клиентами. Используйте тестовые
37
+ credentials и локальный HTTPS-стенд; не выполняйте записи в реальном tenant.
32
38
 
33
39
  Пакет не проверяет обновления в фоне. Для PyPI пользователь повторяет
34
40
  `uvx mlspace-plugin@latest setup --force`: обновляются сервер и неизменённые скиллы.
35
- Native plugin из ZIP устанавливается отдельно через менеджер плагинов клиента;
36
- текущий `setup` регистрирует MCP напрямую и копирует скиллы. Не обещайте ему
37
- автоматическое подключение marketplace или одинаковое автообновление во всех клиентах.
41
+ Claude Code и Codex получают нативный плагин через marketplace этого репозитория;
42
+ OpenCode — MCP и скиллы в собственном каталоге. Политики автообновления клиентов
43
+ не меняются. Не обещайте одинаковое фоновое обновление во всех клиентах.
38
44
 
39
45
  Перед открытием существующего приватного Git-репозитория проверьте также его
40
46
  историю. Проверка wheel и sdist не является проверкой старых Git-коммитов.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mlspace",
3
- "version": "0.2.2",
3
+ "version": "0.3.1",
4
4
  "description": "Cloud.ru MLSpace: training jobs, inference, notebooks, data transfer, registry and compute catalog — an MCP server plus skills.",
5
5
  "author": {
6
6
  "name": "Cloud.ru"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mlspace",
3
- "version": "0.2.2",
3
+ "version": "0.3.1",
4
4
  "description": "Cloud.ru MLSpace: training jobs, inference, notebooks, data transfer, registry and compute catalog — an MCP server plus skills.",
5
5
  "author": {
6
6
  "name": "Cloud.ru"
@@ -5,7 +5,7 @@
5
5
  "command": "uvx",
6
6
  "args": [
7
7
  "--from",
8
- "${CLAUDE_PLUGIN_ROOT}/server/mlspace_plugin-0.2.2-py3-none-any.whl",
8
+ "mlspace-plugin==0.3.1",
9
9
  "mlspace-plugin",
10
10
  "--transport",
11
11
  "stdio"
@@ -0,0 +1,67 @@
1
+ # MLSpace: MCP и скиллы одним плагином
2
+
3
+ Для macOS и Linux, включая SSH:
4
+
5
+ ```bash
6
+ uvx mlspace-plugin@latest setup
7
+ ```
8
+
9
+ Мастер принимает два ключа, предлагает поиск и выбор workspace, добавляет
10
+ marketplace этого репозитория и устанавливает `mlspace@mlspace` в Claude Code
11
+ или Codex. В OpenCode подключает MCP напрямую и устанавливает скиллы в его
12
+ собственный каталог. Затем проверяет скиллы и запуск MCP.
13
+
14
+ Откройте новую сессию клиента. Самостоятельно запускать сервер не требуется.
15
+ Подробнее: [установка](../INSTALL.md), [инструкция агенту](../INSTALL_AGENT.md).
16
+
17
+ ## Состав
18
+
19
+ - 12 скиллов в `skills/`;
20
+ - манифесты Agent Plugins, Claude Code и Codex;
21
+ - команда MCP `uvx --from mlspace-plugin==<версия> mlspace-plugin --transport stdio`.
22
+
23
+ Версия сервера из PyPI совпадает с версией плагина. ZIP релиза содержит каталог
24
+ `plugin/`, marketplace-манифесты, README, LICENSE и SHA256SUMS. Вложенного wheel
25
+ нет: для запуска нужен доступ к PyPI. Исходники скиллов находятся в одном месте —
26
+ `plugin/skills`; их копиями в кеше управляют нативные клиенты.
27
+
28
+ Ключи, CA и указатель на credentials находятся вне кеша плагина. Изменение
29
+ `XDG_CONFIG_HOME` при запуске клиента не теряет выбранный файл настроек.
30
+
31
+ ## Повторная установка и обновление
32
+
33
+ ```bash
34
+ uvx mlspace-plugin@latest setup --force
35
+ ```
36
+
37
+ Обновляются сохранившиеся подключения мастера. Уже установленная целевая версия
38
+ не переустанавливается. Собственного фонового обновления нет; политики клиентов
39
+ мастер не меняет. Не редактируйте нативный кеш плагина: обновление заменяет его.
40
+
41
+ ## Ручная диагностика нативных клиентов
42
+
43
+ Обычно эти команды не нужны — их выполняет setup. Для проверки состояния:
44
+
45
+ ```bash
46
+ claude plugin marketplace list --json
47
+ claude plugin list --json
48
+ codex plugin marketplace list --json
49
+ codex plugin list --json
50
+ ```
51
+
52
+ Marketplace `mlspace` должен ссылаться на
53
+ `https://github.com/noesskeetit/mlspace-plugin.git`, а плагин `mlspace@mlspace`
54
+ должен быть включён. Если CLI не поддерживает команды plugin, обновите клиент.
55
+ Прямая MCP-регистрация с тем же именем может конфликтовать с нативным плагином;
56
+ мастер сообщает об этом до ввода ключей и не удаляет пользовательский конфиг.
57
+
58
+ ## Сборка
59
+
60
+ ```bash
61
+ uv run python scripts/gen_plugin.py --check
62
+ uv build
63
+ uv run python scripts/build_plugin.py
64
+ ```
65
+
66
+ ZIP появится в `dist/plugins/`. Генератор проверяет манифесты плагина и оба
67
+ marketplace-манифеста в корне репозитория. Порядок публикации — в [RELEASE.md](../RELEASE.md).
@@ -6,14 +6,11 @@
6
6
  "command": "uvx",
7
7
  "args": [
8
8
  "--from",
9
- "${PLUGIN_ROOT}/server/mlspace_plugin-0.2.2-py3-none-any.whl",
9
+ "mlspace-plugin==0.3.1",
10
10
  "mlspace-plugin",
11
11
  "--transport",
12
12
  "stdio"
13
- ],
14
- "env": {
15
- "MLSPACE_ENV_FILE": "${PLUGIN_DATA}/.env"
16
- }
13
+ ]
17
14
  }
18
15
  }
19
16
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
3
3
  "name": "mlspace",
4
- "version": "0.2.2",
4
+ "version": "0.3.1",
5
5
  "description": "Cloud.ru MLSpace: training jobs, inference, notebooks, data transfer, registry and compute catalog — an MCP server plus skills.",
6
6
  "author": {
7
7
  "name": "Cloud.ru"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mlspace-plugin"
3
- version = "0.2.2"
3
+ version = "0.3.1"
4
4
  description = "Cloud.ru MLSpace plugin: MCP server, agent skills and setup"
5
5
  keywords = ["mlspace", "mcp", "agent-skills", "cloudru"]
6
6
  classifiers = [
@@ -50,6 +50,7 @@ packages = ["src/mlspace_mcp"]
50
50
 
51
51
  [tool.hatch.build.targets.sdist]
52
52
  include = [
53
+ "/.agents/plugins/marketplace.json", "/.claude-plugin/marketplace.json",
53
54
  "/src", "/tests", "/plugin", "/scripts/gen_plugin.py", "/scripts/build_plugin.py",
54
55
  "/scripts/gen_body_schemas.py", "/scripts/demo_multi_workspace.py",
55
56
  "/scripts/mcp_call.py", "/scripts/serve_stdio.sh", "/scripts/serve_stdio_dryrun.sh",