@nitra/cursor 3.18.0 → 3.18.1

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,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## [3.18.1] - 2026-06-03
4
+
5
+ ### Fixed
6
+
7
+ - python: applies-гейт пропускає правило без pyproject.toml — позбулися хибного зауваження rego package_json у не-Python репо
8
+
3
9
  ## [3.18.0] - 2026-06-03
4
10
 
5
11
  ### Added
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nitra/cursor",
3
- "version": "3.18.0",
3
+ "version": "3.18.1",
4
4
  "description": "CLI для завантаження cursor-правил (префікс n-) у локальний репозиторій",
5
5
  "keywords": [
6
6
  "cli",
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Applies-гейт правила `python` (python.mdc): правило застосовне, лише якщо в корені є
3
+ * `pyproject.toml`. Інакше CLI пропускає всі concerns (JS і policy) — інакше rego
4
+ * `python/package_json` хибно вимагає `scripts.lint-python` навіть для не-Python репо.
5
+ *
6
+ * JS тут — гейт на наявність кореневого `pyproject.toml`. Подальші FS-перевірки
7
+ * (`uv.lock`, `package.json`, `lint-python.yml`, заборона Poetry) — у `tooling.mjs`.
8
+ */
9
+ import { existsSync } from 'node:fs'
10
+ import { join } from 'node:path'
11
+
12
+ import { createCheckReporter } from '../../../scripts/lib/check-reporter.mjs'
13
+
14
+ /**
15
+ * @param {string} [cwd] корінь репозиторію (`process.cwd()` у звичайному прогоні)
16
+ * @returns {Promise<boolean>} `true` — правило застосовне; `false` — пропустити
17
+ */
18
+ export function applies(cwd = process.cwd()) {
19
+ return Promise.resolve(existsSync(join(cwd, 'pyproject.toml')))
20
+ }
21
+
22
+ /**
23
+ * Друкує короткий context-pass — самі перевірки виконують інші concerns.
24
+ * @returns {number} 0 — все ок (фактичні порушення повертають інші концерни)
25
+ */
26
+ export function check() {
27
+ const reporter = createCheckReporter()
28
+ reporter.pass('pyproject.toml знайдено в корені — застосовую python.mdc')
29
+ return reporter.getExitCode()
30
+ }
@@ -2,12 +2,15 @@
2
2
  * Перевіряє FS-вимоги правила python.mdc для Python-проєктів на uv.
3
3
  *
4
4
  * **Що тут лишилося** (FS-existence — не покривається conftest):
5
- * - наявність `pyproject.toml` у корені (тригер правила);
6
5
  * - наявність `uv.lock` поруч (uv-проєкт коммітить lock-файл);
7
6
  * - наявність кореневого `package.json` (для `bun run lint-python`);
8
7
  * - наявність `.github/workflows/lint-python.yml`;
9
8
  * - заборона Poetry-артефактів `poetry.lock` / `poetry.toml` (міграція на uv).
10
9
  *
10
+ * Гейт на `pyproject.toml` робить `applies.mjs` — CLI пропускає правило цілком
11
+ * без нього. Захисний early-return лишається тут лише для прямого виклику
12
+ * `check()` (тести/standalone) без `applies.mjs`-гейту.
13
+ *
11
14
  * **Що покрила Rego** (`npx \@nitra/cursor fix python`):
12
15
  * - `python/pyproject_toml/` — заборона `[tool.poetry]` + вимога PEP 621 `[project].name/version`;
13
16
  * - `python/package_json/` — наявність скрипта `lint-python` у `package.json`;
@@ -31,10 +34,8 @@ export function check(cwd = process.cwd()) {
31
34
  const { pass, fail } = reporter
32
35
 
33
36
  if (!existsSync(join(cwd, 'pyproject.toml'))) {
34
- pass('pyproject.toml не знайдено в корені — правило python не застосовне')
35
37
  return reporter.getExitCode()
36
38
  }
37
- pass('pyproject.toml існує — застосовую python.mdc')
38
39
 
39
40
  if (existsSync(join(cwd, 'uv.lock'))) {
40
41
  pass('uv.lock є')