@nitra/cursor 12.7.0 → 12.8.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 (172) hide show
  1. package/.pi-template/extensions/n-cursor-adr/docs/index.md +2 -2
  2. package/CHANGELOG.md +15 -5
  3. package/bin/n-cursor.js +1 -1
  4. package/docs/index.md +3 -3
  5. package/docs/stryker.config.md +3 -3
  6. package/lib/docs/index.md +5 -5
  7. package/lib/docs/llm.md +4 -4
  8. package/package.json +2 -2
  9. package/rules/abie/docs/fix.md +8 -8
  10. package/rules/abie/docs/index.md +3 -3
  11. package/rules/abie/js/docs/index.md +6 -6
  12. package/rules/abie/lib/docs/index.md +9 -9
  13. package/rules/bun/docs/fix.md +5 -5
  14. package/rules/bun/docs/index.md +3 -3
  15. package/rules/bun/js/docs/index.md +2 -2
  16. package/rules/capacitor/docs/fix.md +10 -10
  17. package/rules/capacitor/docs/index.md +3 -3
  18. package/rules/capacitor/js/docs/index.md +2 -2
  19. package/rules/changelog/docs/fix.md +11 -11
  20. package/rules/changelog/docs/index.md +3 -3
  21. package/rules/changelog/js/docs/consistency.md +12 -12
  22. package/rules/changelog/js/docs/index.md +2 -2
  23. package/rules/changelog/lib/docs/index.md +2 -2
  24. package/rules/ci4/docs/fix.md +4 -4
  25. package/rules/ci4/docs/index.md +3 -3
  26. package/rules/ci4/js/docs/index.md +2 -2
  27. package/rules/doc-files/docs/index.md +3 -3
  28. package/rules/doc-files/js/docgen-crc.mjs +2 -8
  29. package/rules/doc-files/js/docgen-extract.mjs +5 -3
  30. package/rules/doc-files/js/docgen-files-batch.mjs +18 -3
  31. package/rules/doc-files/js/docgen-gen.mjs +11 -3
  32. package/rules/doc-files/js/docgen-judge-measure.mjs +67 -18
  33. package/rules/doc-files/js/docgen-judge.mjs +8 -1
  34. package/rules/doc-files/js/docgen-scan.mjs +10 -2
  35. package/rules/doc-files/js/docs/docgen-crc.md +25 -14
  36. package/rules/doc-files/js/docs/docgen-extract.md +15 -13
  37. package/rules/doc-files/js/docs/docgen-files-batch.md +11 -11
  38. package/rules/doc-files/js/docs/docgen-gen.md +15 -26
  39. package/rules/doc-files/js/docs/docgen-judge-measure.md +14 -12
  40. package/rules/doc-files/js/docs/index.md +16 -16
  41. package/rules/docker/docs/fix.md +6 -6
  42. package/rules/docker/docs/index.md +3 -3
  43. package/rules/docker/js/docs/index.md +2 -2
  44. package/rules/docker/lib/docs/docker-hadolint.md +2 -2
  45. package/rules/docker/lib/docs/index.md +5 -5
  46. package/rules/efes/docs/fix.md +8 -8
  47. package/rules/efes/docs/index.md +3 -3
  48. package/rules/feedback/docs/fix.md +5 -5
  49. package/rules/feedback/docs/index.md +3 -3
  50. package/rules/ga/docs/fix.md +5 -5
  51. package/rules/ga/docs/index.md +3 -3
  52. package/rules/ga/js/docs/index.md +3 -3
  53. package/rules/graphql/docs/fix.md +8 -8
  54. package/rules/graphql/docs/index.md +3 -3
  55. package/rules/graphql/docs/main.md +8 -8
  56. package/rules/graphql/js/docs/index.md +2 -2
  57. package/rules/graphql/lib/docs/index.md +2 -2
  58. package/rules/hasura/docs/fix.md +11 -11
  59. package/rules/hasura/docs/index.md +3 -3
  60. package/rules/hasura/js/docs/index.md +2 -2
  61. package/rules/image-avif/docs/fix.md +3 -3
  62. package/rules/image-avif/docs/index.md +3 -3
  63. package/rules/image-avif/js/docs/avif_generation.md +6 -6
  64. package/rules/image-avif/js/docs/index.md +2 -2
  65. package/rules/image-compress/docs/fix.md +2 -2
  66. package/rules/image-compress/docs/index.md +3 -3
  67. package/rules/image-compress/js/docs/index.md +3 -3
  68. package/rules/js-bun-db/docs/fix.md +5 -5
  69. package/rules/js-bun-db/docs/index.md +3 -3
  70. package/rules/js-bun-db/js/docs/index.md +2 -2
  71. package/rules/js-bun-db/lib/docs/index.md +2 -2
  72. package/rules/js-bun-redis/docs/fix.md +6 -6
  73. package/rules/js-bun-redis/docs/index.md +3 -3
  74. package/rules/js-bun-redis/js/docs/index.md +2 -2
  75. package/rules/js-bun-redis/lib/docs/index.md +2 -2
  76. package/rules/js-lint/docs/fix.md +9 -9
  77. package/rules/js-lint/docs/index.md +3 -3
  78. package/rules/js-lint/js/docs/check.md +5 -5
  79. package/rules/js-lint/js/docs/index.md +4 -4
  80. package/rules/js-lint-ci/docs/fix.md +3 -3
  81. package/rules/js-lint-ci/docs/index.md +3 -3
  82. package/rules/js-lint-ci/js/docs/index.md +2 -2
  83. package/rules/js-mssql/docs/fix.md +5 -5
  84. package/rules/js-mssql/docs/index.md +3 -3
  85. package/rules/js-mssql/js/docs/index.md +2 -2
  86. package/rules/js-mssql/lib/docs/index.md +2 -2
  87. package/rules/js-run/docs/fix.md +8 -8
  88. package/rules/js-run/docs/index.md +3 -3
  89. package/rules/js-run/js/docs/index.md +2 -2
  90. package/rules/js-run/lib/docs/index.md +7 -7
  91. package/rules/k8s/docs/fix.md +4 -4
  92. package/rules/k8s/docs/index.md +3 -3
  93. package/rules/k8s/js/docs/index.md +3 -3
  94. package/rules/nginx-default-tpl/docs/fix.md +7 -7
  95. package/rules/nginx-default-tpl/docs/index.md +3 -3
  96. package/rules/nginx-default-tpl/js/docs/index.md +2 -2
  97. package/rules/nginx-default-tpl/js/docs/template.md +2 -2
  98. package/rules/npm-module/docs/fix.md +8 -8
  99. package/rules/npm-module/docs/index.md +3 -3
  100. package/rules/npm-module/js/docs/index.md +5 -5
  101. package/rules/npm-module/js/docs/rule_meta.md +6 -6
  102. package/rules/npm-module/js/header_doc_pointer.mjs +1 -3
  103. package/rules/php/docs/fix.md +6 -6
  104. package/rules/php/docs/index.md +3 -3
  105. package/rules/php/js/docs/index.md +3 -3
  106. package/rules/python/docs/fix.md +11 -11
  107. package/rules/python/docs/index.md +3 -3
  108. package/rules/python/js/docs/index.md +3 -3
  109. package/rules/python/main.mjs +2 -1
  110. package/rules/rego/docs/fix.md +5 -5
  111. package/rules/rego/docs/index.md +3 -3
  112. package/rules/rego/js/docs/index.md +3 -3
  113. package/rules/release/docs/index.md +5 -5
  114. package/rules/release/lib/docs/index.md +4 -4
  115. package/rules/rust/docs/fix.md +4 -4
  116. package/rules/rust/docs/index.md +3 -3
  117. package/rules/rust/js/docs/index.md +3 -3
  118. package/rules/rust/lib/docs/index.md +2 -2
  119. package/rules/rust/main.mjs +7 -1
  120. package/rules/security/docs/fix.md +6 -6
  121. package/rules/security/docs/index.md +3 -3
  122. package/rules/security/js/docs/index.md +4 -4
  123. package/rules/style-lint/docs/fix.md +3 -3
  124. package/rules/style-lint/docs/index.md +3 -3
  125. package/rules/style-lint/js/docs/index.md +3 -3
  126. package/rules/tauri/docs/fix.md +11 -11
  127. package/rules/tauri/docs/index.md +3 -3
  128. package/rules/tauri/js/docs/index.md +3 -3
  129. package/rules/test/docs/fix.md +5 -5
  130. package/rules/test/docs/index.md +3 -3
  131. package/rules/test/js/data/stryker_config/docs/index.md +4 -4
  132. package/rules/test/js/data/vitest_config/docs/index.md +2 -2
  133. package/rules/test/js/docs/index.md +7 -7
  134. package/rules/text/docs/fix.md +11 -11
  135. package/rules/text/docs/index.md +3 -3
  136. package/rules/text/js/cspell-fix.mjs +7 -2
  137. package/rules/text/js/docs/index.md +8 -8
  138. package/rules/text/js/docs/run-v8r.md +3 -3
  139. package/rules/text/main.mjs +3 -1
  140. package/rules/tool-surface/docs/index.md +3 -3
  141. package/rules/tool-surface/meta.json +6 -1
  142. package/rules/vue/docs/fix.md +6 -6
  143. package/rules/vue/docs/index.md +3 -3
  144. package/rules/vue/js/docs/index.md +2 -2
  145. package/rules/vue/lib/docs/index.md +2 -2
  146. package/rules/worktree/docs/fix.md +11 -11
  147. package/rules/worktree/docs/index.md +3 -3
  148. package/scripts/coverage-classify/docs/index.md +6 -6
  149. package/scripts/dispatcher/docs/index.md +2 -2
  150. package/scripts/docs/index.md +16 -16
  151. package/scripts/lib/docs/index.md +36 -36
  152. package/scripts/lib/docs/run-lint.md +3 -3
  153. package/scripts/lib/docs/run-standard-lint.md +7 -5
  154. package/scripts/lib/fix/analyze-escalation.mjs +4 -1
  155. package/scripts/lib/fix/docs/index.md +10 -10
  156. package/scripts/lib/fix/docs/run-conformance-check.md +4 -3
  157. package/scripts/lib/fix/docs/run-fix-check.md +3 -3
  158. package/scripts/lib/fix/orchestrator.mjs +26 -3
  159. package/scripts/lib/fix/t0.mjs +4 -1
  160. package/scripts/lib/run-lint.mjs +1 -3
  161. package/scripts/utils/docs/index.md +14 -14
  162. package/skills/doc-aggregate/js/docs/index.md +3 -3
  163. package/skills/doc-files/.changes/260612-0002.md +1 -0
  164. package/skills/doc-files/.changes/260612-0006.md +1 -0
  165. package/skills/doc-files/.changes/260612-0008.md +1 -0
  166. package/skills/doc-files/.changes/260612-0012.md +1 -0
  167. package/skills/doc-files/.changes/260612-0031.md +1 -0
  168. package/skills/doc-files/.changes/260612-0036.md +1 -0
  169. package/skills/doc-files/.changes/260612-0114.md +1 -0
  170. package/skills/start-check/js/docs/index.md +2 -2
  171. package/skills/taze/js/docs/index.md +2 -2
  172. package/types/bin/n-cursor.d.ts +1 -1
@@ -6,7 +6,7 @@ resource: npm/rules/test/
6
6
 
7
7
  # npm/rules/test
8
8
 
9
- | Файл | Тип |
10
- |---|---|
11
- | [fix.mjs](fix.md) | JS Module |
9
+ | Файл | Тип |
10
+ | ------------------- | --------- |
11
+ | [fix.mjs](fix.md) | JS Module |
12
12
  | [main.mjs](main.md) | JS Module |
@@ -6,8 +6,8 @@ resource: npm/rules/test/js/data/stryker_config/
6
6
 
7
7
  # npm/rules/test/js/data/stryker_config
8
8
 
9
- | Файл | Тип |
10
- |---|---|
11
- | [stryker-vue-macros-ignorer.mjs](stryker-vue-macros-ignorer.md) | JS Module |
12
- | [stryker.config.baseline.mjs](stryker.config.baseline.md) | JS Module |
9
+ | Файл | Тип |
10
+ | ----------------------------------------------------------------- | --------- |
11
+ | [stryker-vue-macros-ignorer.mjs](stryker-vue-macros-ignorer.md) | JS Module |
12
+ | [stryker.config.baseline.mjs](stryker.config.baseline.md) | JS Module |
13
13
  | [stryker.config.vue.baseline.mjs](stryker.config.vue.baseline.md) | JS Module |
@@ -6,6 +6,6 @@ resource: npm/rules/test/js/data/vitest_config/
6
6
 
7
7
  # npm/rules/test/js/data/vitest_config
8
8
 
9
- | Файл | Тип |
10
- |---|---|
9
+ | Файл | Тип |
10
+ | ------------------------------------------------------ | --------- |
11
11
  | [vitest.config.baseline.js](vitest.config.baseline.md) | JS Module |
@@ -6,11 +6,11 @@ resource: npm/rules/test/js/
6
6
 
7
7
  # npm/rules/test/js
8
8
 
9
- | Файл | Тип |
10
- |---|---|
11
- | [cargo_mutants_config.mjs](cargo_mutants_config.md) | JS Module |
12
- | [location.mjs](location.md) | JS Module |
13
- | [no-process-chdir.mjs](no-process-chdir.md) | JS Module |
14
- | [no-relative-fs-path.mjs](no-relative-fs-path.md) | JS Module |
15
- | [stryker_config.mjs](stryker_config.md) | JS Module |
9
+ | Файл | Тип |
10
+ | ----------------------------------------------------------- | --------- |
11
+ | [cargo_mutants_config.mjs](cargo_mutants_config.md) | JS Module |
12
+ | [location.mjs](location.md) | JS Module |
13
+ | [no-process-chdir.mjs](no-process-chdir.md) | JS Module |
14
+ | [no-relative-fs-path.mjs](no-relative-fs-path.md) | JS Module |
15
+ | [stryker_config.mjs](stryker_config.md) | JS Module |
16
16
  | [vitest-config-pool-forks.mjs](vitest-config-pool-forks.md) | JS Module |
@@ -12,18 +12,18 @@ docgen:
12
12
  ## Поведінка
13
13
 
14
14
  1. Запуск правила.
15
- * Приймає контекст прогону.
16
- * Виконує застосування JS-занепокоєних.
17
- * Застосовує політику.
18
- * Генерує посилання MDC.
19
- * Повертає результат прогону.
15
+ - Приймає контекст прогону.
16
+ - Виконує застосування JS-занепокоєних.
17
+ - Застосовує політику.
18
+ - Генерує посилання MDC.
19
+ - Повертає результат прогону.
20
20
  2. Виконання у режимі CLI.
21
- * Виконується як автономний скрипт.
22
- * Виконує повний еквівалент команди `npx @nitra/cursor fix <id>`.
23
- * Виконує завантаження конфігурації.
24
- * Виконує перевірку дозволених записів.
25
- * Генерує зведену інформацію.
26
- * Визначає код виходу процесу.
21
+ - Виконується як автономний скрипт.
22
+ - Виконує повний еквівалент команди `npx @nitra/cursor fix <id>`.
23
+ - Виконує завантаження конфігурації.
24
+ - Виконує перевірку дозволених записів.
25
+ - Генерує зведену інформацію.
26
+ - Визначає код виходу процесу.
27
27
 
28
28
  ## Публічний API
29
29
 
@@ -6,7 +6,7 @@ resource: npm/rules/text/
6
6
 
7
7
  # npm/rules/text
8
8
 
9
- | Файл | Тип |
10
- |---|---|
11
- | [fix.mjs](fix.md) | JS Module |
9
+ | Файл | Тип |
10
+ | ------------------- | --------- |
11
+ | [fix.mjs](fix.md) | JS Module |
12
12
  | [main.mjs](main.md) | JS Module |
@@ -143,12 +143,17 @@ export function runCspellText(cwd = process.cwd(), readOnly = false, llmFix = fa
143
143
  const words = unknownWords(first.out)
144
144
  const batch = words.slice(0, MAX_CLASSIFY_WORDS)
145
145
  if (words.length > MAX_CLASSIFY_WORDS) {
146
- process.stdout.write(`ℹ️ cspell: класифікація перших ${MAX_CLASSIFY_WORDS}/${words.length} слів (решта — наступний прогін)\n`)
146
+ process.stdout.write(
147
+ `ℹ️ cspell: класифікація перших ${MAX_CLASSIFY_WORDS}/${words.length} слів (решта — наступний прогін)\n`
148
+ )
147
149
  }
148
150
 
149
151
  let text
150
152
  try {
151
- text = callLlm([{ role: 'user', content: classifyPrompt(batch) }], model, { caller: 'cspell-classify', maxTokens: 4000 })
153
+ text = callLlm([{ role: 'user', content: classifyPrompt(batch) }], model, {
154
+ caller: 'cspell-classify',
155
+ maxTokens: 4000
156
+ })
152
157
  } catch (error) {
153
158
  process.stdout.write(`⚠️ cspell: omlx-класифікація впала (${error.message}) — без авто-словника\n`)
154
159
  process.stdout.write(first.out)
@@ -6,12 +6,12 @@ resource: npm/rules/text/js/
6
6
 
7
7
  # npm/rules/text/js
8
8
 
9
- | Файл | Тип |
10
- |---|---|
11
- | [cspell-fix.mjs](cspell-fix.md) | JS Module |
9
+ | Файл | Тип |
10
+ | ----------------------------------------------- | --------- |
11
+ | [cspell-fix.mjs](cspell-fix.md) | JS Module |
12
12
  | [forbidden-prettier.mjs](forbidden-prettier.md) | JS Module |
13
- | [formatting.mjs](formatting.md) | JS Module |
14
- | [lint.mjs](lint.md) | JS Module |
15
- | [run-dotenv-linter.mjs](run-dotenv-linter.md) | JS Module |
16
- | [run-shellcheck.mjs](run-shellcheck.md) | JS Module |
17
- | [run-v8r.mjs](run-v8r.md) | JS Module |
13
+ | [formatting.mjs](formatting.md) | JS Module |
14
+ | [lint.mjs](lint.md) | JS Module |
15
+ | [run-dotenv-linter.mjs](run-dotenv-linter.md) | JS Module |
16
+ | [run-shellcheck.mjs](run-shellcheck.md) | JS Module |
17
+ | [run-v8r.mjs](run-v8r.md) | JS Module |
@@ -20,9 +20,9 @@ runV8rWithGlobs — послідовно запускає перевірку к
20
20
 
21
21
  ## Публічний API
22
22
 
23
- * DEFAULT_V8R_GLOBS — Містить стандартні шаблони для пошуку файлів, які обробляє v8r.
24
- * V8R_CATALOG_PATH — Вказує на розташування файлу `v8r-catalog.json` у корені пакета.
25
- * runV8rWithGlobs — Виконує послідовні запуски v8r для файлів, знайдених за шаблонами, повертаючи код завершення.
23
+ - DEFAULT_V8R_GLOBS — Містить стандартні шаблони для пошуку файлів, які обробляє v8r.
24
+ - V8R_CATALOG_PATH — Вказує на розташування файлу `v8r-catalog.json` у корені пакета.
25
+ - runV8rWithGlobs — Виконує послідовні запуски v8r для файлів, знайдених за шаблонами, повертаючи код завершення.
26
26
 
27
27
  ## Гарантії поведінки
28
28
 
@@ -132,7 +132,9 @@ function runLintTextSteps(readOnly = false, llmFix = false) {
132
132
  const dotenvCode = runDotenvLinter(process.cwd(), readOnly)
133
133
  if (dotenvCode !== 0) return dotenvCode
134
134
 
135
- const mdArgs = readOnly ? ['markdownlint-cli2', '**/*.md', '**/*.mdc'] : ['markdownlint-cli2', '--fix', '**/*.md', '**/*.mdc']
135
+ const mdArgs = readOnly
136
+ ? ['markdownlint-cli2', '**/*.md', '**/*.mdc']
137
+ : ['markdownlint-cli2', '--fix', '**/*.md', '**/*.mdc']
136
138
  const markdownlintCode = runLintStep('markdownlint', 'bunx', mdArgs)
137
139
  if (markdownlintCode !== 0) return markdownlintCode
138
140
 
@@ -6,7 +6,7 @@ resource: npm/rules/tool-surface/
6
6
 
7
7
  # npm/rules/tool-surface
8
8
 
9
- | Файл | Тип |
10
- |---|---|
11
- | [fix.mjs](fix.md) | JS Module |
9
+ | Файл | Тип |
10
+ | ------------------- | --------- |
11
+ | [fix.mjs](fix.md) | JS Module |
12
12
  | [main.mjs](main.md) | JS Module |
@@ -1 +1,6 @@
1
- { "auto": { "predicate": "depInAnyPackageJson", "arg": ["vue", "react", "svelte", "@angular/core", "preact", "solid-js", "@tauri-apps/api", "@capacitor/core"] } }
1
+ {
2
+ "auto": {
3
+ "predicate": "depInAnyPackageJson",
4
+ "arg": ["vue", "react", "svelte", "@angular/core", "preact", "solid-js", "@tauri-apps/api", "@capacitor/core"]
5
+ }
6
+ }
@@ -12,13 +12,13 @@ docgen:
12
12
  ## Поведінка
13
13
 
14
14
  1. Запуск правила.
15
- * Приймає контекст прогону.
16
- * Використовує runStandardRule для застосування політики.
17
- * Повертає результат прогону.
15
+ - Приймає контекст прогону.
16
+ - Використовує runStandardRule для застосування політики.
17
+ - Повертає результат прогону.
18
18
  2. Запуск у режимі CLI.
19
- * Викликається через `import + run`.
20
- * Виконує повний еквівалент `npx @nitra/cursor fix <id>`.
21
- * Визначає вихідний код процесу на основі результату.
19
+ - Викликається через `import + run`.
20
+ - Виконує повний еквівалент `npx @nitra/cursor fix <id>`.
21
+ - Визначає вихідний код процесу на основі результату.
22
22
 
23
23
  ## Публічний API
24
24
 
@@ -6,7 +6,7 @@ resource: npm/rules/vue/
6
6
 
7
7
  # npm/rules/vue
8
8
 
9
- | Файл | Тип |
10
- |---|---|
11
- | [fix.mjs](fix.md) | JS Module |
9
+ | Файл | Тип |
10
+ | ------------------- | --------- |
11
+ | [fix.mjs](fix.md) | JS Module |
12
12
  | [main.mjs](main.md) | JS Module |
@@ -6,6 +6,6 @@ resource: npm/rules/vue/js/
6
6
 
7
7
  # npm/rules/vue/js
8
8
 
9
- | Файл | Тип |
10
- |---|---|
9
+ | Файл | Тип |
10
+ | --------------------------- | --------- |
11
11
  | [packages.mjs](packages.md) | JS Module |
@@ -6,6 +6,6 @@ resource: npm/rules/vue/lib/
6
6
 
7
7
  # npm/rules/vue/lib
8
8
 
9
- | Файл | Тип |
10
- |---|---|
9
+ | Файл | Тип |
10
+ | ----------------------------------------------------- | --------- |
11
11
  | [vue-forbidden-imports.mjs](vue-forbidden-imports.md) | JS Module |
@@ -14,19 +14,19 @@ docgen:
14
14
  ## Поведінка
15
15
 
16
16
  1. Запуск правила.
17
- * Приймає контекст прогону.
18
- * Виконує застосування JS-занепокоєних.
19
- * Застосовує політику.
20
- * Генерує посилання MDC.
21
- * Повертає результат прогону.
17
+ - Приймає контекст прогону.
18
+ - Виконує застосування JS-занепокоєних.
19
+ - Застосовує політику.
20
+ - Генерує посилання MDC.
21
+ - Повертає результат прогону.
22
22
 
23
23
  2. Запуск у режимі CLI.
24
- * Виконується при запуску через CLI.
25
- * Виконує повний еквівалент команди `npx @nitra/cursor fix <id>`.
26
- * Виконує завантаження конфігурації.
27
- * Виконує перевірку дозволених елементів.
28
- * Генерує зведену інформацію.
29
- * Виконує вихід з процесу залежно від результату.
24
+ - Виконується при запуску через CLI.
25
+ - Виконує повний еквівалент команди `npx @nitra/cursor fix <id>`.
26
+ - Виконує завантаження конфігурації.
27
+ - Виконує перевірку дозволених елементів.
28
+ - Генерує зведену інформацію.
29
+ - Виконує вихід з процесу залежно від результату.
30
30
 
31
31
  ## Публічний API
32
32
 
@@ -6,7 +6,7 @@ resource: npm/rules/worktree/
6
6
 
7
7
  # npm/rules/worktree
8
8
 
9
- | Файл | Тип |
10
- |---|---|
11
- | [fix.mjs](fix.md) | JS Module |
9
+ | Файл | Тип |
10
+ | ------------------- | --------- |
11
+ | [fix.mjs](fix.md) | JS Module |
12
12
  | [main.mjs](main.md) | JS Module |
@@ -6,9 +6,9 @@ docgen:
6
6
  crc: 06249ac8
7
7
  ---
8
8
 
9
- | Файл | Тип | Опис |
10
- |---|---|---|
11
- | [apply.mjs](apply.md) | JS Module | Модуль apply.mjs із пакета coverage-classify відповідає за **застосування вердиктів класифікатора му |
12
- | [cache.mjs](cache.md) | JS Module | Модуль cache.mjs реалізує **file-hash-keyed cache** для вердиктів класифікатора покриття мутаційного |
13
- | [prompt.mjs](prompt.md) | JS Module | Модуль prompt.mjs — це prompt-builder для скрипта coverage-classify, що класифікує вцілілих мутантів |
14
- | [verdict-schema.mjs](verdict-schema.md) | JS Module | Файл надає схему VerdictSchema для валідації вердиктів LLM-класифікатора. |
9
+ | Файл | Тип | Опис |
10
+ | --------------------------------------- | --------- | ------------------------------------------------------------------------------------------------------ |
11
+ | [apply.mjs](apply.md) | JS Module | Модуль apply.mjs із пакета coverage-classify відповідає за \*\*застосування вердиктів класифікатора му |
12
+ | [cache.mjs](cache.md) | JS Module | Модуль cache.mjs реалізує **file-hash-keyed cache** для вердиктів класифікатора покриття мутаційного |
13
+ | [prompt.mjs](prompt.md) | JS Module | Модуль prompt.mjs — це prompt-builder для скрипта coverage-classify, що класифікує вцілілих мутантів |
14
+ | [verdict-schema.mjs](verdict-schema.md) | JS Module | Файл надає схему VerdictSchema для валідації вердиктів LLM-класифікатора. |
@@ -6,6 +6,6 @@ resource: npm/scripts/dispatcher/
6
6
 
7
7
  # npm/scripts/dispatcher
8
8
 
9
- | Файл | Тип |
10
- |---|---|
9
+ | Файл | Тип |
10
+ | --------------------- | --------- |
11
11
  | [trace.mjs](trace.md) | JS Module |
@@ -6,20 +6,20 @@ resource: npm/scripts/
6
6
 
7
7
  # npm/scripts
8
8
 
9
- | Файл | Тип |
10
- |---|---|
11
- | [auto-rules.mjs](auto-rules.md) | JS Module |
12
- | [auto-skills.mjs](auto-skills.md) | JS Module |
13
- | [build-agents-commands.mjs](build-agents-commands.md) | JS Module |
14
- | [cli-entry.mjs](cli-entry.md) | JS Module |
15
- | [coverage-fix-extract.mjs](coverage-fix-extract.md) | JS Module |
16
- | [coverage-fix.mjs](coverage-fix.md) | JS Module |
9
+ | Файл | Тип |
10
+ | ----------------------------------------------------------------------------------- | --------- |
11
+ | [auto-rules.mjs](auto-rules.md) | JS Module |
12
+ | [auto-skills.mjs](auto-skills.md) | JS Module |
13
+ | [build-agents-commands.mjs](build-agents-commands.md) | JS Module |
14
+ | [cli-entry.mjs](cli-entry.md) | JS Module |
15
+ | [coverage-fix-extract.mjs](coverage-fix-extract.md) | JS Module |
16
+ | [coverage-fix.mjs](coverage-fix.md) | JS Module |
17
17
  | [ensure-nitra-cursor-dev-dependencies.mjs](ensure-nitra-cursor-dev-dependencies.md) | JS Module |
18
- | [post-tool-use-check.mjs](post-tool-use-check.md) | JS Module |
19
- | [post-tool-use-fix.mjs](post-tool-use-fix.md) | JS Module |
20
- | [rename-yaml-extensions.mjs](rename-yaml-extensions.md) | JS Module |
21
- | [skills-cli.mjs](skills-cli.md) | JS Module |
22
- | [sync-claude-config.mjs](sync-claude-config.md) | JS Module |
23
- | [sync-setup-bun-deps-action.mjs](sync-setup-bun-deps-action.md) | JS Module |
24
- | [upgrade-nitra-cursor-and-install.mjs](upgrade-nitra-cursor-and-install.md) | JS Module |
25
- | [worktree-cli.mjs](worktree-cli.md) | JS Module |
18
+ | [post-tool-use-check.mjs](post-tool-use-check.md) | JS Module |
19
+ | [post-tool-use-fix.mjs](post-tool-use-fix.md) | JS Module |
20
+ | [rename-yaml-extensions.mjs](rename-yaml-extensions.md) | JS Module |
21
+ | [skills-cli.mjs](skills-cli.md) | JS Module |
22
+ | [sync-claude-config.mjs](sync-claude-config.md) | JS Module |
23
+ | [sync-setup-bun-deps-action.mjs](sync-setup-bun-deps-action.md) | JS Module |
24
+ | [upgrade-nitra-cursor-and-install.mjs](upgrade-nitra-cursor-and-install.md) | JS Module |
25
+ | [worktree-cli.mjs](worktree-cli.md) | JS Module |
@@ -6,40 +6,40 @@ resource: npm/scripts/lib/
6
6
 
7
7
  # npm/scripts/lib
8
8
 
9
- | Файл | Тип |
10
- |---|---|
11
- | [assert-project-root.mjs](assert-project-root.md) | JS Module |
12
- | [changed-files.mjs](changed-files.md) | JS Module |
13
- | [check-mdc-template-refs.mjs](check-mdc-template-refs.md) | JS Module |
14
- | [check-reporter.mjs](check-reporter.md) | JS Module |
15
- | [diff-added-lines.mjs](diff-added-lines.md) | JS Module |
9
+ | Файл | Тип |
10
+ | --------------------------------------------------------------------------- | --------- |
11
+ | [assert-project-root.mjs](assert-project-root.md) | JS Module |
12
+ | [changed-files.mjs](changed-files.md) | JS Module |
13
+ | [check-mdc-template-refs.mjs](check-mdc-template-refs.md) | JS Module |
14
+ | [check-reporter.mjs](check-reporter.md) | JS Module |
15
+ | [diff-added-lines.mjs](diff-added-lines.md) | JS Module |
16
16
  | [discover-check-rules-from-cursor.mjs](discover-check-rules-from-cursor.md) | JS Module |
17
- | [discover-checkable-rules.mjs](discover-checkable-rules.md) | JS Module |
18
- | [ensure-tool.mjs](ensure-tool.md) | JS Module |
19
- | [generated-markdown.mjs](generated-markdown.md) | JS Module |
20
- | [gha-workflow.mjs](gha-workflow.md) | JS Module |
21
- | [inline-template-links.mjs](inline-template-links.md) | JS Module |
22
- | [list-project-rules-mdc.mjs](list-project-rules-mdc.md) | JS Module |
23
- | [list-rule-ids.mjs](list-rule-ids.md) | JS Module |
24
- | [load-cursor-config.mjs](load-cursor-config.md) | JS Module |
25
- | [mirror-parity.mjs](mirror-parity.md) | JS Module |
26
- | [read-n-cursor-config-lite.mjs](read-n-cursor-config-lite.md) | JS Module |
27
- | [resolve-target-files.mjs](resolve-target-files.md) | JS Module |
28
- | [root-notice.mjs](root-notice.md) | JS Module |
29
- | [rule-meta-helpers.mjs](rule-meta-helpers.md) | JS Module |
30
- | [rule-meta.mjs](rule-meta.md) | JS Module |
31
- | [rule-predicates.mjs](rule-predicates.md) | JS Module |
32
- | [run-conftest-batch.mjs](run-conftest-batch.md) | JS Module |
33
- | [run-lint-step.mjs](run-lint-step.md) | JS Module |
34
- | [run-lint.mjs](run-lint.md) | JS Module |
35
- | [run-rule-cli.mjs](run-rule-cli.md) | JS Module |
36
- | [run-rule.mjs](run-rule.md) | JS Module |
37
- | [run-standard-lint.mjs](run-standard-lint.md) | JS Module |
38
- | [run-standard-rule.mjs](run-standard-rule.md) | JS Module |
39
- | [skill-meta.mjs](skill-meta.md) | JS Module |
40
- | [sync-gitignore-worktree.mjs](sync-gitignore-worktree.md) | JS Module |
41
- | [template.mjs](template.md) | JS Module |
42
- | [timing-summary.mjs](timing-summary.md) | JS Module |
43
- | [workspaces.mjs](workspaces.md) | JS Module |
44
- | [worktree-notice.mjs](worktree-notice.md) | JS Module |
45
- | [worktree.mjs](worktree.md) | JS Module |
17
+ | [discover-checkable-rules.mjs](discover-checkable-rules.md) | JS Module |
18
+ | [ensure-tool.mjs](ensure-tool.md) | JS Module |
19
+ | [generated-markdown.mjs](generated-markdown.md) | JS Module |
20
+ | [gha-workflow.mjs](gha-workflow.md) | JS Module |
21
+ | [inline-template-links.mjs](inline-template-links.md) | JS Module |
22
+ | [list-project-rules-mdc.mjs](list-project-rules-mdc.md) | JS Module |
23
+ | [list-rule-ids.mjs](list-rule-ids.md) | JS Module |
24
+ | [load-cursor-config.mjs](load-cursor-config.md) | JS Module |
25
+ | [mirror-parity.mjs](mirror-parity.md) | JS Module |
26
+ | [read-n-cursor-config-lite.mjs](read-n-cursor-config-lite.md) | JS Module |
27
+ | [resolve-target-files.mjs](resolve-target-files.md) | JS Module |
28
+ | [root-notice.mjs](root-notice.md) | JS Module |
29
+ | [rule-meta-helpers.mjs](rule-meta-helpers.md) | JS Module |
30
+ | [rule-meta.mjs](rule-meta.md) | JS Module |
31
+ | [rule-predicates.mjs](rule-predicates.md) | JS Module |
32
+ | [run-conftest-batch.mjs](run-conftest-batch.md) | JS Module |
33
+ | [run-lint-step.mjs](run-lint-step.md) | JS Module |
34
+ | [run-lint.mjs](run-lint.md) | JS Module |
35
+ | [run-rule-cli.mjs](run-rule-cli.md) | JS Module |
36
+ | [run-rule.mjs](run-rule.md) | JS Module |
37
+ | [run-standard-lint.mjs](run-standard-lint.md) | JS Module |
38
+ | [run-standard-rule.mjs](run-standard-rule.md) | JS Module |
39
+ | [skill-meta.mjs](skill-meta.md) | JS Module |
40
+ | [sync-gitignore-worktree.mjs](sync-gitignore-worktree.md) | JS Module |
41
+ | [template.mjs](template.md) | JS Module |
42
+ | [timing-summary.mjs](timing-summary.md) | JS Module |
43
+ | [workspaces.mjs](workspaces.md) | JS Module |
44
+ | [worktree-notice.mjs](worktree-notice.md) | JS Module |
45
+ | [worktree.mjs](worktree.md) | JS Module |
@@ -21,9 +21,9 @@ runLint запускає лінт-оркестрацію, виконуючи п
21
21
 
22
22
  selectLintRules — обирає ідентифікатори правил для контексту, розташовуючи їх в алфавітному порядку.
23
23
  runLint — ініціює процес лінтування.
24
- full — сканує весь репозиторій, порівнюючи його з початковим станом.
25
- readOnly — лише виявляє проблеми без внесення змін.
26
- rules — виконує повне сканування репозиторію, застосовуючи лише вказаний набір правил.
24
+ full — сканує весь репозиторій, порівнюючи його з початковим станом.
25
+ readOnly — лише виявляє проблеми без внесення змін.
26
+ rules — виконує повне сканування репозиторію, застосовуючи лише вказаний набір правил.
27
27
 
28
28
  ## Гарантії поведінки
29
29
 
@@ -11,11 +11,12 @@ docgen:
11
11
  ## Огляд
12
12
 
13
13
  Спільна точка входу для канонічних `lint-<rule>` підкоманд `@nitra/cursor`. Файл серіалізує та дедуплікує запуски лінту через `withLock`. `ruleId` визначається зі шляху незалежно від глибини виклику (наприклад, `rules/<id>`). Це дозволяє уніфікувати крос-cutting концерни. Інтеграція з боку правила виглядає так:
14
- * import { runStandardLint } from '../../scripts/lib/run-standard-lint.mjs'
15
- *
16
- * async function runLintFooSteps { ... }
17
- *
18
- * export function lint { return runStandardLint }
14
+
15
+ - import { runStandardLint } from '../../scripts/lib/run-standard-lint.mjs'
16
+ -
17
+ - async function runLintFooSteps { ... }
18
+ -
19
+ - export function lint { return runStandardLint }
19
20
 
20
21
  ## Поведінка
21
22
 
@@ -29,6 +30,7 @@ lint — є спільною точкою входу для канонічних
29
30
  runStandardLint — виконує стандартний лінтинг у директорії, приймаючи контекст директорії та функцію, що описує кроки лінтингу.
30
31
 
31
32
  Приклад інтеграції:
33
+
32
34
  ```js
33
35
  import { runStandardLint } from '../../scripts/lib/run-standard-lint.mjs'
34
36
 
@@ -231,7 +231,10 @@ function buildSynthesisPrompt(partials) {
231
231
  */
232
232
  function safeCall(call, prompt, model) {
233
233
  try {
234
- const text = call([{ role: 'user', content: prompt }], model, { timeoutMs: ANALYZE_TIMEOUT_MS, caller: 'fix-analyze' })
234
+ const text = call([{ role: 'user', content: prompt }], model, {
235
+ timeoutMs: ANALYZE_TIMEOUT_MS,
236
+ caller: 'fix-analyze'
237
+ })
235
238
  return text || null
236
239
  } catch {
237
240
  return null
@@ -6,14 +6,14 @@ resource: npm/scripts/lib/fix/
6
6
 
7
7
  # npm/scripts/lib/fix
8
8
 
9
- | Файл | Тип |
10
- |---|---|
11
- | [analyze-escalation.mjs](analyze-escalation.md) | JS Module |
12
- | [escalation-log.mjs](escalation-log.md) | JS Module |
13
- | [llm-fix-apply.mjs](llm-fix-apply.md) | JS Module |
14
- | [llm-lint-fix.mjs](llm-lint-fix.md) | JS Module |
15
- | [llm-worker.mjs](llm-worker.md) | JS Module |
16
- | [orchestrator.mjs](orchestrator.md) | JS Module |
9
+ | Файл | Тип |
10
+ | ----------------------------------------------------- | --------- |
11
+ | [analyze-escalation.mjs](analyze-escalation.md) | JS Module |
12
+ | [escalation-log.mjs](escalation-log.md) | JS Module |
13
+ | [llm-fix-apply.mjs](llm-fix-apply.md) | JS Module |
14
+ | [llm-lint-fix.mjs](llm-lint-fix.md) | JS Module |
15
+ | [llm-worker.mjs](llm-worker.md) | JS Module |
16
+ | [orchestrator.mjs](orchestrator.md) | JS Module |
17
17
  | [run-conformance-check.mjs](run-conformance-check.md) | JS Module |
18
- | [run-fix-check.mjs](run-fix-check.md) | JS Module |
19
- | [t0.mjs](t0.md) | JS Module |
18
+ | [run-fix-check.mjs](run-fix-check.md) | JS Module |
19
+ | [t0.mjs](t0.md) | JS Module |
@@ -21,9 +21,10 @@ runConformanceCheck виконує перевірку конформності
21
21
  ## Публічний API
22
22
 
23
23
  resolveCheckRuleIds — Визначає, які правила будуть застосовані для перевірки, використовуючи `.n-cursor.json` як основне джерело:
24
- * Якщо вказані правила, вони фільтруються до активних у конфігурації.
25
- * Якщо правила не вказані, беруться всі активні правила з конфігу.
26
- * Якщо правила не вказані і конфіг відсутній, використовується список правил, що були збережені локально.
24
+
25
+ - Якщо вказані правила, вони фільтруються до активних у конфігурації.
26
+ - Якщо правила не вказані, беруться всі активні правила з конфігу.
27
+ - Якщо правила не вказані і конфіг відсутній, використовується список правил, що були збережені локально.
27
28
 
28
29
  runConformanceCheck — Виконує перевірку відповідності для кожного окремого правила без внесення змін.
29
30
 
@@ -15,9 +15,9 @@ docgen:
15
15
  1. Визначається наявність інструменту `conftest`.
16
16
  2. Отримується список усіх доступних ідентифікаторів правил з каталогу правил.
17
17
  3. Визначається список ідентифікаторів правил для прогону (`resolveCheckRuleIds`), де `.n-cursor.json` — єдине джерело правди:
18
- а. Якщо надано явний список правил — він валідується проти доступних і звужується до активних (вимкнене правило не вмикається навіть на явний запит).
19
- б. Якщо явного списку нема й конфіг є — беруться активні правила конфіга (`available ∩ enabled`); `.cursor/rules/*.mdc` ігнорується (фікс дрейфу «enabled, але .mdc нема»).
20
- в. Якщо конфіга нема (open-by-default debug) — fallback на скан `.cursor/rules/*.mdc`.
18
+ а. Якщо надано явний список правил — він валідується проти доступних і звужується до активних (вимкнене правило не вмикається навіть на явний запит).
19
+ б. Якщо явного списку нема й конфіг є — беруться активні правила конфіга (`available ∩ enabled`); `.cursor/rules/*.mdc` ігнорується (фікс дрейфу «enabled, але .mdc нема»).
20
+ в. Якщо конфіга нема (open-by-default debug) — fallback на скан `.cursor/rules/*.mdc`.
21
21
  4. Якщо визначено ідентифікатори правил для прогону, для кожного ідентифікатора запускається окремий процес `bun` з файлом `fix.mjs` відповідного правила.
22
22
  5. Захоплюється вивід кожного процесу.
23
23
  6. Підраховується загальна кількість правил, що не пройшли перевірку.
@@ -45,7 +45,14 @@ const CLOUD_TRANSPORT_RE = /etimedout|timed out|pi error/i
45
45
  export function buildLadder({ localMin, cloudMin, cloudAvg }) {
46
46
  return [
47
47
  { tier: 'local-min', model: localMin, feedback: false, local: true, isAvg: false, timeoutMs: LOCAL_TIMEOUT_MS },
48
- { tier: 'local-min-retry', model: localMin, feedback: true, local: true, isAvg: false, timeoutMs: LOCAL_TIMEOUT_MS },
48
+ {
49
+ tier: 'local-min-retry',
50
+ model: localMin,
51
+ feedback: true,
52
+ local: true,
53
+ isAvg: false,
54
+ timeoutMs: LOCAL_TIMEOUT_MS
55
+ },
49
56
  { tier: 'cloud-min', model: cloudMin, feedback: true, local: false, isAvg: false, timeoutMs: CLOUD_TIMEOUT_MS },
50
57
  { tier: 'cloud-avg', model: cloudAvg, feedback: true, local: false, isAvg: true, timeoutMs: CLOUD_TIMEOUT_MS }
51
58
  ].filter(r => r.model)
@@ -103,7 +110,15 @@ export async function escalateRule(rule, cwd, deps) {
103
110
 
104
111
  const common = { rung: idx, tier: rung.tier, model: rung.model, withFeedback: rung.feedback }
105
112
  if (rung.isAvg && avgBudget - avgUsed <= 0) {
106
- record({ ...common, callOk: false, callError: 'cloud-avg cap reached', recheckOk: false, remainingViolation: currentViolation, diagnosis: null, ms: 0 })
113
+ record({
114
+ ...common,
115
+ callOk: false,
116
+ callError: 'cloud-avg cap reached',
117
+ recheckOk: false,
118
+ remainingViolation: currentViolation,
119
+ diagnosis: null,
120
+ ms: 0
121
+ })
107
122
  log(` ⏭️ ${rule.ruleId}: ${rung.tier} пропущено (avg-кеп вичерпано)`)
108
123
  continue
109
124
  }
@@ -120,7 +135,15 @@ export async function escalateRule(rule, cwd, deps) {
120
135
  const recheck = await check([rule.ruleId], cwd)
121
136
  const recheckOk = recheck.rules.every(r => r.ok)
122
137
  const remaining = recheckOk ? '' : (recheck.rules.find(r => !r.ok)?.output ?? '')
123
- record({ ...common, callOk: res.ok, callError: res.error ?? null, recheckOk, remainingViolation: remaining, diagnosis: res.diagnosis ?? null, ms: clock() - startedAt })
138
+ record({
139
+ ...common,
140
+ callOk: res.ok,
141
+ callError: res.error ?? null,
142
+ recheckOk,
143
+ remainingViolation: remaining,
144
+ diagnosis: res.diagnosis ?? null,
145
+ ms: clock() - startedAt
146
+ })
124
147
 
125
148
  if (recheckOk) {
126
149
  log(` ✅ ${rung.tier} (${rung.model || 'pi'}): ${rule.ruleId}`)
@@ -210,7 +210,10 @@ export async function runT0AutoCli(args, cwd) {
210
210
  }
211
211
 
212
212
  // 4. Check-gate: перевірити лише ті правила, що ми чіпали
213
- const recheckJson = await runConformanceCheck(applied.map(a => a.ruleId), cwd)
213
+ const recheckJson = await runConformanceCheck(
214
+ applied.map(a => a.ruleId),
215
+ cwd
216
+ )
214
217
  const stillFailed = recheckJson.rules.filter(r => !r.ok)
215
218
 
216
219
  if (verbose) {