@nitra/cursor 12.7.0 → 12.8.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.
Files changed (208) hide show
  1. package/.pi-template/extensions/n-cursor-adr/docs/index.md +2 -2
  2. package/CHANGELOG.md +21 -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 +14 -4
  35. package/rules/doc-files/js/docs/docgen-crc.md +25 -14
  36. package/rules/doc-files/js/docs/docgen-extract.md +16 -14
  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/docgen-judge.md +13 -11
  41. package/rules/doc-files/js/docs/docgen-scan.md +28 -27
  42. package/rules/doc-files/js/docs/index.md +0 -1
  43. package/rules/docker/docs/fix.md +6 -6
  44. package/rules/docker/docs/index.md +3 -3
  45. package/rules/docker/js/docs/index.md +2 -2
  46. package/rules/docker/lib/docs/docker-hadolint.md +2 -2
  47. package/rules/docker/lib/docs/index.md +5 -5
  48. package/rules/efes/docs/fix.md +8 -8
  49. package/rules/efes/docs/index.md +3 -3
  50. package/rules/feedback/docs/fix.md +5 -5
  51. package/rules/feedback/docs/index.md +3 -3
  52. package/rules/ga/docs/fix.md +5 -5
  53. package/rules/ga/docs/index.md +3 -3
  54. package/rules/ga/js/docs/index.md +3 -3
  55. package/rules/graphql/docs/fix.md +8 -8
  56. package/rules/graphql/docs/index.md +3 -3
  57. package/rules/graphql/docs/main.md +8 -8
  58. package/rules/graphql/js/docs/index.md +2 -2
  59. package/rules/graphql/lib/docs/index.md +2 -2
  60. package/rules/hasura/docs/fix.md +11 -11
  61. package/rules/hasura/docs/index.md +3 -3
  62. package/rules/hasura/js/docs/index.md +2 -2
  63. package/rules/image-avif/docs/fix.md +3 -3
  64. package/rules/image-avif/docs/index.md +3 -3
  65. package/rules/image-avif/js/docs/avif_generation.md +6 -6
  66. package/rules/image-avif/js/docs/index.md +2 -2
  67. package/rules/image-compress/docs/fix.md +2 -2
  68. package/rules/image-compress/docs/index.md +3 -3
  69. package/rules/image-compress/js/docs/index.md +3 -3
  70. package/rules/{js-lint → js}/docs/fix.md +9 -9
  71. package/rules/{js-lint → js}/docs/index.md +3 -3
  72. package/rules/{js-lint → js}/js/docs/check.md +5 -5
  73. package/rules/{js-lint → js}/js/docs/index.md +4 -4
  74. package/rules/js-bun-db/docs/fix.md +5 -5
  75. package/rules/js-bun-db/docs/index.md +3 -3
  76. package/rules/js-bun-db/js/docs/index.md +2 -2
  77. package/rules/js-bun-db/lib/docs/index.md +2 -2
  78. package/rules/js-bun-redis/docs/fix.md +6 -6
  79. package/rules/js-bun-redis/docs/index.md +3 -3
  80. package/rules/js-bun-redis/js/docs/index.md +2 -2
  81. package/rules/js-bun-redis/lib/docs/index.md +2 -2
  82. package/rules/js-lint-ci/docs/fix.md +3 -3
  83. package/rules/js-lint-ci/docs/index.md +3 -3
  84. package/rules/js-lint-ci/js/docs/index.md +2 -2
  85. package/rules/js-mssql/docs/fix.md +5 -5
  86. package/rules/js-mssql/docs/index.md +3 -3
  87. package/rules/js-mssql/js/docs/index.md +2 -2
  88. package/rules/js-mssql/lib/docs/index.md +2 -2
  89. package/rules/js-run/docs/fix.md +8 -8
  90. package/rules/js-run/docs/index.md +3 -3
  91. package/rules/js-run/js/docs/index.md +2 -2
  92. package/rules/js-run/lib/docs/index.md +7 -7
  93. package/rules/k8s/docs/fix.md +4 -4
  94. package/rules/k8s/docs/index.md +3 -3
  95. package/rules/k8s/js/docs/index.md +3 -3
  96. package/rules/nginx-default-tpl/docs/fix.md +7 -7
  97. package/rules/nginx-default-tpl/docs/index.md +3 -3
  98. package/rules/nginx-default-tpl/js/docs/index.md +2 -2
  99. package/rules/nginx-default-tpl/js/docs/template.md +2 -2
  100. package/rules/npm-module/docs/fix.md +8 -8
  101. package/rules/npm-module/docs/index.md +3 -3
  102. package/rules/npm-module/js/docs/header_doc_pointer.md +23 -13
  103. package/rules/npm-module/js/docs/index.md +5 -5
  104. package/rules/npm-module/js/docs/rule_meta.md +6 -6
  105. package/rules/npm-module/js/header_doc_pointer.mjs +1 -3
  106. package/rules/php/docs/fix.md +6 -6
  107. package/rules/php/docs/index.md +3 -3
  108. package/rules/php/js/docs/index.md +3 -3
  109. package/rules/python/docs/fix.md +11 -11
  110. package/rules/python/docs/index.md +3 -3
  111. package/rules/python/docs/main.md +10 -10
  112. package/rules/python/js/docs/index.md +3 -3
  113. package/rules/python/main.mjs +2 -1
  114. package/rules/rego/docs/fix.md +5 -5
  115. package/rules/rego/docs/index.md +3 -3
  116. package/rules/rego/js/docs/index.md +3 -3
  117. package/rules/release/docs/index.md +5 -5
  118. package/rules/release/lib/docs/index.md +4 -4
  119. package/rules/rust/docs/fix.md +4 -4
  120. package/rules/rust/docs/index.md +3 -3
  121. package/rules/rust/docs/main.md +7 -7
  122. package/rules/rust/js/docs/index.md +3 -3
  123. package/rules/rust/lib/docs/index.md +2 -2
  124. package/rules/rust/main.mjs +7 -1
  125. package/rules/security/docs/fix.md +6 -6
  126. package/rules/security/docs/index.md +3 -3
  127. package/rules/security/js/docs/index.md +4 -4
  128. package/rules/style-lint/docs/fix.md +3 -3
  129. package/rules/style-lint/docs/index.md +3 -3
  130. package/rules/style-lint/js/docs/index.md +3 -3
  131. package/rules/tauri/docs/fix.md +11 -11
  132. package/rules/tauri/docs/index.md +3 -3
  133. package/rules/tauri/js/docs/index.md +3 -3
  134. package/rules/test/docs/fix.md +5 -5
  135. package/rules/test/docs/index.md +3 -3
  136. package/rules/test/js/data/stryker_config/docs/index.md +4 -4
  137. package/rules/test/js/data/vitest_config/docs/index.md +2 -2
  138. package/rules/test/js/docs/index.md +7 -7
  139. package/rules/text/docs/fix.md +11 -11
  140. package/rules/text/docs/index.md +3 -3
  141. package/rules/text/docs/main.md +8 -8
  142. package/rules/text/js/cspell-fix.mjs +7 -2
  143. package/rules/text/js/docs/cspell-fix.md +8 -8
  144. package/rules/text/js/docs/index.md +7 -8
  145. package/rules/text/js/docs/run-v8r.md +3 -3
  146. package/rules/text/main.mjs +3 -1
  147. package/rules/tool-surface/docs/index.md +3 -3
  148. package/rules/tool-surface/meta.json +6 -1
  149. package/rules/vue/docs/fix.md +6 -6
  150. package/rules/vue/docs/index.md +3 -3
  151. package/rules/vue/js/docs/index.md +2 -2
  152. package/rules/vue/lib/docs/index.md +2 -2
  153. package/rules/worktree/docs/fix.md +11 -11
  154. package/rules/worktree/docs/index.md +3 -3
  155. package/scripts/coverage-classify/docs/index.md +6 -6
  156. package/scripts/dispatcher/docs/index.md +2 -2
  157. package/scripts/docs/index.md +16 -16
  158. package/scripts/lib/docs/index.md +36 -36
  159. package/scripts/lib/docs/run-lint.md +7 -7
  160. package/scripts/lib/docs/run-standard-lint.md +7 -5
  161. package/scripts/lib/fix/analyze-escalation.mjs +4 -1
  162. package/scripts/lib/fix/docs/analyze-escalation.md +28 -15
  163. package/scripts/lib/fix/docs/index.md +10 -10
  164. package/scripts/lib/fix/docs/orchestrator.md +14 -15
  165. package/scripts/lib/fix/docs/run-conformance-check.md +4 -3
  166. package/scripts/lib/fix/docs/run-fix-check.md +3 -3
  167. package/scripts/lib/fix/docs/t0.md +8 -7
  168. package/scripts/lib/fix/orchestrator.mjs +26 -3
  169. package/scripts/lib/fix/t0.mjs +4 -1
  170. package/scripts/lib/run-lint.mjs +1 -3
  171. package/scripts/utils/docs/index.md +14 -14
  172. package/skills/doc-aggregate/js/docs/index.md +3 -3
  173. package/skills/doc-files/.changes/260612-0002.md +1 -0
  174. package/skills/doc-files/.changes/260612-0006.md +1 -0
  175. package/skills/doc-files/.changes/260612-0008.md +1 -0
  176. package/skills/doc-files/.changes/260612-0012.md +1 -0
  177. package/skills/doc-files/.changes/260612-0031.md +1 -0
  178. package/skills/doc-files/.changes/260612-0036.md +1 -0
  179. package/skills/doc-files/.changes/260612-0114.md +1 -0
  180. package/skills/start-check/js/docs/index.md +2 -2
  181. package/skills/taze/js/docs/index.md +2 -2
  182. package/types/bin/n-cursor.d.ts +1 -1
  183. /package/rules/{js-lint → js}/coverage/coverage.mjs +0 -0
  184. /package/rules/{js-lint → js}/docs/main.md +0 -0
  185. /package/rules/{js-lint → js}/js/check.mjs +0 -0
  186. /package/rules/{js-lint → js}/js/data/tooling/knip-canonical.json +0 -0
  187. /package/rules/{js-lint → js}/js/data/tooling/oxlint-canonical.json +0 -0
  188. /package/rules/{js-lint → js}/js/docs/lint-findings.md +0 -0
  189. /package/rules/{js-lint → js}/js/docs/tooling.md +0 -0
  190. /package/rules/{js-lint → js}/js/docs/utils_imports.md +0 -0
  191. /package/rules/{js-lint → js}/js/lint-findings.mjs +0 -0
  192. /package/rules/{js-lint → js}/js/tooling.mjs +0 -0
  193. /package/rules/{js-lint → js}/js/utils_imports.mjs +0 -0
  194. /package/rules/{js-lint/js-lint.mdc → js/js.mdc} +0 -0
  195. /package/rules/{js-lint → js}/main.mjs +0 -0
  196. /package/rules/{js-lint → js}/meta.json +0 -0
  197. /package/rules/{js-lint → js}/policy/jscpd/jscpd.rego +0 -0
  198. /package/rules/{js-lint → js}/policy/jscpd/target.json +0 -0
  199. /package/rules/{js-lint → js}/policy/jscpd/template/.jscpd.json.snippet.json +0 -0
  200. /package/rules/{js-lint → js}/policy/lint_js_yml/lint_js_yml.rego +0 -0
  201. /package/rules/{js-lint → js}/policy/lint_js_yml/target.json +0 -0
  202. /package/rules/{js-lint → js}/policy/lint_js_yml/template/lint-js.yml.snippet.yml +0 -0
  203. /package/rules/{js-lint → js}/policy/package_json/package_json.rego +0 -0
  204. /package/rules/{js-lint → js}/policy/package_json/target.json +0 -0
  205. /package/rules/{js-lint → js}/policy/package_json/template/package.json.snippet.json +0 -0
  206. /package/rules/{js-lint → js}/policy/vscode_extensions/target.json +0 -0
  207. /package/rules/{js-lint → js}/policy/vscode_extensions/template/extensions.json.snippet.json +0 -0
  208. /package/rules/{js-lint → js}/policy/vscode_extensions/vscode_extensions.rego +0 -0
@@ -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 |
@@ -3,27 +3,27 @@ type: JS Module
3
3
  title: run-lint.mjs
4
4
  resource: npm/scripts/lib/run-lint.mjs
5
5
  docgen:
6
- crc: dd80d058
6
+ crc: 24827b04
7
7
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
8
  score: 100
9
9
  ---
10
10
 
11
11
  ## Огляд
12
12
 
13
- Модуль керує вибором та виконанням правил лінтування. Він визначає набір правил для лінтування, спираючись на конфігурації `meta.json` та `.n-cursor.json`. Публічна функція `selectLintRules` вибирає та сортує ці правила на основі їхньої лінт-поверхні. Публічна функція `runLint` ініціює виконання визначеного набору правил, перевіряючи змінені файли або весь репозиторій.
13
+ Модуль ініціалізує та керує процесом лінтування коду. Він вибирає та сортує набір правил для перевірки, використовуючи конфігурації `meta.json` та `.n-cursor.json`. Публічна функція `selectLintRules` виконує вибір правил. Публічна функція `runLint` ініціює повний цикл лінтування, який може включати перевірку змінених файлів або всього репозиторію.
14
14
 
15
15
  ## Поведінка
16
16
 
17
- selectLintRules вибирає і алфавітно сортує ідентифікатори правил для лінтування на основі їхньої лінт-поверхні та наявності в активних конфігураціях.
18
- runLint запускає лінт-оркестрацію, виконуючи перевірку змінених файлів або повний прогін репозиторію, залежно від наданих опцій.
17
+ selectLintRules вибирає і алфавітно сортує ідентифікатори правил для лінтування, ґрунтуючись на наявності в конфігурації та заданому обсязі перевірки.
18
+ runLint запускає повну оркестрацію лінтування, виконуючи перевірку змінених файлів або весь репозиторій, залежно від параметрів, і може включати фази конформності та форматування.
19
19
 
20
20
  ## Публічний API
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
@@ -3,31 +3,44 @@ type: JS Module
3
3
  title: analyze-escalation.mjs
4
4
  resource: npm/scripts/lib/fix/analyze-escalation.mjs
5
5
  docgen:
6
- crc: 5a586df6
6
+ crc: f26cd4c7
7
7
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
8
  score: 100
9
9
  ---
10
10
 
11
- Аналітика escalation-логу fix-конформності. Читає записи рунгів драбини (`escalation-log.mjs`) — весь лог або записи одного прогону (від байтового зсуву), — ділить на чанки за бюджетом символів і просить хмарну **avg**-модель запропонувати, як зменшити LLM-залежність: нові детерміновані T0-патерни, уточнення `.mdc`-інструкцій або зміни скриптів пакета. Результат — markdown-звіт у `.n-cursor/fix-escalation-analysis.md` (append із timestamp). Викликається CLI `n-cursor analyze-escalation` (весь лог) і наприкінці `lint --full` (записи прогону).
11
+ ## Огляд
12
+
13
+ Аналізує записи рунгів драбини з `escalation-log.mjs` для виявлення шляхів зменшення LLM-залежності у fix-конформності. Лог обробляється за один прогін (від байтового зсуву) або повністю, ділячись на чанки для аналізу хмарною **avg**-моделлю. Мета аналізу — визначити конкретні правки пакета `@nitra/cursor`: (A) новий ДЕТЕРМІНОВАНИЙ T0-патерн (`t0.mjs`), (B) уточнення `.mdc`-інструкцій правила, або (C) зміна скрипта/чека. Результат зберігається у markdown-звіт `.n-cursor/fix-escalation-analysis.md` (append із timestamp) після виклику CLI `n-cursor analyze-escalation`.
12
14
 
13
15
  ## Поведінка
14
16
 
15
- `readEscalationRecords` читає JSONL від байтового зсуву (зсув на межі рядка — мультибайт не б'ється; биті рядки пропускаються); `escalationLogSize` дає зсув для scope «цей прогін». `chunkRecords` стискає записи й ділить на чанки, щоб JSON кожного не перевищив бюджет. `analyzeEscalations` (синхронний — callLlm spawnSync-based) робить виклик avg-моделі по кожному чанку, а за кількох чанків — фінальний синтез; помилки моделі ковтаються в `null` (аналіз не валить lint). `maybeAnalyzeEscalation` — хук lint: gated kill-switch `N_CURSOR_FIX_ANALYZE`, наявністю `CLOUD_AVG` і записів.
17
+ analysisEnabled визначає, чи дозволено виконувати автоматичний аналіз ескалації наприкінці процесу `lint`.
18
+ escalationLogSize повертає розмір файлу логу ескалації у байтах.
19
+ readEscalationRecords читає записи логу ескалації, починаючи з заданого байтового зсуву, та повертає їх як масив об'єктів.
20
+ summarizeCalls рахує кількість викликів моделей для різних рівнів (локальний, cloud-min, cloud-avg) у наданих записах.
21
+ reportRunStats друкує резюме кількості викликів моделей для поточного прогону, використовуючи заданий байтовий зсув.
22
+ chunkRecords ділить масив стиснених записів на менші чанки, щоб кожен чанк не перевищив заданий бюджет символів.
23
+ analyzeEscalations аналізує надані записи, ділить їх на чанки, викликає модель для аналізу кожного чанка, а потім синтезує фінальний звіт.
24
+ analysisReportPath повертає шлях до файлу, де зберігається звіт аналізу ескалації.
25
+ writeAnalysisReport дописує згенерований звіт у markdown-файл у відповідному шляху, додаючи до нього мітку часу.
26
+ runEscalationAnalysisCli виконує повний аналіз всього логу ескалації та записує звіт.
27
+ maybeAnalyzeEscalation виконує аналіз ескалацій лише для записів поточного прогону, якщо дозволено та є необхідні умови.
16
28
 
17
29
  ## Публічний API
18
30
 
19
- - `summarizeCalls(records)` лічильники фактичних викликів за тирами `{ local, cloudMin, cloudAvg }` (skip-записи avg-кепу не рахуються).
20
- - `reportRunStats(sinceOffset, log)` друкує резюме викликів моделей за прогін (no-op, якщо викликів не було).
21
- - `analysisEnabled()` чи дозволено авто-аналіз (kill-switch `N_CURSOR_FIX_ANALYZE`).
22
- - `escalationLogSize(path?)` розмір логу в байтах (since-offset).
23
- - `readEscalationRecords(path, sinceOffset?)` записи від зсуву.
24
- - `chunkRecords(records, maxChars?)` чанки стиснених записів.
25
- - `analyzeEscalations(records, opts?)` `{ report, chunks, reason }`; `opts.callLlm` інжектовний.
26
- - `analysisReportPath(cwd?)` / `writeAnalysisReport(report, cwd, ts)` шлях/запис звіту.
27
- - `runEscalationAnalysisCli(args, cwd?)` CLI: весь лог звіт.
28
- - `maybeAnalyzeEscalation(cwd, sinceOffset, log)` хук наприкінці `lint --full`.
31
+ analysisEnabledВмикає автоматичний аналіз після завершення lint.
32
+ escalationLogSizeВизначає максимальний розмір escalation-логу в байтах.
33
+ readEscalationRecordsЗчитує записи з логу, починаючи з заданого байтового зсуву.
34
+ summarizeCallsПідраховує реальні виклики моделей за тирами, ігноруючи записи про середнє кешування.
35
+ reportRunStats Виводить підсумок викликів моделей за поточний запуск.
36
+ chunkRecords — Розбиває записи на менші частини, щоб розмір JSON кожного чанку не перевищував заданий ліміт.
37
+ analyzeEscalations — Обробляє записи: розбиває їх на чанки, викликає модель для кожного чанку та синтезує результат, якщо чанків більше одного.
38
+ analysisReportPath Вказує шлях для збереження markdown-звіту аналізу.
39
+ writeAnalysisReport Додає звіт до markdown-файлу, додаючи до нього мітку часу.
40
+ runEscalationAnalysisCli Виконує повний аналіз всього логу escalation через інтерфейс командного рядка.
41
+ maybeAnalyzeEscalation — Запускає аналіз записів поточного прогону після `lint --full`, якщо це дозволено налаштуваннями.
29
42
 
30
43
  ## Гарантії поведінки
31
44
 
32
- - Звертається до мережі лише при виклику avg-моделі (через pi/omlx за префіксом model-id).
33
- - Помилки виклику моделі перехоплює (fail-safe): аналіз не впливає на exit-код lint.
45
+ - Перехоплює помилки і не пропускає винятків назовні (fail-safe).
46
+ - За певних помилок повертає порожнє значення (напр. `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 |
@@ -3,38 +3,37 @@ type: JS Module
3
3
  title: orchestrator.mjs
4
4
  resource: npm/scripts/lib/fix/orchestrator.mjs
5
5
  docgen:
6
- crc: fbc91330
6
+ crc: 3bb1b761
7
7
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
8
  score: 100
9
9
  ---
10
10
 
11
11
  ## Огляд
12
12
 
13
- Модуль керує процесом вирішення порушень за допомогою багаторівневої системи ескалації. Він збирає послідовність рівнів моделей, починаючи з локальних і закінчуючи хмарними. Модуль парсить параметри запуску за допомогою `parseOrchestratorArgs` та виконує повний цикл фіксації, застосовуючи детермінований фікс. Для невирішених проблем застосовується ескалація правил через `escalateRule`, а фінальний запуск оркестратора здійснюється через `runOrchestratorCli`, який використовує структуру, побудовану за допомогою `buildLadder`.
13
+ Модуль відповідає за управління процесом виправлення порушень. Він будує послідовність тирів ескалації за допомогою `buildLadder`, парсить аргументи командного рядка за допомогою `parseOrchestratorArgs` та запускає повний цикл виправлення за допомогою `runOrchestratorCli`. Цей цикл включає автоматичний фікс та ескалацію через LLM-моделі, що реалізується функцією `escalateRule`.
14
14
 
15
15
  ## Поведінка
16
16
 
17
17
  buildLadder будує послідовність тирів ескалації для вирішення порушень, від локальних мінімальних моделей до хмарних середніх моделей.
18
- escalateRule проводить один прохід по послідовності тирів, намагаючись вирішити порушення, і повертає статус вирішення та використаний бюджет хмарних викликів.
19
- parseOrchestratorArgs парсить аргументи командного рядка для визначення максимального бюджету хмарних викликів та фільтра правил.
20
- runOrchestratorCli виконує повний цикл фіксації: перевіряє правила, застосовує детермінований фікс (T0-auto), а потім використовує LLM-драбину ескалації для невирішених порушень.
18
+ escalateRule виконує один прогін по послідовності тирів, намагаючись вирішити порушення, використовуючи LLM-моделі та фіксуючи результат.
19
+ parseOrchestratorArgs парсить аргументи командного рядка для визначення максимального ліміту викликів хмарної моделі та фільтра правил.
20
+ runOrchestratorCli керує повним процесом виправлення порушень: виконує початкову перевірку, застосовує детермінований фікс (T0-auto), а потім ініціює LLM-драбину ескалації для невирішених правил.
21
21
 
22
22
  ## Публічний API
23
23
 
24
- buildLadder — Створює послідовність моделей для ескалації, виходячи з доступних рівнів.
24
+ buildLadder — Створює послідовність моделей для ескалації, обмежуючись лише тирами, які доступні.
25
25
 
26
- local-min — Запускає первинний прохід з найменшою локальною моделлю.
27
- local-min-retry — Повторює локальний прохід, використовуючи відгук від попереднього кроку.
28
- cloud-min — Запускає прохід з найменшою хмарною моделлю, використовуючи відгук.
29
- cloud-avg — Запускає прохід з середньою хмарною моделлю, використовуючи відгук та обмеження середнього.
26
+ local-min — Виконує перший прохід з локальною мінімальною моделлю.
27
+ local-min-retry — Повторює локальний прохід, використовуючи результати попереднього рунгу.
28
+ cloud-min — Виконує прохід з хмарною мінімальною моделлю, використовуючи результати попереднього рунгу.
29
+ cloud-avg — Виконує прохід з хмарною середньою моделлю, використовуючи результати попереднього рунгу та обмеження середнього.
30
30
 
31
- escalateRule — Виконує одне правило по драбині ескалації до першого успішного перевірки.
32
- Кожен рунг — Запускає роботу моделі з урахуванням попереднього відгуку, перевіряє правило, фіксує результат у лозі.
33
- Достроковий вихід — Зупиняє процес при певних умовах (відсутність ключа, пропуск моделі на системному рівні) або при досягненні ліміту середнього.
31
+ escalateRule — Застосовує одне правило по драбині ескалації до першого позитивного результату.
32
+ Кожен рунг — Викликає модель з попереднім відгуком, перевіряє правило, фіксує результат у лозі. Зупиняється при певних умовах (відсутність ключа, пропуск моделі, перевищення бюджету).
34
33
 
35
- parseOrchestratorArgs — Витягує максимальне значення середнього та збирає список правил для фільтрації з командного рядка.
34
+ parseOrchestratorArgs — Витягує максимальне значення середнього та список фільтрів правил з командного рядка.
36
35
 
37
- runOrchestratorCli — Запускає основний процес оркестрації, обробляючи аргументи та виконуючи ескалацію правил.
36
+ runOrchestratorCli — Запускає основну логіку оркестратора на основі аргументів командного рядка.
38
37
 
39
38
  ## Гарантії поведінки
40
39
 
@@ -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. Підраховується загальна кількість правил, що не пройшли перевірку.
@@ -3,26 +3,27 @@ type: JS Module
3
3
  title: t0.mjs
4
4
  resource: npm/scripts/lib/fix/t0.mjs
5
5
  docgen:
6
- crc: 49c0669b
6
+ crc: cfb0d5c9
7
7
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
8
  score: 100
9
9
  ---
10
10
 
11
11
  ## Огляд
12
12
 
13
- Модуль керує автоматичним застосуванням T0-auto паттернів до виводів порушень. Він визначає, які правила можуть бути оброблені автоматично, використовуючи конфігурації з `extensions.json` та `package-lock.json`. Функціонал реалізовано через публічні функції: `filterT0AutoRules` для визначення правил, `applyT0Auto` для автоматичного застосування паттернів до виводів, та `runT0AutoCli` для запуску процесу. Модуль працює у режимі fail-safe, перехоплюючи помилки та не кидаючи винятків назовні, надаючи звіт про застосовані автоматичні виправлення.
13
+ Модуль керує автоматичним застосуванням паттернів T0-auto до виводів порушень. Він використовує конфігурації з `extensions.json` та `package-lock.json` для визначення правил. Модуль фільтрує правила, які можуть бути автоматично оброблені, застосовує паттерни за допомогою `applyT0Auto`, а потім запускає повний цикл перевірки для всіх провальних правил через `runT0AutoCli`. Усі операції виконуються з механізмом fail-safe, що запобігає виникненню винятків назовні.
14
14
 
15
15
  ## Поведінка
16
16
 
17
- applyT0Auto застосовує всі визначені T0-auto паттерни до одного виводу порушення, повертаючи результат застосування.
18
- filterT0AutoRules повертає список ID правил, для яких існує хоча б один T0-auto паттерн, виходячи з виводів порушень.
19
- runT0AutoCli запускає T0-auto для кожного провального правила, повторно перевіряє конформність та виводить підсумок.
17
+ Поведінка
18
+ applyT0Auto застосовує всі визначені T0-auto паттерни до одного виводу порушення, повертаючи результат застосування та список виконаних дій.
19
+ filterT0AutoRules повертає список ID правил, для яких існує хоча б один T0-auto паттерн, виходячи з виводу порушення.
20
+ runT0AutoCli запускає T0-auto для всіх провальних правил, повторно перевіряє конформність та виводить підсумок щодо закритого чи незакритого порушень.
20
21
 
21
22
  ## Публічний API
22
23
 
23
24
  applyT0Auto — вносить зміни до виводу порушень, використовуючи всі визначені T0-auto шаблони.
24
- filterT0AutoRules — визначає, які правила мають принаймні один T0-auto шаблон, ґрунтуючись на виводі порушень у форматі JSON.
25
- runT0AutoCli — виконує команду `n-cursor fix-t0 [rule...]`, яка застосовує T0-auto до кожного порушення, повторно перевіряє check-gate та надає звіт.
25
+ filterT0AutoRules — визначає, які правила мають відповідні T0-auto шаблони, аналізуючи вивід порушень, отриманий з `fix --json`.
26
+ runT0AutoCli — виконує команду `n-cursor fix-t0 [rule...]`, що включає застосування T0-auto до кожного порушення, повторну перевірку check-gate та виведення результату.
26
27
 
27
28
  ## Гарантії поведінки
28
29
 
@@ -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) {
@@ -148,9 +148,7 @@ async function runPerFileRules(ids, ctx) {
148
148
  * @returns {Promise<number>} код конформності
149
149
  */
150
150
  async function runFullConformancePhase(cwd, readOnly, log) {
151
- const { escalationLogSize, maybeAnalyzeEscalation, reportRunStats } = await import(
152
- './fix/analyze-escalation.mjs'
153
- )
151
+ const { escalationLogSize, maybeAnalyzeEscalation, reportRunStats } = await import('./fix/analyze-escalation.mjs')
154
152
  const escOffset = readOnly ? 0 : escalationLogSize()
155
153
  const conformanceCode = await runConformance(cwd, readOnly, log)
156
154
  if (!readOnly) {