@nitra/cursor 12.9.0 → 12.11.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 (175) hide show
  1. package/.claude-template/settings.template.json +1 -23
  2. package/CHANGELOG.md +12 -0
  3. package/bin/n-cursor.js +8 -43
  4. package/docs/stryker.config.md +0 -2
  5. package/lib/docs/llm.md +16 -21
  6. package/lib/docs/omlx.md +20 -25
  7. package/lib/llm.mjs +25 -7
  8. package/lib/omlx.mjs +10 -3
  9. package/package.json +1 -1
  10. package/rules/abie/docs/main.md +0 -2
  11. package/rules/abie/lib/docs/http-route.md +0 -2
  12. package/rules/abie/main.mdc +0 -22
  13. package/rules/adr/docs/main.md +0 -2
  14. package/rules/adr/js/docs/hooks.md +16 -26
  15. package/rules/adr/js/hooks.mjs +59 -0
  16. package/rules/adr/main.mdc +0 -9
  17. package/rules/bun/docs/main.md +0 -2
  18. package/rules/bun/main.mdc +1 -15
  19. package/rules/capacitor/docs/main.md +0 -2
  20. package/rules/capacitor/main.mdc +0 -6
  21. package/rules/changelog/docs/main.md +0 -2
  22. package/rules/changelog/js/agent-workflow.mdc +1 -1
  23. package/rules/changelog/js/consistency.mjs +57 -3
  24. package/rules/changelog/js/docs/consistency.md +26 -24
  25. package/rules/changelog/js/docs/index.md +2 -2
  26. package/rules/changelog/main.mdc +0 -5
  27. package/rules/ci4/docs/main.md +0 -2
  28. package/rules/ci4/main.mdc +0 -5
  29. package/rules/doc-files/docs/main.md +0 -2
  30. package/rules/doc-files/js/docs/docgen-crc.md +0 -2
  31. package/rules/doc-files/js/docs/docgen-extract.md +0 -2
  32. package/rules/doc-files/js/docs/docgen-files-batch.md +0 -2
  33. package/rules/doc-files/js/docs/docgen-gen.md +0 -2
  34. package/rules/doc-files/js/docs/docgen-judge-measure.md +0 -2
  35. package/rules/doc-files/js/docs/docgen-judge.md +0 -2
  36. package/rules/doc-files/js/docs/docgen-scan.md +0 -2
  37. package/rules/doc-files/js/docs/run-lint.md +0 -2
  38. package/rules/docker/docs/main.md +0 -2
  39. package/rules/docker/js/docs/lint.md +0 -2
  40. package/rules/docker/lib/docs/docker-hadolint.md +0 -2
  41. package/rules/docker/main.mdc +1 -21
  42. package/rules/efes/docs/main.md +0 -2
  43. package/rules/efes/main.mdc +0 -1
  44. package/rules/feedback/docs/main.md +0 -2
  45. package/rules/ga/docs/main.md +0 -2
  46. package/rules/ga/js/docs/index.md +0 -1
  47. package/rules/ga/main.mdc +1 -31
  48. package/rules/graphql/docs/main.md +0 -2
  49. package/rules/graphql/main.mdc +0 -5
  50. package/rules/hasura/docs/main.md +0 -2
  51. package/rules/hasura/js/docs/index.md +3 -3
  52. package/rules/hasura/js/docs/migrations.md +0 -2
  53. package/rules/hasura/main.mdc +1 -11
  54. package/rules/image-avif/docs/main.md +0 -2
  55. package/rules/image-avif/main.mdc +1 -9
  56. package/rules/image-compress/docs/main.md +0 -2
  57. package/rules/image-compress/js/docs/index.md +0 -1
  58. package/rules/image-compress/main.mdc +1 -9
  59. package/rules/js/docs/main.md +0 -2
  60. package/rules/js/js/dep-policy.mjs +8 -4
  61. package/rules/js/js/docs/check.md +0 -2
  62. package/rules/js/js/docs/dep-policy.md +10 -12
  63. package/rules/js/js/docs/index.md +5 -5
  64. package/rules/js/js/docs/tooling.md +0 -2
  65. package/rules/js/js/docs/utils_imports.md +0 -2
  66. package/rules/js/main.mdc +0 -31
  67. package/rules/js-bun-db/docs/main.md +0 -2
  68. package/rules/js-bun-db/js/docs/safety.md +18 -23
  69. package/rules/js-bun-db/js/safety.mjs +31 -3
  70. package/rules/js-bun-db/lib/bun-sql-scan.mjs +123 -0
  71. package/rules/js-bun-db/lib/docs/bun-sql-scan.md +37 -331
  72. package/rules/js-bun-db/main.mdc +1 -23
  73. package/rules/js-bun-redis/docs/main.md +0 -2
  74. package/rules/js-bun-redis/main.mdc +0 -5
  75. package/rules/js-mssql/docs/main.md +0 -2
  76. package/rules/js-mssql/main.mdc +0 -12
  77. package/rules/js-run/docs/main.md +0 -2
  78. package/rules/js-run/js/docs/runtime.md +15 -13
  79. package/rules/js-run/js/runtime.mjs +48 -4
  80. package/rules/js-run/main.mdc +0 -25
  81. package/rules/k8s/docs/main.md +0 -2
  82. package/rules/k8s/main.mdc +0 -45
  83. package/rules/nginx-default-tpl/docs/main.md +0 -2
  84. package/rules/nginx-default-tpl/main.mdc +0 -13
  85. package/rules/npm-module/docs/main.md +0 -2
  86. package/rules/npm-module/js/docs/header_doc_pointer.md +0 -2
  87. package/rules/npm-module/js/docs/rule_meta.md +0 -2
  88. package/rules/npm-module/js/docs/skill_meta.md +0 -2
  89. package/rules/npm-module/main.mdc +1 -15
  90. package/rules/php/docs/main.md +0 -2
  91. package/rules/php/js/docs/index.md +0 -1
  92. package/rules/php/main.mdc +1 -9
  93. package/rules/python/docs/main.md +0 -2
  94. package/rules/python/js/docs/index.md +0 -1
  95. package/rules/python/main.mdc +1 -13
  96. package/rules/python/policy/lint_python_yml/lint_python_yml.rego +9 -0
  97. package/rules/python/policy/pyproject_toml/pyproject_toml.rego +15 -1
  98. package/rules/rego/docs/main.md +0 -2
  99. package/rules/rego/js/docs/index.md +2 -2
  100. package/rules/rego/js/docs/tooling.md +0 -2
  101. package/rules/rego/js/tooling.mdc +14 -0
  102. package/rules/rego/main.mdc +0 -9
  103. package/rules/rego/policy/package_json/package_json.mdc +12 -0
  104. package/rules/release/docs/main.md +0 -2
  105. package/rules/release/main.mdc +2 -2
  106. package/rules/rust/docs/main.md +0 -2
  107. package/rules/rust/js/docs/index.md +0 -1
  108. package/rules/rust/main.mdc +1 -11
  109. package/rules/rust/policy/package_json/package_json.mdc +12 -0
  110. package/rules/security/docs/main.md +0 -2
  111. package/rules/security/js/docs/index.md +0 -1
  112. package/rules/security/main.mdc +0 -13
  113. package/rules/style/docs/main.md +0 -2
  114. package/rules/style/js/docs/index.md +2 -2
  115. package/rules/style/js/docs/tooling.md +0 -2
  116. package/rules/style/main.mdc +1 -23
  117. package/rules/tauri/docs/main.md +0 -2
  118. package/rules/tauri/main.mdc +1 -11
  119. package/rules/test/docs/main.md +0 -2
  120. package/rules/test/js/docs/no-console-store-restore.md +0 -2
  121. package/rules/test/js/docs/sandbox-aware-test.md +0 -2
  122. package/rules/test/js/docs/stryker_config.md +0 -2
  123. package/rules/test/js/docs/vitest-config-pool-forks.md +0 -2
  124. package/rules/test/main.mdc +1 -21
  125. package/rules/text/docs/main.md +0 -2
  126. package/rules/text/js/docs/cspell-fix.md +0 -2
  127. package/rules/text/js/docs/run-dotenv-linter.md +0 -2
  128. package/rules/text/js/docs/run-shellcheck.md +0 -2
  129. package/rules/text/js/docs/run-v8r.md +0 -2
  130. package/rules/text/main.mdc +0 -33
  131. package/rules/tool-surface/docs/main.md +0 -2
  132. package/rules/vue/docs/main.md +0 -2
  133. package/rules/vue/js/docs/packages.md +12 -17
  134. package/rules/vue/js/packages.mjs +41 -1
  135. package/rules/vue/main.mdc +0 -22
  136. package/rules/worktree/docs/main.md +0 -2
  137. package/scripts/docs/auto-rules.md +0 -2
  138. package/scripts/docs/auto-skills.md +0 -2
  139. package/scripts/docs/hook.md +13 -12
  140. package/scripts/docs/post-tool-use-check.md +0 -2
  141. package/scripts/docs/sync-claude-config.md +1 -3
  142. package/scripts/docs/sync-setup-bun-deps-action.md +0 -2
  143. package/scripts/hook.mjs +3 -4
  144. package/scripts/lib/docs/check-mdc-template-refs.md +0 -2
  145. package/scripts/lib/docs/index.md +35 -35
  146. package/scripts/lib/docs/inline-template-links.md +6 -8
  147. package/scripts/lib/docs/list-project-rules-mdc.md +0 -2
  148. package/scripts/lib/docs/list-rule-ids.md +0 -2
  149. package/scripts/lib/docs/mirror-parity.md +8 -10
  150. package/scripts/lib/docs/read-n-cursor-config-lite.md +0 -2
  151. package/scripts/lib/docs/rule-meta.md +0 -2
  152. package/scripts/lib/docs/run-lint.md +0 -2
  153. package/scripts/lib/docs/run-rule-cli.md +0 -2
  154. package/scripts/lib/docs/run-rule.md +0 -2
  155. package/scripts/lib/docs/run-standard-lint.md +0 -2
  156. package/scripts/lib/docs/run-standard-rule.md +0 -2
  157. package/scripts/lib/docs/skill-meta.md +0 -2
  158. package/scripts/lib/docs/timing-summary.md +0 -2
  159. package/scripts/lib/docs/worktree-notice.md +0 -2
  160. package/scripts/lib/fix/docs/analyze-escalation.md +0 -2
  161. package/scripts/lib/fix/docs/index.md +1 -0
  162. package/scripts/lib/fix/docs/llm-worker.md +18 -8
  163. package/scripts/lib/fix/docs/orchestrator.md +10 -16
  164. package/scripts/lib/fix/docs/run-conformance-check.md +0 -2
  165. package/scripts/lib/fix/docs/t0.md +0 -2
  166. package/scripts/lib/fix/docs/verbose-block.md +27 -0
  167. package/scripts/lib/fix/llm-worker.mjs +75 -22
  168. package/scripts/lib/fix/orchestrator.mjs +9 -3
  169. package/scripts/lib/fix/verbose-block.mjs +82 -0
  170. package/scripts/lib/inline-template-links.mjs +32 -22
  171. package/scripts/lib/mirror-parity.mjs +2 -2
  172. package/scripts/sync-claude-config.mjs +7 -4
  173. package/scripts/utils/docs/resolve-js-root.md +0 -2
  174. package/skills/doc-files/SKILL.md +9 -24
  175. package/skills/llm-patch/SKILL.md +4 -4
@@ -6,39 +6,39 @@ 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 |
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 |
@@ -3,24 +3,22 @@ type: JS Module
3
3
  title: inline-template-links.mjs
4
4
  resource: npm/scripts/lib/inline-template-links.mjs
5
5
  docgen:
6
- crc: b659349c
6
+ crc: e1bed533
7
7
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
- Цей модуль реалізує механізми вбудовування контенту в текстові документи, використовуючи конфігурації з `package.json.snippet.json` та `package.json`. Він замінює посилання в тексті на вміст файлів-шаблонів, розташованих у каталозі правил, а також на вміст файлів з розширенням .mdc, які не є шаблонами. Функції дозволяють вставляти посилання на шаблони (`inlineTemplateLinks`) та включати вміст Markdown (`inlineMarkdownIncludes`).
11
+ Модуль інтегрує зовнішній контент у текстовий вивід, використовуючи конфігурації з `package.json.snippet.json` та `package.json`. Він замінює посилання на шаблони в тексті на їхній вміст за допомогою `inlineTemplateLinks` та доповнює текст вмістом усіх знайдених файлів `.mdc` з директорій `js/` та `policy/<concern>/` за допомогою `appendDiscoveredMdcFiles`.
14
12
 
15
13
  ## Поведінка
16
14
 
17
- inlineTemplateLinks замінює посилання в тексті на вбудовані блоки з вмістом файлів, що містять шаблони, якщо ці файли знаходяться в каталозі правил.
18
- inlineMarkdownIncludes замінює посилання в тексті на вміст файлів з розширенням .mdc, якщо ці файли не є шаблонами.
15
+ inlineTemplateLinks замінює посилання на шаблони в тексті на вбудовані блоки з вмістом відповідних файлів.
16
+ appendDiscoveredMdcFiles додає вміст усіх знайдених файлів \*.mdc з директорій js/ та policy/<concern>/ до наданого тексту.
19
17
 
20
18
  ## Публічний API
21
19
 
22
- inlineTemplateLinks — Замінює посилання у Markdown, що містять `/template/`, на вбудовані блокові конструкції, зчитуючи вміст з вказаного файлу. Викидає помилку, якщо цільове посилання не знайдено.
23
- inlineMarkdownIncludesЗамінює посилання у Markdown, що закінчуються на `.mdc` не є шляхом `/template/`), на сирий вміст відповідного файлу Markdown. Викидає помилку, якщо цільове посилання не знайдено.
20
+ inlineTemplateLinks — Замінює посилання у Markdown, що містять `/template/`, на вбудовані блоки, зчитуючи вміст з вказаного файлу. Викидає помилку, якщо цільове посилання не знайдено.
21
+ appendDiscoveredMdcFilesДодає всі знайдені файли з розширенням `.mdc` з підкаталогів `js/` та `policy/<concern>/`. Спочатку додаються файли з `js/` (у алфавітному порядку), а потім файли з підкаталогів `policy/` алфавітному порядку за назвою `concern`, а потім за назвою файлу).
24
22
 
25
23
  ## Гарантії поведінки
26
24
 
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Цей модуль визначає шлях до `.mdc`-файлів правил у проєкті-споживачі, що зберігаються у директорії, вказаній константою CURSOR_RULES_DIR. Він надає відсортований список імен цих файлів. Це винесення логіки з `bin/n-cursor.js` забезпечує розділення відповідальності між інструментом командного рядка та функцією перевірки конформності.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Перебирає директорії у `rules/` та фільтрує їх, вибираючи лише ті, що містять єдиний канонічний entrypoint (`rules/<id>/main.mjs`), згідно з ADR 2026-06-21. Функція повертає список ідентифікаторів правил, які відповідають цьому канону. Операція є лише для читання файлової системи.
14
12
 
15
13
  ## Поведінка
@@ -3,31 +3,29 @@ type: JS Module
3
3
  title: mirror-parity.mjs
4
4
  resource: npm/scripts/lib/mirror-parity.mjs
5
5
  docgen:
6
- crc: 093ff2bb
6
+ crc: 91a0c9f2
7
7
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
8
  score: 90
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
- Модуль забезпечує паритет дзеркал правил, порівнюючи вміст `.cursor/rules/n-<id>.mdc` з канонічним вмістом `npm/rules/<id>/<id>.mdc`. Він визначає, які дзеркала відстежувати, формує очікуваний вміст цих дзеркал після застосування шаблонів (трансформу, що застосовує `readBundledRuleContent` $\rightarrow$ `inlineTemplateLinks`), та виявляє дрейф, що виникає, коли канонічний `.mdc` змінюється без регенерації дзеркала.
11
+ Модуль реалізує механізм перевірки паралельності (parity) дзеркал правил. Він визначає список дзеркал, створює очікуваний вміст для кожного дзеркала, трансформуючи канонічний файл `npm/rules/<id>/<id>.mdc` з inlined-шаблонами — тим самим трансформом, що застосовує синк (`readBundledRuleContent` → `inlineTemplateLinks`). Механізм виявляє дрейф, коли фактичний вміст дзеркала `.cursor/rules/n-<id>.mdc` відрізняється від очікуваного, що виникає при зміні канонічного `.mdc` без регенерації дзеркала.
14
12
 
15
13
  ## Поведінка
16
14
 
17
15
  listManagedMirrors
18
- Визначає список керованих дзеркал правил, що мають канонічне джерело у `npm/rules`.
16
+ Визначає список керованих дзеркал правил, які мають канонічне джерело в `npm/rules`.
19
17
 
20
18
  expectedMirrorContent
21
- Формує очікуваний вміст дзеркала, застосовуючи трансформації до канонічного файлу.
19
+ Створює очікуваний вміст дзеркала, трансформуючи канонічний файл з вбудованими шаблонами.
22
20
 
23
21
  findMirrorDrift
24
- Виявляє ідентифікатори дзеркал, чий фактичний вміст відрізняється від очікуваного.
22
+ Виявляє ідентифікатори дзеркал, чий фактичний вміст відрізняється від очікуваного вмісту, отриманого з канону.
25
23
 
26
24
  ## Публічний API
27
25
 
28
- listManagedMirrors — перераховує керовані дзеркала, які мають визначене основне джерело.
29
- expectedMirrorContent — визначає бажаний вміст дзеркала, використовуючи шаблонне заміщення даних.
30
- findMirrorDrift — знаходить ідентифікатори дзеркал, чий фактичний вміст відрізняється від очікуваного.
26
+ listManagedMirrors — перераховує лише ті дзеркала, які мають визначене основне джерело (канон).
27
+ expectedMirrorContent — визначає, як має виглядати вміст дзеркала, використовуючи канонічну версію з вбудованими шаблонами.
28
+ findMirrorDrift — виявляє ідентифікатори дзеркал, чий фактичний вміст відрізняється від очікуваного.
31
29
 
32
30
  ## Гарантії поведінки
33
31
 
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль надає легкий, лише для читання, інтерфейс для парсингу конфігурації `.n-cursor.json`. Він призначений для ізольованих, окремих викликів `check.mjs`. Модуль визначає стан кожного правила, ґрунтуючись на вмісті `.n-cursor.json`. Якщо файл відсутній, правило вважається активним (поведінка "open by default"). Якщо файл присутній, стан правила залежить від списків `rules` та `disableRules` у конфігурації. Модуль повертає об'єкт, що містить списки активних та вимкнених правил.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Парсер метаданих правил з `npm/rules/<id>/main.json` інтерпретує специфікації активації (`auto`) та області дії (`lint`). Він нормалізує логіку, визначену у `main.json.auto`, яка може бути константою `RULE_ALWAYS="завжди"`, списком залежностей, об'єктом з шаблоном `glob`, або предикатом. Код лише зчитує дані та не виконує операцій з файловою системою чи базами даних. При виникненні помилок він перехоплює їх, повертаючи безпечне значення замість винятків.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль керує процесом лінтування коду. Він визначає набір активних правил лінтування, використовуючи конфігурації з `meta.json` та `.n-cursor.json`. Модуль надає можливість вибрати ці правила за допомогою `selectLintRules` та ініціювати запуск перевірки коду за допомогою `runLint`.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 95
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Standalone CLI runner для одного правила. Викликається з `rules/<id>/check.mjs` у блоці `if (import.meta.main)`, що робить його повним еквівалентом `bun rules/<id>/check.mjs` або `npx @nitra/cursor fix <id>`. Цей запуск є свідомим (debug / override) і виконується без whitelist-гейту. Ініціалізує кеш для проходження файлової системи та виконує стандартну перевірку, друкуючи summary результату та повертаючи aggregated exit-code.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Файл оркеструє виконання одного правила під CLI `fix`. Він послідовно застосовує `applies`-гейт, а потім виконує JS-концерни та Policy-концерни. Резолвер ділить кеш між концернами, а кожен concern має власний механізм звітності, що об'єднується в єдиний exit-код правила. Процес спирається на конфігураційні файли, зокрема `target.json` та `.n-cursor.json`.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 90
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Спільна точка входу для канонічних `lint-<rule>` підкоманд `@nitra/cursor`. Файл серіалізує та дедуплікує запуски лінту через `withLock`. `ruleId` визначається зі шляху незалежно від глибини виклику (наприклад, `rules/<id>`). Це дозволяє уніфікувати крос-cutting концерни. Інтеграція з боку правила виглядає так:
14
12
 
15
13
  - import { runStandardLint } from '../../scripts/lib/run-standard-lint.mjs'
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 70
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Файл надає публічний API для оркестрації правил, який викликається з `rules/<id>/check.mjs`. Він інкапсулює логіку пошуку єдиного правила (`discoverOneRule`) та його виконання (`runRule`). Виконання обертається у `withLock` для дедуплікації паралельних запусків того самого правила на основі стану git-дерева. Локальна логіка в правилах заборонена; розширення поведінки відбувається через `ctx`-опції. Це централізована точка для запуску стандартних правил з кешуванням у межах одного прогону.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Спільний парсер метаданих скіла, що зчитує інформацію з `main.json`. Цей файл є єдиним джерелом правди для скіла. Модуль дозволяє визначати умови автоактивації скіла (через поле `auto`), вказувати, чи виконувати скіл в окремому git-worktree (`worktree`), та чи вимагає він запуску з кореня репозиторію (`requireRoot`). Надає константу `SKILL_ALWAYS` для безумовної активації. Хелпер використовується іншими компонентами для уникнення дублювання парсингу. Функції забезпечують перехоплення помилок (fail-safe), повертаючи порожнє значення замість винятків.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 95
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Форматує тривалість у форматі `<ціла>.<десята>s`. Генерує таблицю-резюме часу виконання для оркестратора `fix` або `lint`, яка включає детальні записи та загальний час прогону. Таблиця містить маркер `❌` для позначення невдач. Функція повертає готовий рядок із фінальним `\n`; друк здійснюється на стороні виклику.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Управляє вставкою інструкцій для виконання команд у ізольованому git-worktree у синкнутий `SKILL.md` (рішення D2 зі spec). Коли `main.json.worktree === true`, інструкції вставляються між маркерами `WORKTREE_START` та `WORKTREE_END`. Це забезпечує ре-синк ідемпотентність: наявний блок замінюється, а при `main.json.worktree === false` — видаляється. Механізм адаптований для агента, який читає `SKILL.md`.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Аналізує записи рунгів драбини з `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`.
14
12
 
15
13
  ## Поведінка
@@ -16,3 +16,4 @@ resource: npm/scripts/lib/fix/
16
16
  | [orchestrator.mjs](orchestrator.md) | JS Module |
17
17
  | [run-conformance-check.mjs](run-conformance-check.md) | JS Module |
18
18
  | [t0.mjs](t0.md) | JS Module |
19
+ | [verbose-block.mjs](verbose-block.md) | JS Module |
@@ -3,24 +3,34 @@ type: JS Module
3
3
  title: llm-worker.mjs
4
4
  resource: npm/scripts/lib/fix/llm-worker.mjs
5
5
  docgen:
6
- crc: 857c510e
6
+ crc: d6c0b516
7
7
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
8
  score: 100
9
9
  ---
10
10
 
11
- Модуль виправляє одне rule-порушення конформності через LLM: читає `.mdc` правила, дістає файли з violation-output, будує prompt і застосовує згенеровані зміни. Підтримує **feedback-режим** драбини ескалації — у повторний виклик передається контекст попереднього рунга, а модель спершу формулює `diagnosis` («чому попередня спроба не вдалася»), тоді виправляє.
11
+ ## Огляд
12
12
 
13
- ## Поведінка
13
+ Модуль взаємодіє з мовною моделлю для обробки правил та файлів. Він формує запит до моделі, отримує пропозиції щодо змін, які не застосовуються до файлової системи. Функція обробки гарантує перехоплення помилок (fail-safe) та не генерує винятків назовні.
14
14
 
15
- `runLlmWorker` читає `.mdc` правила, читає файли з violation-output, будує prompt і викликає модель через спільний `callLlm` (з міткою `caller` для wire-trace). Відповідь очікується як JSON `{diagnosis, changes}`; зміни застосовуються до файлів повним вмістом.
15
+ ## Поведінка
16
16
 
17
- Якщо переданий `feedback`, prompt додає блок попереднього рунга (модель, попередньо змінені файли, помилка) і просить діагностувати причину невдачі у полі `diagnosis`. Результат повертається з `changes` і `diagnosis` навіть при невдачі — щоб драбина (`orchestrator.mjs`) їх залогувала і прокинула далі.
17
+ 1. Викликає runLlmWorker для виправлення однієї проблеми.
18
+ 2. Зчитує вміст відповідного файлу правила.
19
+ 3. Витягує шляхи до файлів, які порушені, з вихідних даних про порушення.
20
+ 4. Зчитує вміст цих файлів.
21
+ 5. Формує повний текстовий запит для моделі, включаючи правило, вихідні дані про порушення, вміст файлів та, за наявності, контекст попередньої спроби.
22
+ 6. Відправляє цей запит моделі.
23
+ 7. У разі помилки при виклику моделі, повертає статус невдачі з деталями помилки.
24
+ 8. Якщо модель відповідає, парсить її відповідь, щоб отримати діагноз та список змін.
25
+ 9. У разі неможливості розібрати відповідь або відсутності змін, повертає статус невдачі.
26
+ 10. Якщо зміни успішно отримані, застосовує ці зміни до файлової системи проєкту.
27
+ 11. Повертає результат, що містить статус успіху, список застосованих змін, діагноз та метадані про запит.
18
28
 
19
29
  ## Публічний API
20
30
 
21
- - `runLlmWorker(ruleId, violationOutput, projectRoot, opts)` — виправляє одне порушення; `opts`: `model`, `feedback`, `caller`, `timeoutMs` (per-tier ліміт виклику; драбина задає коротший для локальних рунгів). Повертає `{ ok, error, changes, diagnosis }`.
31
+ runLlmWorker — виправляє одне порушення правила, використовуючи шаблон C1. Повертає результати виправлення чи діагнозу незалежно від успіху, що дозволяє наступним етапам системи отримувати інформацію про спробу. Поля про міркування та підсумок запиту використовуються для детального виводу в режимі `--full`. Дозволяє перевизначити модель, передати контекст попередніх спроб, позначити джерело виклику та встановити ліміти часу для кожного рівня виконання. Керує обсягом токенів, доступних для процесу мислення.
22
32
 
23
33
  ## Гарантії поведінки
24
34
 
25
- - Перехоплює помилки виклику моделі й не пропускає винятків назовні (fail-safe): дружнє повідомлення для відсутнього API-ключа хмарного провайдера.
26
- - Звертається до мережі під час виклику моделі (omlx HTTP або pi CLI, залежно від префікса model-id).
35
+ - Read-only: не виконує операцій запису (ФС/БД).
36
+ - Перехоплює помилки і не пропускає винятків назовні (fail-safe).
@@ -3,37 +3,31 @@ type: JS Module
3
3
  title: orchestrator.mjs
4
4
  resource: npm/scripts/lib/fix/orchestrator.mjs
5
5
  docgen:
6
- crc: 3bb1b761
6
+ crc: c34d0630
7
7
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
8
  score: 100
9
9
  ---
10
10
 
11
11
  ## Огляд
12
12
 
13
- Модуль відповідає за управління процесом виправлення порушень. Він будує послідовність тирів ескалації за допомогою `buildLadder`, парсить аргументи командного рядка за допомогою `parseOrchestratorArgs` та запускає повний цикл виправлення за допомогою `runOrchestratorCli`. Цей цикл включає автоматичний фікс та ескалацію через LLM-моделі, що реалізується функцією `escalateRule`.
13
+ Модуль відповідає за управління процесом вирішення порушень. Він будує послідовність тирів ескалації за допомогою `buildLadder`. Функція `parseOrchestratorArgs` визначає бюджет LLM та фільтр правил. Далі, `runOrchestratorCli` виконує процес виправлення правил, послідовно застосовуючи `escalateRule` по тирах до досягнення першого успішного вирішення.
14
14
 
15
15
  ## Поведінка
16
16
 
17
- buildLadder будує послідовність тирів ескалації для вирішення порушень, від локальних мінімальних моделей до хмарних середніх моделей.
18
- escalateRule виконує один прогін по послідовності тирів, намагаючись вирішити порушення, використовуючи LLM-моделі та фіксуючи результат.
19
- parseOrchestratorArgs парсить аргументи командного рядка для визначення максимального ліміту викликів хмарної моделі та фільтра правил.
20
- runOrchestratorCli керує повним процесом виправлення порушень: виконує початкову перевірку, застосовує детермінований фікс (T0-auto), а потім ініціює LLM-драбину ескалації для невирішених правил.
17
+ buildLadder будує послідовність тирів ескалації для вирішення порушень.
18
+ escalateRule проходить по послідовності тирів, намагаючись вирішити одне правило до першого успішного перевірки.
19
+ parseOrchestratorArgs парсить аргументи командного рядка для визначення максимального бюджету LLM та фільтра правил.
20
+ runOrchestratorCli виконує повний процес виправлення правил, використовуючи послідовність тирів та бюджет 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
+ escalateRule — Виконує один етап перевірки за драбиною ескалації. Для кожного кроку викликається модель, відбувається повторна перевірка правила, і результат фіксується в лозі. Процес може зупинитися достроково при певних умовах або після вичерпання ліміту.
30
27
 
31
- escalateRuleЗастосовує одне правило по драбині ескалації до першого позитивного результату.
32
- Кожен рунг — Викликає модель з попереднім відгуком, перевіряє правило, фіксує результат у лозі. Зупиняється при певних умовах (відсутність ключа, пропуск моделі, перевищення бюджету).
28
+ parseOrchestratorArgsВитягує максимальне значення для середнього бюджету з аргументів командного рядка та збирає список фільтрів правил.
33
29
 
34
- parseOrchestratorArgsВитягує максимальне значення середнього та список фільтрів правил з командного рядка.
35
-
36
- runOrchestratorCli — Запускає основну логіку оркестратора на основі аргументів командного рядка.
30
+ runOrchestratorCliЗапускає основний процес оркестрації, обробляючи аргументи та керуючи виконанням правил.
37
31
 
38
32
  ## Гарантії поведінки
39
33
 
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 90
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль реалізує прямий механізм виконання конформності, викликаючи конформність-фазу `lint`, движок (`orchestrator.mjs`, `t0.mjs`) та PostToolUse-хук. Селекція активних правил здійснюється на основі конфігурації `.n-cursor.json`. Для забезпечення ізоляції, кожен обраний `entrypoint rules/<id>/main.mjs` запускається окремим процесом `bun`.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль керує автоматичним застосуванням паттернів T0-auto до виводів порушень. Він використовує конфігурації з `extensions.json` та `package-lock.json` для визначення правил. Модуль фільтрує правила, які можуть бути автоматично оброблені, застосовує паттерни за допомогою `applyT0Auto`, а потім запускає повний цикл перевірки для всіх провальних правил через `runT0AutoCli`. Усі операції виконуються з механізмом fail-safe, що запобігає виникненню винятків назовні.
14
12
 
15
13
  ## Поведінка
@@ -0,0 +1,27 @@
1
+ ---
2
+ type: JS Module
3
+ title: verbose-block.mjs
4
+ resource: npm/scripts/lib/fix/verbose-block.mjs
5
+ docgen:
6
+ crc: 1a921dca
7
+ model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
+ score: 100
9
+ ---
10
+
11
+ Цей файл виводить детальний блок інформації після кожного LLM-рунга у режимі `--full`. Він друкує стислий опис промпту, включаючи деталі про правила, порушення та зворотний зв'язок. Також виводиться монолог моделі, якщо він присутній. Вивід блоку вимикається при встановленні `N_CURSOR_FIX_VERBOSE=off`.
12
+
13
+ ## Поведінка
14
+
15
+ 1. Викликається `printVerboseBlock` для виведення детальної інформації після кожного LLM-рунга у режимі `--full`.
16
+ 2. `printVerboseBlock` виводить стислий опис промпту, включаючи ID правила, довжину правила, довжину порушення, кількість та розмір файлів, а також інформацію про зворотний зв'язок (наявність, модель, кількість змін, помилка).
17
+ 3. Якщо надано монолог моделі (reasoning), `printVerboseBlock` виводить його, показуючи прев'ю (з можливим зазначенням загальної довжини), і вказує джерело цього монологу.
18
+ 4. Якщо монологу моделі немає, `printVerboseBlock` виводить повідомлення про відсутність монологу.
19
+ 5. Виведення здійснюється лише якщо змінна середовища `N_CURSOR_FIX_VERBOSE` не встановлена як `off`.
20
+
21
+ ## Публічний API
22
+
23
+ printVerboseBlock — виводить детальний опис промпту та внутрішній роздум моделі після символу завершення рядка рунга.
24
+
25
+ ## Гарантії поведінки
26
+
27
+ - Read-only: не виконує операцій запису (ФС/БД).