@nitra/cursor 5.0.3 → 5.2.0

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 (206) hide show
  1. package/.claude-template/settings.template.json +22 -0
  2. package/.pi-template/extensions/n-cursor-adr/docs/index.md +15 -9
  3. package/CHANGELOG.md +18 -1
  4. package/bin/n-cursor.js +73 -16
  5. package/docs/stryker.config.md +6 -0
  6. package/docs/vitest.config.md +6 -0
  7. package/lib/docs/llm.md +29 -0
  8. package/lib/docs/omlx.md +32 -0
  9. package/lib/llm.mjs +137 -0
  10. package/lib/models.mjs +9 -1
  11. package/lib/omlx.mjs +147 -0
  12. package/package.json +1 -1
  13. package/rules/abie/docs/fix.md +6 -0
  14. package/rules/abie/js/docs/applies.md +6 -0
  15. package/rules/abie/js/docs/env_dns.md +25 -22
  16. package/rules/abie/js/docs/firebase_hosting.md +6 -0
  17. package/rules/abie/js/docs/hc_pairing.md +21 -25
  18. package/rules/abie/js/docs/ua_http_route.md +27 -19
  19. package/rules/abie/js/docs/ua_node_selector.md +24 -19
  20. package/rules/abie/lib/docs/enabled.md +13 -7
  21. package/rules/abie/lib/docs/env-dns.md +9 -3
  22. package/rules/abie/lib/docs/hc-yaml.md +6 -0
  23. package/rules/abie/lib/docs/http-route.md +6 -0
  24. package/rules/abie/lib/docs/k8s-tree.md +6 -0
  25. package/rules/abie/lib/docs/kustomization-patches.md +6 -0
  26. package/rules/abie/lib/docs/overlay-paths.md +6 -0
  27. package/rules/abie/lib/docs/yaml.md +6 -0
  28. package/rules/adr/docs/fix.md +6 -0
  29. package/rules/adr/js/docs/hooks.md +29 -244
  30. package/rules/bun/docs/fix.md +6 -0
  31. package/rules/bun/js/docs/layout.md +37 -375
  32. package/rules/capacitor/docs/fix.md +22 -108
  33. package/rules/capacitor/js/docs/platforms.md +62 -268
  34. package/rules/changelog/docs/fix.md +6 -0
  35. package/rules/changelog/lib/docs/package-manifest.md +6 -0
  36. package/rules/ci4/docs/fix.md +23 -165
  37. package/rules/ci4/js/docs/marksman_config.md +9 -1
  38. package/rules/docker/docs/fix.md +6 -0
  39. package/rules/docker/js/docs/lint.md +55 -239
  40. package/rules/docker/lib/docs/docker-hadolint.md +6 -0
  41. package/rules/docker/lib/docs/docker-mirror.md +6 -0
  42. package/rules/docker/lib/docs/docker-native-addon.md +6 -0
  43. package/rules/docker/lib/docs/docker-nginx-user.md +6 -0
  44. package/rules/docker/lint/docs/lint.md +9 -1
  45. package/rules/efes/docs/fix.md +6 -0
  46. package/rules/ga/lint/docs/lint.md +6 -0
  47. package/rules/graphql/docs/fix.md +6 -0
  48. package/rules/graphql/lib/docs/graphql-gql-scan.md +6 -0
  49. package/rules/image-avif/docs/fix.md +6 -0
  50. package/rules/image-avif/js/docs/avif_generation.md +6 -0
  51. package/rules/js-bun-db/lib/docs/bun-sql-scan.md +9 -3
  52. package/rules/js-bun-redis/lib/docs/redis-imports.md +6 -0
  53. package/rules/js-lint/js/docs/utils_imports.md +6 -0
  54. package/rules/js-lint-ci/docs/fix.md +7 -1
  55. package/rules/js-mssql/docs/fix.md +6 -0
  56. package/rules/js-mssql/lib/docs/mssql-pool-scan.md +6 -0
  57. package/rules/js-run/docs/fix.md +6 -0
  58. package/rules/js-run/lib/docs/bunyan-imports.md +6 -0
  59. package/rules/js-run/lib/docs/check-env-scan.md +6 -0
  60. package/rules/js-run/lib/docs/conn-file-rules.md +6 -0
  61. package/rules/js-run/lib/docs/conn-imports-scan.md +6 -0
  62. package/rules/js-run/lib/docs/promise-settimeout-scan.md +6 -0
  63. package/rules/js-run/lib/docs/temporal-scan.md +6 -0
  64. package/rules/k8s/docs/fix.md +6 -0
  65. package/rules/k8s/lint/docs/lint.md +6 -0
  66. package/rules/nginx-default-tpl/docs/fix.md +6 -0
  67. package/rules/npm-module/js/docs/header_doc_pointer.md +7 -0
  68. package/rules/npm-module/js/header_doc_pointer.mjs +2 -8
  69. package/rules/php/docs/fix.md +6 -0
  70. package/rules/php/lint/docs/lint.md +6 -0
  71. package/rules/python/docs/fix.md +6 -0
  72. package/rules/python/lint/docs/lint.md +6 -0
  73. package/rules/rego/lint/docs/lint.md +6 -0
  74. package/rules/release/docs/change.md +6 -0
  75. package/rules/release/docs/fix.md +6 -0
  76. package/rules/release/docs/release.md +6 -0
  77. package/rules/release/lib/docs/aggregate.md +6 -0
  78. package/rules/release/lib/docs/change-file.md +6 -0
  79. package/rules/release/lib/docs/fallback.md +6 -0
  80. package/rules/rust/lib/docs/has-cargo-toml.md +6 -0
  81. package/rules/security/docs/fix.md +7 -1
  82. package/rules/security/js/docs/lint.md +6 -0
  83. package/rules/style-lint/docs/fix.md +6 -0
  84. package/rules/tauri/docs/fix.md +6 -0
  85. package/rules/test/docs/fix.md +6 -0
  86. package/rules/test/js/data/stryker_config/docs/stryker-vue-macros-ignorer.md +6 -0
  87. package/rules/test/js/data/stryker_config/docs/stryker.config.baseline.md +6 -0
  88. package/rules/test/js/data/stryker_config/docs/stryker.config.vue.baseline.md +6 -0
  89. package/rules/test/js/data/vitest_config/docs/vitest.config.baseline.md +6 -0
  90. package/rules/text/docs/fix.md +6 -0
  91. package/rules/text/lint/docs/lint.md +6 -0
  92. package/rules/text/lint/docs/run-dotenv-linter.md +6 -0
  93. package/rules/text/lint/docs/run-shellcheck.md +6 -0
  94. package/rules/text/lint/docs/run-v8r.md +6 -0
  95. package/rules/vue/lib/docs/vue-forbidden-imports.md +6 -0
  96. package/scripts/coverage-classify/cache.mjs +1 -1
  97. package/scripts/coverage-classify/docs/apply.md +6 -0
  98. package/scripts/coverage-classify/docs/cache.md +6 -0
  99. package/scripts/coverage-classify/docs/prompt.md +6 -0
  100. package/scripts/coverage-classify/docs/verdict-schema.md +6 -0
  101. package/scripts/coverage-classify/index.mjs +24 -15
  102. package/scripts/coverage-classify/prompt.mjs +1 -1
  103. package/scripts/coverage-fix-extract.mjs +1 -1
  104. package/scripts/coverage-fix.mjs +2 -1
  105. package/scripts/docs/auto-skills.md +6 -0
  106. package/scripts/docs/build-agents-commands.md +7 -1
  107. package/scripts/docs/cli-entry.md +6 -0
  108. package/scripts/docs/coverage-fix-extract.md +6 -0
  109. package/scripts/docs/coverage-fix.md +6 -0
  110. package/scripts/docs/ensure-nitra-cursor-dev-dependencies.md +6 -0
  111. package/scripts/docs/lint-cli.md +6 -0
  112. package/scripts/docs/post-tool-use-fix.md +6 -0
  113. package/scripts/docs/rename-yaml-extensions.md +6 -0
  114. package/scripts/docs/skills-cli.md +6 -0
  115. package/scripts/docs/sync-setup-bun-deps-action.md +6 -0
  116. package/scripts/docs/upgrade-nitra-cursor-and-install.md +6 -0
  117. package/scripts/docs/worktree-cli.md +6 -0
  118. package/scripts/lib/docs/assert-project-root.md +6 -0
  119. package/scripts/lib/docs/check-mdc-template-refs.md +6 -0
  120. package/scripts/lib/docs/check-reporter.md +6 -0
  121. package/scripts/lib/docs/diff-added-lines.md +6 -0
  122. package/scripts/lib/docs/discover-check-rules-from-cursor.md +6 -0
  123. package/scripts/lib/docs/discover-checkable-rules.md +6 -0
  124. package/scripts/lib/docs/ensure-tool.md +6 -0
  125. package/scripts/lib/docs/generated-markdown.md +6 -0
  126. package/scripts/lib/docs/gha-workflow.md +6 -0
  127. package/scripts/lib/docs/inline-template-links.md +6 -0
  128. package/scripts/lib/docs/list-rule-ids.md +6 -0
  129. package/scripts/lib/docs/load-cursor-config.md +6 -0
  130. package/scripts/lib/docs/mirror-parity.md +6 -0
  131. package/scripts/lib/docs/read-n-cursor-config-lite.md +6 -0
  132. package/scripts/lib/docs/resolve-target-files.md +6 -0
  133. package/scripts/lib/docs/root-notice.md +6 -0
  134. package/scripts/lib/docs/rule-meta-helpers.md +6 -0
  135. package/scripts/lib/docs/rule-meta.md +6 -0
  136. package/scripts/lib/docs/run-conftest-batch.md +6 -0
  137. package/scripts/lib/docs/run-lint-step.md +6 -0
  138. package/scripts/lib/docs/run-rule-cli.md +6 -0
  139. package/scripts/lib/docs/run-rule.md +6 -0
  140. package/scripts/lib/docs/run-standard-lint.md +6 -0
  141. package/scripts/lib/docs/run-standard-rule.md +6 -0
  142. package/scripts/lib/docs/skill-meta.md +6 -0
  143. package/scripts/lib/docs/template.md +6 -0
  144. package/scripts/lib/docs/timing-summary.md +6 -0
  145. package/scripts/lib/docs/workspaces.md +6 -0
  146. package/scripts/lib/docs/worktree-notice.md +6 -0
  147. package/scripts/lib/docs/worktree.md +6 -0
  148. package/scripts/lib/mirror-parity.mjs +1 -1
  149. package/scripts/lib/root-notice.mjs +1 -1
  150. package/scripts/lib/worktree-notice.mjs +5 -5
  151. package/scripts/lib/worktree.mjs +1 -1
  152. package/scripts/sync-claude-config.mjs +3 -0
  153. package/scripts/utils/docs/ast-scan-utils.md +6 -0
  154. package/scripts/utils/docs/ensure-gitignore-entries.md +6 -0
  155. package/scripts/utils/docs/find-package-json-paths.md +6 -0
  156. package/scripts/utils/docs/lock-cache-dir.md +6 -0
  157. package/scripts/utils/docs/pass.md +6 -0
  158. package/scripts/utils/docs/resolve-cargo-manifest.md +6 -0
  159. package/scripts/utils/docs/resolve-cmd.md +6 -0
  160. package/scripts/utils/docs/resolve-js-root.md +6 -0
  161. package/scripts/utils/docs/test-helpers.md +6 -0
  162. package/scripts/utils/docs/walk-cache.md +6 -0
  163. package/scripts/utils/docs/walkDir.md +6 -0
  164. package/scripts/utils/docs/worktree-fingerprint.md +6 -0
  165. package/scripts/utils/resolve-js-root.mjs +1 -1
  166. package/skills/doc-aggregate/SKILL.md +129 -0
  167. package/skills/doc-aggregate/js/docgen-ignore.mjs +9 -0
  168. package/skills/{docgen → doc-aggregate}/js/docgen-scan.mjs +22 -67
  169. package/skills/doc-aggregate/js/docs/docgen-ignore.md +21 -0
  170. package/skills/doc-files/SKILL.md +100 -0
  171. package/skills/doc-files/js/docgen-crc.mjs +164 -0
  172. package/skills/{docgen → doc-files}/js/docgen-extract-anchors.mjs +24 -15
  173. package/skills/{docgen → doc-files}/js/docgen-extract.mjs +15 -9
  174. package/skills/doc-files/js/docgen-files-batch.mjs +181 -0
  175. package/skills/doc-files/js/docgen-gen.mjs +291 -0
  176. package/skills/{docgen → doc-files}/js/docgen-prompts.mjs +43 -40
  177. package/skills/doc-files/js/docgen-scan.mjs +298 -0
  178. package/skills/doc-files/js/docs/docgen-crc.md +32 -0
  179. package/skills/doc-files/js/docs/docgen-extract-anchors.md +27 -0
  180. package/skills/doc-files/js/docs/docgen-extract.md +29 -0
  181. package/skills/doc-files/js/docs/docgen-files-batch.md +25 -0
  182. package/skills/doc-files/js/docs/docgen-gen.md +30 -0
  183. package/skills/doc-files/js/docs/docgen-prompts.md +32 -0
  184. package/skills/doc-files/js/docs/docgen-scan.md +25 -0
  185. package/skills/doc-files/meta.json +1 -0
  186. package/skills/fix/js/docs/llm-worker.md +6 -0
  187. package/skills/fix/js/docs/orchestrator.md +6 -0
  188. package/skills/fix/js/llm-worker.mjs +23 -14
  189. package/skills/fix/js/orchestrator.mjs +1 -1
  190. package/skills/start-check/js/check.mjs +5 -3
  191. package/skills/start-check/js/docs/check.md +6 -0
  192. package/skills/docgen/SKILL.md +0 -224
  193. package/skills/docgen/bench/etalon/firebase_hosting.md +0 -19
  194. package/skills/docgen/bench/etalon/k8s-tree.md +0 -24
  195. package/skills/docgen/bench/etalon/overlay-paths.md +0 -24
  196. package/skills/docgen/js/docgen-batch-omlx.mjs +0 -82
  197. package/skills/docgen/js/docgen-batch.mjs +0 -95
  198. package/skills/docgen/js/docgen-compare-pi-vs-direct.mjs +0 -95
  199. package/skills/docgen/js/docgen-gen.mjs +0 -339
  200. package/skills/docgen/js/docs/docgen-extract.md +0 -28
  201. package/skills/docgen/js/docs/docgen-gen.md +0 -41
  202. package/skills/docgen/js/docs/docgen-ignore.md +0 -24
  203. package/skills/docgen/js/docs/docgen-prompts.md +0 -24
  204. package/skills/docgen/js/docs/docgen-scan.md +0 -48
  205. /package/skills/{docgen → doc-aggregate}/meta.json +0 -0
  206. /package/skills/{docgen → doc-files}/js/docgen-ignore.mjs +0 -0
@@ -1,3 +1,9 @@
1
+ ---
2
+ docgen:
3
+ source: npm/rules/abie/js/applies.mjs
4
+ crc: f5b6777a
5
+ ---
6
+
1
7
  # applies.mjs
2
8
 
3
9
  ## Огляд
@@ -1,32 +1,35 @@
1
+ ---
2
+ docgen:
3
+ source: npm/rules/abie/js/env_dns.mjs
4
+ crc: f2aff16b
5
+ score: 100
6
+ ---
7
+
1
8
  # env_dns.mjs
2
9
 
3
10
  ## Огляд
4
11
 
5
- Перевірка-чек правила `abie.mdc`: сканує env-файли abie й гарантує, що внутрішньокластерні URL у них вказують на правильний GKE-кластер відповідно до імені файла. Це захист від типової помилки, коли `dev`-конфіг випадково посилається на `ua`-кластер (або навпаки). Якщо в репозиторії немає abie env-файлів, перевірка мовчки проходить.
12
+ Функція check виконує перевірку відповідності вхідних даних визначеному контракту. Вона забезпечує ізоляцію логіки перевірки, перевіряючи виконання необхідних умов перед подальшою обробкою. Результати перевірки передаються через маркер (abie.mdc). Функція гарантує, що помилки не будуть прокидані назовні.
6
13
 
7
14
  ## Поведінка
8
15
 
9
- 1. Завантажує перелік ігнорованих шляхів із cursor-конфігу й збирає всі abie env-файли в репозиторії. abie env-файлом вважається файл із basename `dev.env` або `ua.env` (опційно з провідною крапкою — `.dev.env`, `.ua.env`).
10
- 2. Локальний `.env` без імені кластера (файл розробника) та інші env-файли (наприклад `production.env`) під перевірку не підпадають.
11
- 3. Якщо жодного abie env-файла не знайдено — фіксує `pass` із поясненням, що перевірку пропущено, і завершується успішно.
12
- 4. Для кожного знайденого файла визначає очікуваний кластер за іменем:
13
- - `dev.env` кластер `abie-dev.internal`, namespace мусить починатися з `dev-`.
14
- - `ua.env` кластер `abie-ua.internal`, namespace мусить починатися з `ua-`.
15
- 5. Читає вміст файла. Якщо файл не читається — фіксує `fail` із текстом помилки й переходить до наступного.
16
- 6. У вмісті шукає всі URL виду `http://<svc>.<ns>.svc.<dns>` (з опційним портом і шляхом) і для кожного перевіряє: частина `<dns>` збігається з очікуваним DNS кластера, а namespace `<ns>` починається з очікуваного префікса.
17
- 7. Один невідповідний URL може дати дві окремі скарги (невірний DNS і невірний namespace). Той самий URL, що трапився у двох змінних, рахується двічі.
18
- 8. Якщо у файлі немає невідповідностей `pass`; інакше кожне порушення стає окремим `fail` із зазначенням файла, проблемного URL і очікуваного значення.
19
-
20
- Приклад порушення для `dev.env`: URL `http://api.ua-core.svc.abie-ua.internal` дасть скарги, бо очікувався DNS `abie-dev.internal` і namespace-префікс `dev-`.
21
-
22
- ## Публічний API
23
-
24
- `check(cwd)` — запускає перевірку від кореня репозиторію (за замовчуванням поточна робоча директорія) і повертає код виходу: `0`, якщо порушень немає, інакше ненульовий. Це стандартна точка інтеграції чек-механізму правил.
16
+ Алгоритм перевірки конфігурації середовища.
17
+
18
+ 1. Ініціалізація механізму звітування.
19
+ 2. Завантаження шляхів для ігнорування.
20
+ 3. Збір файлів конфігурації середовища.
21
+ 4. Перевірка наявності файлів. Якщо файлів не знайдено, перевірка пропущено.
22
+ 5. Ітерація по кожному знайденому файлу конфігурації.
23
+ 6. Для кожного файлу обчислюється відносний шлях.
24
+ 7. Визначається назва середовища на основі імені файлу.
25
+ 8. Зчитується вміст файлу. У разі помилки читання вмісту, генерується помилка та перевірка переходить до наступного файлу.
26
+ 9. Вміст файлу підлягає валідації внутрішніх посилань.
27
+ 10. Якщо валідація повертає помилки, генерується помилка, що вказує на невідповідність внутрішніх URL для визначеного середовища (abie.mdc).
28
+ 11. Якщо валідація успішна, генерується повідомлення про успішну перевірку.
29
+ 12. Повернення фінального коду виходу звіту.
25
30
 
26
31
  ## Гарантії поведінки
27
32
 
28
- - Read-only: файли лише читаються, нічого не змінюється й не створюється.
29
- - Fail-safe за відсутності даних: репозиторій без abie env-файлів — це успіх, а не помилка.
30
- - Нечитабельний файл не валить весь прогон: він стає окремою скаргою, решта файлів перевіряються далі.
31
- - Файли без розпізнаного імені кластера пропускаються без помилки.
32
- - Файли обробляються в детермінованому (відсортованому) порядку, тож вивід стабільний між запусками.
33
+ - Read-only: файл не виконує операцій запису у файлову систему.
34
+ - Перехоплює помилки і не пропускає винятків назовні (fail-safe).
35
+ - Не звертається до мережі.
@@ -1,3 +1,9 @@
1
+ ---
2
+ docgen:
3
+ source: npm/rules/abie/js/firebase_hosting.mjs
4
+ crc: 3b2459a8
5
+ ---
6
+
1
7
  # firebase_hosting.mjs
2
8
 
3
9
  ## Огляд
@@ -1,35 +1,31 @@
1
+ ---
2
+ docgen:
3
+ source: npm/rules/abie/js/hc_pairing.mjs
4
+ crc: 5627bda6
5
+ score: 100
6
+ ---
7
+
1
8
  # hc_pairing.mjs
2
9
 
3
10
  ## Огляд
4
11
 
5
- Перевірка правила abie: для кожного каталогу в дереві `k8s/`, що містить маніфест `kind: Deployment`, поруч обовʼязково має лежати файл `hc.yaml` із коректним modeline `$schema`. Файл JS-частина правила: він відповідає лише за FS-парність (Deployment hc.yaml) та перший рядок-modeline. Структурну валідацію самого `HealthCheckPolicy` (apiVersion, requestPath, port, targetRef із суфіксом `-hl`) виконує окремий Rego-механізм через CLI і тут не дублюється.
12
+ Модуль забезпечує валідацію даних відповідно до визначеного контракту. Функція check є публічною і є Read-only. Модуль гарантує внутрішню цілісність стану системи через механізм fail-safe, який запобігає виходу з ладу при помилках. Робота модуля стосується даних, визначених у (abie.mdc).
6
13
 
7
14
  ## Поведінка
8
15
 
9
- 1. Завантажує перелік ігнорованих шляхів із конфігурації cursor і збирає всі `.yaml`/`.yml` файли під сегментом `k8s/`.
10
- 2. Визначає множину каталогів, де серед цих файлів зустрічається хоча б один `kind: Deployment`.
11
- 3. Якщо Deployment-каталогів немає перевірку повністю пропускає з повідомленням-pass і завершується успішно.
12
- 4. Інакше для кожного Deployment-каталогу відсортованому порядку) перевіряє сусідній `hc.yaml`:
13
- - файлу немає поруч fail з вимогою додати `HealthCheckPolicy`;
14
- - файл не вдалося прочитати fail із текстом помилки читання;
15
- - файл є перевіряє його modeline.
16
- 5. Modeline валідний лише тоді, коли перший рядок файлу — `# yaml-language-server: $schema=…` із точним очікуваним URL CRD-схеми (`networking.gke.io/healthcheckpolicy_v1.json`). Порожній перший рядок, відсутність modeline або інший URL → fail.
17
- 6. Підсумковий exit-код формується з накопичених pass/fail: 0, якщо всіх правил дотримано.
18
-
19
- Очікуваний перший рядок `hc.yaml`:
20
-
21
- ```
22
- # yaml-language-server: $schema=https://datreeio.github.io/CRDs-catalog/networking.gke.io/healthcheckpolicy_v1.json
23
- ```
24
-
25
- ## Де використовується
26
-
27
- Це check-модуль правила abie (`abie.mdc`) у складі lint-набору cursor. Точка інтеграції — асинхронний `check(cwd)`, який повертає exit-код; його викликає механізм запуску перевірок для кореня репозиторію.
16
+ 1. Запускається перевірка.
17
+ 2. Завантажується конфігурація пропусків шляхів.
18
+ 3. Зводяться всього список файлів Kubernetes YAML.
19
+ 4. Збираються директорії розгортань на основі знайдених YAML файлів.
20
+ 5. Перевіряється, чи існує хоча б одна директорія розгортань. Якщо директорій немає, видається повідомлення про пропуск перевірки.
21
+ 6. Якщо директорії розгортань знайдені, видається повідомлення про успішне знаходження директорій для подальшої перевірки.
22
+ 7. Для кожної знайденої директорії перевіряється наявність файлу hc.yaml у відповідній директорії. Якщо файл відсутній, видається повідомлення про помилку, і перевірка для цього елемента пропускається.
23
+ 8. Для кожного знайденого файлу hc.yaml відбувається спроба прочитати його вміст. У разі помилки читання, видається повідомлення про невдачу.
24
+ 9. Проводиться валідація прочитаного вмісту відповідно до моделіне (abie.mdc). У разі успішної валідації, видається повідомлення про успіх. У разі невдачі, видається повідомлення про помилку валідації.
25
+ 10. Повертається код виходу перевірки.
28
26
 
29
27
  ## Гарантії поведінки
30
28
 
31
- - Read-only: модуль лише читає файлову систему й нічого не змінює.
32
- - Fail-safe для порожнього дерева: відсутність Deployment-маніфестів трактується як успіх, а не помилка.
33
- - Помилка читання конкретного `hc.yaml` не зупиняє прогон — вона фіксується як окремий fail, а перевірка решти каталогів триває.
34
- - Каталог `.github/` свідомо виключений зі збору YAML (належить іншому правилу), як і шляхи з cursor-ignore.
35
- - Зіставлення modeline точне: будь-яке відхилення URL чи формату першого рядка дає зрозуміле повідомлення з посиланням на `abie.mdc`.
29
+ - Read-only: файл не виконує операцій запису у файлову систему.
30
+ - Перехоплює помилки і не пропускає винятків назовні (fail-safe).
31
+ - Не звертається до мережі.
@@ -1,28 +1,36 @@
1
- # ua_http_route
1
+ ---
2
+ docgen:
3
+ source: npm/rules/abie/js/ua_http_route.mjs
4
+ crc: d86624c8
5
+ score: 100
6
+ ---
7
+
8
+ # ua_http_route.mjs
2
9
 
3
10
  ## Огляд
4
11
 
5
- Перевірка правила `abie.mdc`, що валідує наявність і коректність inline-patch `HTTPRoute` для `ua`-overlay у Vite-пакетах Kubernetes-маніфестів. Спрацьовує лише для пакетів, які мають `vite.config.{js,mjs,ts}` для решти перевірка нейтральна (passthrough). Запускається як CLI-check і повертає код виходу для CI.
12
+ Файл надає публічний інструмент `check` для перевірки внутрішнього стану даних. Функція працює у режимі fail-safe, перехоплюючи помилки виконання на рівні системи, щоб запобігти аварійним зупинкам. Функція використовує кешування даних у межах поточного прогону.
6
13
 
7
14
  ## Поведінка
8
15
 
9
- 1. Завантажує перелік ігнорованих шляхів з cursor-конфігу та обходить дерево `k8s/` репозиторію, збираючи всі YAML-маніфести.
10
- 2. Відбирає серед них файли `ua/kustomization.yaml`. Якщо таких немає — фіксує успіх із поясненням, що patch `HTTPRoute (ua)` не вимагається, і завершується.
11
- 3. Для кожного знайденого `ua/kustomization.yaml`:
12
- - Якщо в каталозі пакета (батьківському щодо `k8s/`) немає `vite.config.{js,mjs,ts}` — перевірка для цього overlay пропускається з відміткою «не застосовується» (gate за Vite-пакетом).
13
- - Інакше визначає каталог пакета. Якщо його не вдається встановити фіксує внутрішню помилку overlay.
14
- 4. Аналізує base-`HTTPRoute` пакета на наявність посилань на спільні сервіси (`auth-run-hl`, `file-link-hl`). У base кожен такий `backendRef` має містити `namespace: dev`; помилки в base-маніфесті повідомляються як fail, і за наявності таких помилок overlay далі не перевіряється. Результат аналізу кешується на рівні пакета, щоб не повторювати його для кількох overlay одного пакета.
15
- 5. Читає вміст `ua/kustomization.yaml`. При помилці читання fail із текстом помилки.
16
- 6. Витягує об'єднаний текст nginx-run patch-ів з kustomization і перевіряє, що inline-patch `HTTPRoute` для namespace `ua` відповідає `abie.mdc`: непорожній `target.name`, перепис `/spec/hostnames` (домени abie), `/spec/parentRefs/0/namespace` (`ua` або `ua-*`), а також JSON6902-patch-и на `/spec/rules/…/backendRefs/…/namespace` зі `value: ua`. Очікувана кількість таких patch-ів дорівнює кількості посилань на спільні сервіси в base. Невідповідність повідомляється як fail, відповідність — як pass.
17
-
18
- ## Де використовується
19
-
20
- Частина набору перевірок правила `abie` (`npm/rules/abie`). Викликається як check-функція з кореня репозиторію; типово запускається інфраструктурою лінту/CI, що збирає та запускає `check`-модулі правил.
16
+ 1. Зчитується корінь репозиторію.
17
+ 2. Завантажуються ігноровані шляхи.
18
+ 3. Знаходять YAML-файли Kubernetes у репозиторії.
19
+ 4. Фільтрується список YAML-файлів для визначення лише тих, що відповідають шляхам `ua/kustomization.yaml`.
20
+ 5. Якщо список таких шляхів порожній, функція повертає успішне завершення, оскільки перевірка патчів HTTPRoute (ua) не вимагається.
21
+ 6. Ітерується по кожному шляху, що відповідає критеріям.
22
+ 7. Перевіряється, чи вимагає пакет наявності патчу HTTPRoute (ua) на основі наявності файлів Vite у пакеті. Якщо ні, перевірка пропускається.
23
+ 8. Визначається каталог пакета. Якщо каталог не знайдено, функція повертає помилку внутрішньої невідповідності.
24
+ 9. Для кожного пакета виконується аналіз спільних референсів. Якщо аналіз відсутній, він виконується, і результат зберігається у кеш.
25
+ 10. Перевіряються базові помилки, отримані під час аналізу. Якщо помилки присутні, перевірка пропускається.
26
+ 11. Спроба читання вмісту файлу. У разі невдачі читання, функція повертає помилку.
27
+ 12. Об'єднутий текст з конфігурації використовується для валідації патчів.
28
+ 13. Виконується валідація патчів. Якщо валідація повертає `null`, перевірка вважається успішною. В іншому випадку, функція повертає помилку, вказуючи на результат валідації.
29
+ 14. Повертається код виходу репортера.
21
30
 
22
31
  ## Гарантії поведінки
23
32
 
24
- - Read-only: лише читає маніфести й конфіги, нічого не змінює у файловій системі.
25
- - За відсутності `ua/kustomization.yaml` чи `vite.config` перевірка не вимагає patch і фіксує успіх (opt-in за Vite-пакетом).
26
- - Помилка читання `ua/kustomization.yaml` не зупиняє обхід інших overlay — повідомляється як окремий fail, цикл продовжується.
27
- - Помилки в base-`HTTPRoute` блокують лише overlay свого пакета, не впливаючи на інші пакети.
28
- - Результат — агрегований код виходу (0 за умови всіх pass), придатний для використання в CI.
33
+ - Read-only: файл не виконує операцій запису у файлову систему.
34
+ - Перехоплює помилки і не пропускає винятків назовні (fail-safe).
35
+ - Кешує результати в межах одного прогону.
36
+ - Не звертається до мережі.
@@ -1,28 +1,33 @@
1
- # ua_node_selector
1
+ ---
2
+ docgen:
3
+ source: npm/rules/abie/js/ua_node_selector.mjs
4
+ crc: 6cde9837
5
+ score: 100
6
+ ---
7
+
8
+ # ua_node_selector.mjs
2
9
 
3
10
  ## Огляд
4
11
 
5
- Check-правило `abie`, яке гарантує: якщо в дереві `k8s/` пакета присутній `Deployment`, то в `ua`-оверлеї (`ua/kustomization.yaml`) обовʼязково має бути inline-patch на цей `Deployment` зі шляхом `/spec/template/spec/nodeSelector` і `preem: false`. Так продакшн-навантаження (`ua`-оверлей) закріплюється за непреемптивними (стабільними) нодами. Перевіряється лише abie-специфічна вимога; структурні обмеження формату JSON6902-патчів (наприклад, заборона `remove + add` на той самий path) перевіряє окреме правило k8s і тут не дублюються.
12
+ Модуль надає публічну функцію `check` для валідації поточного стану вхідних даних. Функція виконує перевірку відповідності даних визначеним критеріям. Результат перевірки повертається у вигляді булевого значення. (abie.mdc)
6
13
 
7
14
  ## Поведінка
8
15
 
9
- 1. Зчитує перелік шляхів-винятків (cursor-ignore) і збирає всі k8s YAML-файли в межах кореня репозиторію.
10
- 2. Визначає директорії, де оголошено `Deployment`. Якщо `Deployment` у дереві немає — правило проходить (pass) із поясненням, що patch `nodeSelector` для `ua` не вимагається, і завершується.
11
- 3. Серед знайдених YAML відбирає файли, що є `ua/kustomization.yaml`. Якщо `Deployment` є, але жодного `ua`-kustomization не знайдено — це провал (fail) з вказівкою додати `ua/kustomization.yaml` із потрібним patch.
12
- 4. Для кожного знайденого `ua/kustomization.yaml`:
13
- - Якщо в дереві k8s саме того пакета, до якого належить цей оверлей, немає `Deployment` — patch не вимагається, правило проходить для цього файлу.
14
- - Інакше читає вміст файлу. Якщо файл не вдалося прочитати — фіксує провал із текстом помилки й переходить до наступного.
15
- - Перевіряє наявність коректного patch на target kind `Deployment` зі шляхом `/spec/template/spec/nodeSelector` та `preem: false`. За відсутності — провал; за наявності — прохід.
16
- 5. Підсумковий код виходу формується з накопичених pass/fail: нуль, якщо жодного провалу не зафіксовано.
17
-
18
- ## Де використовується
19
-
20
- Файл — один із check-модулів набору правил `abie` (`npm/rules/abie/js/`). Запускається інфраструктурою перевірок правил, яка викликає експортовану функцію `check` і інтерпретує повернутий код виходу як результат лінту репозиторію.
16
+ 1. Запуск перевірки. Створюється звітність для фіксації результатів.
17
+ 2. Завантаження ігнорованих шляхів з конфігурації.
18
+ 3. Пошук файлів Kubernetes YAML у вказаному корені репозиторію.
19
+ 4. Збір директорій Deployment на основі знайдених YAML файлів.
20
+ 5. Перевірка наявності Deployment. Якщо Deployment не знайдено, повертається результат про успішне проходження.
21
+ 6. Фільтрація YAML файлів для визначення шляхів, що відповідають конфігурації ua.
22
+ 7. Перевірка наявності шляхів ua. Якщо шляхів немає, повертається результат про необхідність застосувати патч на Deployment: шлях /spec/template/spec/nodeSelector та preem false (abie.mdc).
23
+ 8. Ітерація по шляхах ua.
24
+ 9. Перевірка наявності Deployment у дереві Kubernetes для кожного шляху. Якщо Deployment відсутній, повертається результат про те, що патч nodeSelector (ua) не застосовується — немає Deployment у дереві k8s цього пакета (abie).
25
+ 10. Зчитування вмісту YAML файлу. У разі помилки читання, повертається результат про невдалий доступ.
26
+ 11. Перевірка вмісту YAML файлу на наявність необхідного патча. Якщо патч відсутній, повертається результат про необхідність застосувати патч target kind Deployment: шлях /spec/template/spec/nodeSelector та preem false (abie.mdc).
27
+ 12. Фіксація успішного проходження для кожного шляху.
21
28
 
22
29
  ## Гарантії поведінки
23
30
 
24
- - Read-only: жодних файлів не змінює, лише читає YAML-конфігурації; мережу не використовує.
25
- - Fail-safe для відсутніх ресурсів: відсутність `Deployment` у дереві трактується як легітимний прохід, а не помилка.
26
- - Помилка читання окремого `ua/kustomization.yaml` не зупиняє перевірку — фіксується як провал для конкретного файлу, решта файлів продовжує оброблятися.
27
- - Кожен `ua`-файл оцінюється незалежно; результат правила агрегує всі окремі pass/fail.
28
- - Шляхи у звітах нормалізуються до відносних із прямими слешами, тож вивід стабільний і коректний незалежно від платформи (POSIX/Windows).
31
+ - Read-only: файл не виконує операцій запису у файлову систему.
32
+ - Перехоплює помилки і не пропускає винятків назовні (fail-safe).
33
+ - Не звертається до мережі.
@@ -1,3 +1,9 @@
1
+ ---
2
+ docgen:
3
+ source: npm/rules/abie/lib/enabled.mjs
4
+ crc: 6b02ea18
5
+ ---
6
+
1
7
  # enabled.mjs
2
8
 
3
9
  ## Огляд
@@ -8,19 +14,19 @@
8
14
 
9
15
  1. Створення шляху до конфігураційного файлу `.n-cursor.json`
10
16
 
11
- 2. Перевірка наявності файлу. Якщо файл відсутній, повертається `false`.
17
+ 2. Перевірка наявності файлу. Якщо файл відсутній, повертається `false`.
12
18
 
13
- 3. Читання вмісту файлу. У разі помилки читання, повертається `false`.
19
+ 3. Читання вмісту файлу. У разі помилки читання, повертається `false`.
14
20
 
15
- 4. Парсинг вмісту у формат JSON. У разі помилки парсингу, повертається `false`.
21
+ 4. Парсинг вмісту у формат JSON. У разі помилки парсингу, повертається `false`.
16
22
 
17
- 5. Витягнення масиву правил з конфігурації.
23
+ 5. Витягнення масиву правил з конфігурації.
18
24
 
19
- 6. Перевірка типу витягнутого масиву. Якщо дані не є масивом, повертається `false`.
25
+ 6. Перевірка типу витягнутого масиву. Якщо дані не є масивом, повертається `false`.
20
26
 
21
- 7. Ітерація по масиву правил. Проводиться перевірка кожного елемента на відповідність рядку 'abie' після приведення до нижнього регістру та видалення пробілів.
27
+ 7. Ітерація по масиву правил. Проводиться перевірка кожного елемента на відповідність рядку 'abie' після приведення до нижнього регістру та видалення пробілів.
22
28
 
23
- 8. Повернення результату. Якщо знайдено правило 'abie', повертається `true`. У іншому випадку повертається `false`.
29
+ 8. Повернення результату. Якщо знайдено правило 'abie', повертається `true`. У іншому випадку повертається `false`.
24
30
 
25
31
  ## Публічний API
26
32
 
@@ -1,3 +1,9 @@
1
+ ---
2
+ docgen:
3
+ source: npm/rules/abie/lib/env-dns.mjs
4
+ crc: 91aa8ee4
5
+ ---
6
+
1
7
  # env-dns.mjs
2
8
 
3
9
  ## Огляд
@@ -17,9 +23,9 @@ collectAbieEnvFiles
17
23
 
18
24
  ## Публічний API
19
25
 
20
- * abieEnvNameFromBasename — Витягує `dev` або `ua` з імені env-файлу.
21
- * validateAbieEnvInternalUrls — Виявляє розбіжності кластерного DNS/namespace у внутрішніх URL-адресах.
22
- * collectAbieEnvFiles — Збирає `.env` файли, що відповідають формату abie env (dev.env, ua.env, з провідною крапкою).
26
+ - abieEnvNameFromBasename — Витягує `dev` або `ua` з імені env-файлу.
27
+ - validateAbieEnvInternalUrls — Виявляє розбіжності кластерного DNS/namespace у внутрішніх URL-адресах.
28
+ - collectAbieEnvFiles — Збирає `.env` файли, що відповідають формату abie env (dev.env, ua.env, з провідною крапкою).
23
29
 
24
30
  ## Гарантії поведінки
25
31
 
@@ -1,3 +1,9 @@
1
+ ---
2
+ docgen:
3
+ source: npm/rules/abie/lib/hc-yaml.mjs
4
+ crc: e9aba7c8
5
+ ---
6
+
1
7
  # hc-yaml.mjs
2
8
 
3
9
  ## Огляд
@@ -1,3 +1,9 @@
1
+ ---
2
+ docgen:
3
+ source: npm/rules/abie/lib/http-route.mjs
4
+ crc: 3ec544d6
5
+ ---
6
+
1
7
  # http-route.mjs
2
8
 
3
9
  ## Огляд
@@ -1,3 +1,9 @@
1
+ ---
2
+ docgen:
3
+ source: npm/rules/abie/lib/k8s-tree.mjs
4
+ crc: 077f3478
5
+ ---
6
+
1
7
  # k8s-tree
2
8
 
3
9
  ## Огляд
@@ -1,3 +1,9 @@
1
+ ---
2
+ docgen:
3
+ source: npm/rules/abie/lib/kustomization-patches.mjs
4
+ crc: 1dd36b33
5
+ ---
6
+
1
7
  # kustomization-patches.mjs
2
8
 
3
9
  ## Огляд
@@ -1,3 +1,9 @@
1
+ ---
2
+ docgen:
3
+ source: npm/rules/abie/lib/overlay-paths.mjs
4
+ crc: 752f7012
5
+ ---
6
+
1
7
  # overlay-paths
2
8
 
3
9
  ## Огляд
@@ -1,3 +1,9 @@
1
+ ---
2
+ docgen:
3
+ source: npm/rules/abie/lib/yaml.mjs
4
+ crc: 1b50e492
5
+ ---
6
+
1
7
  # yaml.mjs
2
8
 
3
9
  ## Огляд
@@ -1,3 +1,9 @@
1
+ ---
2
+ docgen:
3
+ source: npm/rules/adr/fix.mjs
4
+ crc: b46c541a
5
+ ---
6
+
1
7
  # `npm/rules/adr/fix.mjs`
2
8
 
3
9
  ## Огляд