@nitra/cursor 12.15.0 → 12.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/bin/n-cursor.js +1 -10
- package/package.json +1 -1
- package/rules/bun/docs/main.md +7 -6
- package/rules/python/docs/main.md +11 -11
- package/rules/rust/docs/main.md +5 -5
- package/scripts/docs/update-blue-oak.md +8 -8
- package/scripts/lib/docs/discover-checkable-rules.md +6 -6
- package/scripts/lib/docs/inline-template-links.md +8 -6
- package/scripts/lib/docs/list-project-rules-mdc.md +5 -3
- package/scripts/lib/docs/root-notice.md +13 -16
- package/scripts/lib/docs/run-lint.md +10 -8
- package/scripts/lib/docs/skill-meta.md +11 -9
- package/scripts/lib/fix/docs/discover-t0-patterns.md +10 -13
- package/scripts/lib/fix/docs/index.md +0 -1
- package/scripts/lib/fix/docs/llm-worker.md +8 -13
- package/scripts/lib/fix/docs/orchestrator.md +19 -10
- package/scripts/lib/fix/llm-worker.mjs +57 -43
- package/scripts/lib/fix/orchestrator.mjs +5 -4
- package/scripts/lib/run-lint.mjs +2 -10
- package/scripts/utils/docs/walkDir.md +17 -20
- package/scripts/lib/fix/analyze-escalation.mjs +0 -353
- package/scripts/lib/fix/docs/analyze-escalation.md +0 -44
package/CHANGELOG.md
CHANGED
package/bin/n-cursor.js
CHANGED
|
@@ -1528,15 +1528,6 @@ try {
|
|
|
1528
1528
|
|
|
1529
1529
|
break
|
|
1530
1530
|
}
|
|
1531
|
-
case 'analyze-escalation': {
|
|
1532
|
-
// n-cursor analyze-escalation — читає весь escalation-лог (.n-cursor/fix-escalation.jsonl),
|
|
1533
|
-
// чанкує й просить хмарну avg-модель запропонувати, як зменшити LLM-залежність fix-
|
|
1534
|
-
// конформності (нові T0-патерни / правки .mdc / зміни скриптів). Звіт → markdown.
|
|
1535
|
-
const { runEscalationAnalysisCli } = await import('../scripts/lib/fix/analyze-escalation.mjs')
|
|
1536
|
-
process.exitCode = await runEscalationAnalysisCli(args)
|
|
1537
|
-
|
|
1538
|
-
break
|
|
1539
|
-
}
|
|
1540
1531
|
case 'taze': {
|
|
1541
1532
|
// n-cursor taze diff — read-only semver-diff package.json ↔ package.json.taze-bak
|
|
1542
1533
|
// (root + воркспейси) для скілу n-taze: скрипт класифікує major-оновлення,
|
|
@@ -1575,7 +1566,7 @@ try {
|
|
|
1575
1566
|
default: {
|
|
1576
1567
|
console.error(`❌ Невідома команда: ${command}`)
|
|
1577
1568
|
console.error(
|
|
1578
|
-
` Очікується: (без аргументів) синхронізація правил, rename-yaml-extensions, hook, adr-normalize-local, lint (включно зі scope: lint ga|rego|k8s|docker|text),
|
|
1569
|
+
` Очікується: (без аргументів) синхронізація правил, rename-yaml-extensions, hook, adr-normalize-local, lint (включно зі scope: lint ga|rego|k8s|docker|text), taze, release, skill, doc-aggregate`
|
|
1579
1570
|
)
|
|
1580
1571
|
process.exitCode = 1
|
|
1581
1572
|
}
|
package/package.json
CHANGED
package/rules/bun/docs/main.md
CHANGED
|
@@ -3,24 +3,25 @@ type: JS Module
|
|
|
3
3
|
title: main.mjs
|
|
4
4
|
resource: npm/rules/bun/main.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
6
|
+
crc: 7cca0901
|
|
7
7
|
model: omlx/gemma-4-e4b-it-OptiQ-4bit
|
|
8
8
|
score: 100
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
## Огляд
|
|
12
12
|
|
|
13
|
-
Модуль
|
|
13
|
+
Модуль виконує виконання політики доступу до коду проєкту та перевірку ліцензій залежностей. Функція `run` застосовує політику, що включає посилання на (bun.mdc), тоді як функція `lint` перевіряє ліцензії npm-залежностей відповідно до конфігурації, визначеної у .licensee.json. Кешування результатів відбувається у межах одного прогону.
|
|
14
14
|
|
|
15
15
|
## Поведінка
|
|
16
16
|
|
|
17
|
-
run виконує перевірку, застосовуючи політику до
|
|
18
|
-
|
|
17
|
+
run виконує перевірку, застосовуючи політику до коду проєкту, включаючи посилання на mdc.
|
|
18
|
+
|
|
19
|
+
lint виконує перевірку ліцензій npm-залежностей через `.licensee.json`. У fix-режимі створює `.licensee.json` з дефолтним allowlist (blueOak: bronze), а у readOnly (CI) відсутність файлу призводить до невдачі.
|
|
19
20
|
|
|
20
21
|
## Публічний API
|
|
21
22
|
|
|
22
|
-
run —
|
|
23
|
-
lint —
|
|
23
|
+
run — виконує основний потік правила: застосовує логіку, перевіряє відповідність політикам та посиланням (bun.mdc).
|
|
24
|
+
lint — проводить перевірку ліцензій npm-залежностей у всьому репозиторії. У режимі `--full` і `--fix` автоматично створює файл .licensee.json, якщо він відсутній.
|
|
24
25
|
|
|
25
26
|
## Гарантії поведінки
|
|
26
27
|
|
|
@@ -3,28 +3,28 @@ type: JS Module
|
|
|
3
3
|
title: main.mjs
|
|
4
4
|
resource: npm/rules/python/main.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
6
|
+
crc: 2bdec93d
|
|
7
7
|
model: omlx/gemma-4-e4b-it-OptiQ-4bit
|
|
8
|
-
score:
|
|
8
|
+
score: 95
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
## Огляд
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Цей модуль виконує послідовність кроків для забезпечення якості коду Python, використовуючи інструменти з екосистеми [uv](https://docs.astral.sh/uv/). Якщо файл `pyproject.toml` відсутній у корені, процес завершується з кодом 0 без запуску інструментів. Якщо файл присутній, але `uv` не знайдено в PATH, це розглядається як помилка. Модуль гарантує актуальність lock-файлу (`uv lock --check`) та збірку середовища (`uv sync --frozen`) перед запуском лінтерів. Опціональні лінтери запускаються лише за умови їх доступності через `uv run`.
|
|
14
14
|
|
|
15
15
|
## Поведінка
|
|
16
16
|
|
|
17
|
-
run виконує стандартну перевірку
|
|
18
|
-
runLintPythonSteps виконує повний
|
|
19
|
-
runLintPython запускає
|
|
20
|
-
lint оркеструє запуск `runLintPython
|
|
17
|
+
run виконує стандартну перевірку проєкту, використовуючи контекст прогону.
|
|
18
|
+
runLintPythonSteps виконує повний набір кроків лінтування Python, включаючи перевірку `pyproject.toml`, виконання `uv lock --check` та `uv sync --frozen`, а також запуск опціональних лінтерів (`ruff`, `mypy`) та перевірку ліцензій.
|
|
19
|
+
runLintPython запускає повний процес лінтування Python, серіалізуючи його через стандартний механізм перевірки.
|
|
20
|
+
lint оркеструє запуск `runLintPython`, надаючи можливість вказати режим без мутацій (`readOnly`).
|
|
21
21
|
|
|
22
22
|
## Публічний API
|
|
23
23
|
|
|
24
|
-
run —
|
|
25
|
-
runLintPythonSteps — Виконує внутрішні етапи перевірки
|
|
26
|
-
runLintPython — Публічний інтерфейс
|
|
27
|
-
lint —
|
|
24
|
+
run — Основна точка входу правила, яка виконує перевірку (JS-занепокложення $\rightarrow$ політика $\rightarrow$ mdc-посилання) та викликає перевірку якості коду.
|
|
25
|
+
runLintPythonSteps — Виконує внутрішні етапи перевірки якості Python-коду без збереження логів.
|
|
26
|
+
runLintPython — Публічний інтерфейс для запуску перевірки якості Python-коду, який синхронізується з станом Git-дерева.
|
|
27
|
+
lint — Координатор, що ініціює запуск перевірки якості Python-коду, делегуючи цю роботу `runLintPython`.
|
|
28
28
|
|
|
29
29
|
## Гарантії поведінки
|
|
30
30
|
|
package/rules/rust/docs/main.md
CHANGED
|
@@ -3,25 +3,25 @@ type: JS Module
|
|
|
3
3
|
title: main.mjs
|
|
4
4
|
resource: npm/rules/rust/main.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
6
|
+
crc: 93dfaee0
|
|
7
7
|
model: omlx/gemma-4-e4b-it-OptiQ-4bit
|
|
8
8
|
score: 100
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
## Огляд
|
|
12
12
|
|
|
13
|
-
Модуль надає
|
|
13
|
+
Модуль надає функції `run` та `lint` для аналізу коду на Rust. Функція `lint` виконує стандартну перевірку коду. Функція `run` запускає повну оркестрацію, яка включає форматування за допомогою `rustfmt` та статичний аналіз за допомогою `clippy` через `cargo` (rust.mdc).
|
|
14
14
|
|
|
15
15
|
## Поведінка
|
|
16
16
|
|
|
17
17
|
run виконує стандартну перевірку для Rust-коду.
|
|
18
18
|
|
|
19
|
-
lint запускає оркестрацію перевірки Rust-коду,
|
|
19
|
+
lint запускає оркестрацію перевірки Rust-коду, виконуючи `rustfmt` та `clippy` через `cargo`.
|
|
20
20
|
|
|
21
21
|
## Публічний API
|
|
22
22
|
|
|
23
|
-
run — виконує основну
|
|
24
|
-
lint — забезпечує
|
|
23
|
+
run — виконує основну логіку: перевіряє відповідність вимогам (JS-занепокложення $\rightarrow$ політика $\rightarrow$ mdc-посилання) (rust.mdc).
|
|
24
|
+
lint — забезпечує оркестрацію для статичного аналізу коду Rust.
|
|
25
25
|
|
|
26
26
|
## Гарантії поведінки
|
|
27
27
|
|
|
@@ -3,25 +3,25 @@ type: JS Module
|
|
|
3
3
|
title: update-blue-oak.mjs
|
|
4
4
|
resource: npm/scripts/update-blue-oak.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
6
|
+
crc: dac30fed
|
|
7
7
|
model: omlx/gemma-4-e4b-it-OptiQ-4bit
|
|
8
8
|
score: 95
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
## Огляд
|
|
12
12
|
|
|
13
|
-
Оновлює вбудований список ліцензій Blue Oak Council,
|
|
13
|
+
Оновлює вбудований список ліцензій Blue Oak Council, звертаючись до мережі за даними з https://blueoakcouncil.org/list.json. Цей процес створює або оновлює файл npm/data/blue-oak.json, який містить SPDX-ідентифікатори ліцензій рівнів Model, Gold, Silver та Bronze. Запуск здійснюється вручну у `@nitra/cursor` за допомогою команди `bun npm/scripts/update-blue-oak.mjs`. Оновлення необхідне при апгрейді @nitra/cursor, оскільки нові permissive ліцензії з'являються рідко. Lead-рівень (найгірший, GPL-compatible) навмисно виключений.
|
|
14
14
|
|
|
15
15
|
## Поведінка
|
|
16
16
|
|
|
17
17
|
1. Завантажує дані з https://blueoakcouncil.org/list.json.
|
|
18
|
-
2. Перевіряє успішність отримання даних. У разі невдачі
|
|
19
|
-
3. Парсить
|
|
18
|
+
2. Перевіряє успішність отримання даних. У разі невдачі припиняє виконання.
|
|
19
|
+
3. Парсить отримані дані.
|
|
20
20
|
4. Ітерує по рейтингах у даних.
|
|
21
|
-
5.
|
|
22
|
-
6.
|
|
23
|
-
7. Формує об'єкт, що містить версію
|
|
24
|
-
8. Зберігає цей об'єкт у файл blue-oak.json
|
|
21
|
+
5. Вибирає лише рейтинги Model, Gold, Silver та Bronze.
|
|
22
|
+
6. Збирає всі SPDX-ідентифікатори ліцензій, що належать до обраних рейтингів.
|
|
23
|
+
7. Формує об'єкт, що містить версію та список зібраних SPDX-ідентифікаторів.
|
|
24
|
+
8. Зберігає цей об'єкт у файл npm/data/blue-oak.json.
|
|
25
25
|
|
|
26
26
|
## Гарантії поведінки
|
|
27
27
|
|
|
@@ -3,24 +3,24 @@ type: JS Module
|
|
|
3
3
|
title: discover-checkable-rules.mjs
|
|
4
4
|
resource: npm/scripts/lib/discover-checkable-rules.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
6
|
+
crc: d06cd969
|
|
7
7
|
model: omlx/gemma-4-e4b-it-OptiQ-4bit
|
|
8
8
|
score: 100
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
## Огляд
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Визначає наявність JS-концернів та policy-концернів у заданому каталозі правила. Сканує всі каталоги правил, шукаючи JS-концерни у файлах `rules/<id>/js/<concern>.mjs` та policy-концерни, що асоціюються з парою `<concern>.rego` та `target.json`. Повертає список правил, які містять такі прогонні частини. Файли з префіксом `_` або `*.test.mjs` ігноруються.
|
|
14
14
|
|
|
15
15
|
## Поведінка
|
|
16
16
|
|
|
17
|
-
discoverOneRule описує
|
|
18
|
-
discoverCheckableRules сканує каталог
|
|
17
|
+
discoverOneRule описує правило, виявляючи JS-концерни та policy-концерни в заданому каталозі правила.
|
|
18
|
+
discoverCheckableRules сканує каталог правил і повертає список правил, які мають JS-концерни або policy-концерни, фільтруючи ті, що не мають прогонних частин.
|
|
19
19
|
|
|
20
20
|
## Публічний API
|
|
21
21
|
|
|
22
|
-
discoverOneRule —
|
|
23
|
-
discoverCheckableRules —
|
|
22
|
+
- discoverOneRule — Створює об'єкт для одного правила, що перевіряє конкретний каталог.
|
|
23
|
+
- discoverCheckableRules — Знаходить правила у каталозі `rules/`, які мають відповідні скрипти (у `js/`) або політики (у `policy/`). Ігнорує правила, що містять лише документацію.
|
|
24
24
|
|
|
25
25
|
## Гарантії поведінки
|
|
26
26
|
|
|
@@ -3,22 +3,24 @@ 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:
|
|
6
|
+
crc: 252fb1e1
|
|
7
7
|
model: omlx/gemma-4-e4b-it-OptiQ-4bit
|
|
8
8
|
score: 100
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
## Огляд
|
|
12
|
+
|
|
13
|
+
Модуль збагачує текстовий контент, використовуючи конфігурації з package.json.snippet.json та package.json. Функція inlineTemplateLinks замінює текстові посилання на шаблони вбудованими блоками, якщо відповідні файли знаходяться у директорії правил. Функція appendDiscoveredMdcFiles доповнює текст вмістом усіх знайдених файлів `.mdc` з піддиректорій `js/` та `policy/` у директорії правил.
|
|
12
14
|
|
|
13
15
|
## Поведінка
|
|
14
16
|
|
|
15
|
-
inlineTemplateLinks замінює посилання на шаблони в тексті на вбудовані блоки з вмістом
|
|
16
|
-
appendDiscoveredMdcFiles додає вміст усіх знайдених файлів
|
|
17
|
+
inlineTemplateLinks замінює посилання на шаблони в тексті на вбудовані блоки з вмістом файлу, якщо ці файли існують у вказаній директорії правил.
|
|
18
|
+
appendDiscoveredMdcFiles додає до кінця тексту вміст усіх знайдених файлів `.mdc` з піддиректорій `js/` та `policy/` у директорії правил.
|
|
17
19
|
|
|
18
20
|
## Публічний API
|
|
19
21
|
|
|
20
|
-
inlineTemplateLinks — Замінює посилання
|
|
21
|
-
appendDiscoveredMdcFiles — Додає всі знайдені файли
|
|
22
|
+
inlineTemplateLinks — Замінює посилання на шаблони в Markdown на вбудовані блоки, якщо шлях містить `/template/`. Помилка виникає, якщо цільовий файл посилання відсутній.
|
|
23
|
+
appendDiscoveredMdcFiles — Додає всі знайдені файли `.mdc` з папок `js/` та `policy/<concern>/`. Файли з `js/` йдуть першими, а потім файли з підпапок `policy/<concern>/` (у алфавітному порядку за `concern`, а потім за назвою файлу).
|
|
22
24
|
|
|
23
25
|
## Гарантії поведінки
|
|
24
26
|
|
|
@@ -3,17 +3,19 @@ type: JS Module
|
|
|
3
3
|
title: list-project-rules-mdc.mjs
|
|
4
4
|
resource: npm/scripts/lib/list-project-rules-mdc.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
6
|
+
crc: 59fe0e6e
|
|
7
7
|
model: omlx/gemma-4-e4b-it-OptiQ-4bit
|
|
8
8
|
score: 100
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
## Огляд
|
|
12
|
+
|
|
13
|
+
Цей модуль визначає шлях до правил у проєкті-споживачі, що константою експортується як CURSOR_RULES_DIR=".cursor/rules". Він надає відсортований список імен файлів `.mdc` з каталогу правил. Це дозволяє розділити логіку диспетчеризації командного інтерфейсу та логіку перевірки конформності. Функція зчитує та повертає список файлів, якщо каталог правил існує.
|
|
12
14
|
|
|
13
15
|
## Поведінка
|
|
14
16
|
|
|
15
17
|
CURSOR_RULES_DIR — Вказує на каталог правил у проєкті-споживачі.
|
|
16
|
-
listProjectRulesMdcFiles — Повертає відсортований список імен файлів
|
|
18
|
+
listProjectRulesMdcFiles — Повертає відсортований список імен файлів `.mdc` з каталогу правил проєкту-споживача, якщо цей каталог існує.
|
|
17
19
|
|
|
18
20
|
## Публічний API
|
|
19
21
|
|
|
@@ -3,30 +3,27 @@ type: JS Module
|
|
|
3
3
|
title: root-notice.mjs
|
|
4
4
|
resource: npm/scripts/lib/root-notice.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
6
|
+
crc: 65db7d81
|
|
7
|
+
model: omlx/gemma-4-e4b-it-OptiQ-4bit
|
|
8
|
+
score: 100
|
|
7
9
|
---
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
## Огляд
|
|
12
|
+
|
|
13
|
+
Цей модуль вшиває інструкцію для агента у файл `SKILL.md`. Інструкція вказує, що скіл мутує проєкт у поточному каталозі, але виконується in-place (без worktree-ізоляції), що відповідає конфігурації `meta.json` $\to$ `requireRoot: true` і `worktree: false`. Це застосовується до скілів, які змінюють `meta.json` або `package.json` безпосередньо, на відміну від worktree-скілів, які мають свій `root-assert` у `worktree-notice.mjs`. Блок є інструкцією агенту, що читає `SKILL.md`, і є ре-синк ідемпотентним: наявний блок замінюється, при `false` — видаляється. Програмний аналог для CLI-команд — `assertCwdIsProjectRoot`. Інструкція позначається маркерами `ROOT_START` ("<!-- n-cursor:root:start -->") та `ROOT_END` ("<!-- n-cursor:root:end -->").
|
|
10
14
|
|
|
11
15
|
## Поведінка
|
|
12
16
|
|
|
13
|
-
ROOT_START:
|
|
14
|
-
ROOT_END:
|
|
15
|
-
injectRootNotice:
|
|
17
|
+
ROOT_START: Позначає початок блоку інструкції щодо перевірки кореня репозиторію.
|
|
18
|
+
ROOT_END: Позначає кінець блоку інструкції щодо перевірки кореня репозиторію.
|
|
19
|
+
injectRootNotice: Вставляє, оновлює або видаляє блок інструкції щодо перевірки кореня репозиторію у вмісті файлу `SKILL.md` на основі булевого прапорця.
|
|
16
20
|
|
|
17
21
|
## Публічний API
|
|
18
22
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
23
|
+
ROOT_START — маркер початку основного блоку документації.
|
|
24
|
+
ROOT_END — маркер завершення основного блоку документації.
|
|
25
|
+
injectRootNotice — додає, змінює або видаляє захисний блок у файлі `SKILL.md`.
|
|
22
26
|
|
|
23
27
|
## Гарантії поведінки
|
|
24
28
|
|
|
25
|
-
-
|
|
26
|
-
- Якщо `requireRoot: false`, то блок не вставляється.
|
|
27
|
-
- Вставка відбувається лише між маркерами.
|
|
28
|
-
- Вставка ре-синк ідемпотентно: наявний блок замінюється.
|
|
29
|
-
- `ROOT_START` викликається перед вставкою блоку.
|
|
30
|
-
- `ROOT_END` викликається після вставки блоку.
|
|
31
|
-
- `injectRootNotice` викликається під час вставки блоку.
|
|
32
|
-
- Немає кешування.
|
|
29
|
+
- Read-only: не виконує операцій запису (ФС/БД).
|
|
@@ -3,26 +3,28 @@ type: JS Module
|
|
|
3
3
|
title: run-lint.mjs
|
|
4
4
|
resource: npm/scripts/lib/run-lint.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
6
|
+
crc: 3c7deca0
|
|
7
7
|
model: omlx/gemma-4-e4b-it-OptiQ-4bit
|
|
8
8
|
score: 100
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
## Огляд
|
|
12
|
+
|
|
13
|
+
Модуль визначає набір правил лінтування, спираючись на конфігурації `meta.json` та `.n-cursor.json`. Він використовує `selectLintRules` для вибору та сортування цих правил, а потім ініціалізує процес перевірки конформності та форматування за допомогою `runLint` у різних режимах (scoped, hook, delta, full).
|
|
12
14
|
|
|
13
15
|
## Поведінка
|
|
14
16
|
|
|
15
|
-
selectLintRules
|
|
16
|
-
runLint запускає
|
|
17
|
+
selectLintRules вибирає і алфавітно сортує ідентифікатори правил для лінтування на основі їхньої метаінформації та стану активації в `.n-cursor.json`.
|
|
18
|
+
runLint запускає лінт-оркестрацію, виконуючи різні режими залежно від наданих опцій: scoped (за назвами правил), hook (за явним списком файлів), delta (зміна відносно origin) або full (весь репозиторій), включаючи конформність та форматування у fix-режимі.
|
|
17
19
|
|
|
18
20
|
## Публічний API
|
|
19
21
|
|
|
20
|
-
selectLintRules —
|
|
22
|
+
selectLintRules — обирає ідентифікатори правил для контексту, у алфавітному порядку.
|
|
21
23
|
runLint — ініціює процес лінтування.
|
|
22
24
|
full — аналізує весь репозиторій, порівнюючи поточний стан із початковим.
|
|
23
|
-
readOnly — лише виявляє
|
|
24
|
-
rules — виконує повний прогін лише для заданого набору
|
|
25
|
-
files —
|
|
25
|
+
readOnly — лише виявляє проблеми без внесення змін.
|
|
26
|
+
rules — виконує повний прогін лише для заданого набору правил.
|
|
27
|
+
files — застосовує правила до конкретного переліку файлів у режимі хука.
|
|
26
28
|
|
|
27
29
|
## Гарантії поведінки
|
|
28
30
|
|
|
@@ -3,26 +3,28 @@ type: JS Module
|
|
|
3
3
|
title: skill-meta.mjs
|
|
4
4
|
resource: npm/scripts/lib/skill-meta.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
6
|
+
crc: 9ff67388
|
|
7
7
|
model: omlx/gemma-4-e4b-it-OptiQ-4bit
|
|
8
8
|
score: 100
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
## Огляд
|
|
12
|
+
|
|
13
|
+
Спільний парсер метаданих скіла, що зчитує дані з `main.json`. `main.json` є єдиним джерелом правди для скіла, визначаючи його умови автоактивації (`auto`, де `SKILL_ALWAYS` означає "завжди"), чи виконувати скіл в окремому git-worktree (`worktree`), та чи вимагає він запуску з кореня репозиторію (`requireRoot`). Модуль надає функції для читання сирих метаданих та визначення умов, використовуючи механізм fail-safe, який перехоплює помилки, не кидаючи винятків. Цим хелпером користуються `auto-skills.mjs`, `n-cursor.js` та `npm-module/js/skill_meta.mjs`.
|
|
12
14
|
|
|
13
15
|
## Поведінка
|
|
14
16
|
|
|
15
17
|
SKILL_ALWAYS — надає літерал для безумовної автоактивації скіла.
|
|
16
|
-
parseSkillAutoSpec — перетворює значення поля `auto` з `main.json` у специфікацію
|
|
17
|
-
skillRequiresRoot — визначає, чи вимагає скіл запуску з кореня репозиторію,
|
|
18
|
-
readSkillMetaRaw — читає та парсить файл `main.json`
|
|
18
|
+
parseSkillAutoSpec — перетворює значення поля `auto` з `main.json` у специфікацію автоактивації скіла.
|
|
19
|
+
skillRequiresRoot — визначає, чи вимагає скіл запуску з кореня репозиторію, на основі метаданих.
|
|
20
|
+
readSkillMetaRaw — читає та парсить файл `main.json` з каталогу скіла, повертаючи його вміст або `null` у разі помилки.
|
|
19
21
|
|
|
20
22
|
## Публічний API
|
|
21
23
|
|
|
22
|
-
SKILL_ALWAYS — позначка для безумовної
|
|
23
|
-
parseSkillAutoSpec — витягує налаштування автоматичного запуску
|
|
24
|
-
skillRequiresRoot — визначає, чи потрібен запуск скіла з кореня репозиторію
|
|
25
|
-
readSkillMetaRaw — зчитує та
|
|
24
|
+
SKILL_ALWAYS — позначка для безумовної активації
|
|
25
|
+
parseSkillAutoSpec — витягує налаштування автоматичного запуску зі `main.json`
|
|
26
|
+
skillRequiresRoot — визначає, чи потрібен запуск скіла з кореня репозиторію
|
|
27
|
+
readSkillMetaRaw — зчитує та аналізує метадані окремого скіла з `main.json`
|
|
26
28
|
|
|
27
29
|
## Гарантії поведінки
|
|
28
30
|
|
|
@@ -3,28 +3,25 @@ type: JS Module
|
|
|
3
3
|
title: discover-t0-patterns.mjs
|
|
4
4
|
resource: npm/scripts/lib/fix/discover-t0-patterns.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
6
|
+
crc: 3f3b47e0
|
|
7
7
|
model: omlx/gemma-4-e4b-it-OptiQ-4bit
|
|
8
8
|
score: 100
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
## Огляд
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Сканує директорії `npm/rules/{rule}/js/fix-*.mjs` та `npm/rules/{rule}/policy/{concern}/fix-*.mjs` для всіх правил. Динамічно імпортує кожен знайдений файл `fix-*.mjs` та збирає масиви `patterns`. Результат ініціалізується через top-level await у `t0.mjs` і представляє унікальний список усіх виявлених T0-паттернів. Функція не виконує операцій запису та перехоплює помилки, повертаючи `null` у випадку збоїв замість викидання винятків.
|
|
14
14
|
|
|
15
15
|
## Поведінка
|
|
16
16
|
|
|
17
|
-
1. Перевіряє існування
|
|
18
|
-
2.
|
|
19
|
-
3. Для кожного
|
|
20
|
-
а.
|
|
21
|
-
б.
|
|
22
|
-
в.
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
е. У разі помилки імпорту, помилка виводиться в консоль, але процес продовжується.
|
|
26
|
-
4. Після обробки всіх правил, виконується дедуплікація загального списку паттернів за їхніми ідентифікаторами.
|
|
27
|
-
5. Повертається фінальний, унікальний масив T0-паттернів.
|
|
17
|
+
1. Перевіряє існування шляху `rulesDir`. Якщо шлях не існує, повертає порожній масив.
|
|
18
|
+
2. Знаходить усі файли з шаблонами у шляхах `*/js/fix-*.mjs` та `*/policy/*/fix-*.mjs` у межах `rulesDir`.
|
|
19
|
+
3. Для кожного знайденого файлу:
|
|
20
|
+
а. Намагається динамічно імпортувати вміст файлу.
|
|
21
|
+
б. Якщо імпорт успішний і вміст містить масив `patterns`, додає ці паттерни до загального списку.
|
|
22
|
+
в. Якщо імпорт не вдається, реєструє помилку, але продовжує роботу.
|
|
23
|
+
4. Фільтрує загальний список паттернів, щоб уникнути дублікатів, зберігаючи лише перше входження кожного паттерна за його ідентифікатором.
|
|
24
|
+
5. Повертає відфільтрований масив унікальних T0-паттернів.
|
|
28
25
|
|
|
29
26
|
## Публічний API
|
|
30
27
|
|
|
@@ -8,7 +8,6 @@ resource: npm/scripts/lib/fix/
|
|
|
8
8
|
|
|
9
9
|
| Файл | Тип |
|
|
10
10
|
| ----------------------------------------------------- | --------- |
|
|
11
|
-
| [analyze-escalation.mjs](analyze-escalation.md) | JS Module |
|
|
12
11
|
| [discover-t0-patterns.mjs](discover-t0-patterns.md) | JS Module |
|
|
13
12
|
| [escalation-log.mjs](escalation-log.md) | JS Module |
|
|
14
13
|
| [llm-fix-apply.mjs](llm-fix-apply.md) | JS Module |
|
|
@@ -3,31 +3,26 @@ type: JS Module
|
|
|
3
3
|
title: llm-worker.mjs
|
|
4
4
|
resource: npm/scripts/lib/fix/llm-worker.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
6
|
+
crc: b5e54981
|
|
7
7
|
model: omlx/gemma-4-e4b-it-OptiQ-4bit
|
|
8
8
|
score: 100
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
## Огляд
|
|
12
12
|
|
|
13
|
-
Модуль
|
|
13
|
+
Модуль витягує унікальні відносні шляхи файлів з даних про порушення, використовуючи конфігурацію з target.json. Потім він викликає LLM для генерації змін, які виправляють кожне порушення.
|
|
14
14
|
|
|
15
15
|
## Поведінка
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
`selectSubCheckMdc` читає `policy/<concern>/target.json` з каталогу `npm/rules/{ruleId}/` пакету, знаходить concerns із `files.single`, що відповідають failing-файлам із violation output, і повертає конкатенацію відповідних `.mdc`. Повертає `null` якщо правило не має policy-підкаталогу або жоден concern не збігається з ❌-файлами.
|
|
20
|
-
|
|
21
|
-
`runLlmWorker` спочатку викликає `selectSubCheckMdc` — і якщо отримує match, передає моделі лише той sub-check `.mdc`. Якщо match немає — fallback на повний `n-{id}.mdc`. Далі читає файли з violation output, будує prompt, викликає LLM через `callLlmRich` і застосовує зміни.
|
|
17
|
+
extractFilePaths витягує унікальні відносні шляхи файлів з вихідних даних про порушення, розпізнаючи як явні помилки, так і контекст файлів.
|
|
18
|
+
runLlmWorker виправляє одне порушення правила, викликаючи LLM для генерації змін, парсить відповідь та застосовує зміни до файлової системи.
|
|
22
19
|
|
|
23
20
|
## Публічний API
|
|
24
21
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
`runLlmWorker(ruleId, violationOutput, projectRoot, opts)` — виправляє одне порушення правила через LLM. Повертає `{ ok, error?, changes, diagnosis, reasoning, reasoningSource, promptSummary }`. `promptSummary.subCheckMdc: boolean` вказує чи використано точковий sub-check замість повного mdc.
|
|
22
|
+
extractFilePaths — Визначає шляхи файлів, які потребують виправлення, використовуючи `target.json` як пріоритет, а у разі його відсутності — всі знайдені шляхи.
|
|
23
|
+
runLlmWorker — Виправляє одне порушення правила, використовуючи модель LLM. Повертає результати виправлення або діагностики, які використовуються для подальшої обробки.
|
|
28
24
|
|
|
29
25
|
## Гарантії поведінки
|
|
30
26
|
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
- Перехоплює всі помилки LLM і повертає структурований `{ ok: false, error }`.
|
|
27
|
+
- Read-only: не виконує операцій запису (ФС/БД).
|
|
28
|
+
- Перехоплює помилки і не пропускає винятків назовні (fail-safe).
|
|
@@ -3,29 +3,38 @@ type: JS Module
|
|
|
3
3
|
title: orchestrator.mjs
|
|
4
4
|
resource: npm/scripts/lib/fix/orchestrator.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
6
|
+
crc: c6f15470
|
|
7
7
|
model: omlx/gemma-4-e4b-it-OptiQ-4bit
|
|
8
8
|
score: 100
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
## Огляд
|
|
12
|
+
|
|
13
|
+
Модуль відповідає за оркестрацію вирішення порушень. Він парсить аргументи для визначення бюджету та фільтрів за допомогою `parseOrchestratorArgs`. Потім він будує послідовність тирів ескалації, використовуючи `buildLadder`, і може ескалувати правила за допомогою `escalateRule`. Нарешті, він виконує повний цикл фіксації порушень через `runOrchestratorCli`.
|
|
12
14
|
|
|
13
15
|
## Поведінка
|
|
14
16
|
|
|
15
|
-
buildLadder будує послідовність тирів ескалації для вирішення
|
|
16
|
-
escalateRule
|
|
17
|
-
parseOrchestratorArgs парсить аргументи командного
|
|
18
|
-
runOrchestratorCli виконує повний
|
|
17
|
+
buildLadder будує послідовність тирів ескалації для вирішення порушень, від локальних до хмарних моделей.
|
|
18
|
+
escalateRule проводить один прогін по послідовності тирів, намагаючись вирішити порушення, і повертає статус вирішення та використаний бюджет хмарних викликів.
|
|
19
|
+
parseOrchestratorArgs парсить аргументи командного рядка, щоб визначити максимальний бюджет хмарних викликів та фільтр правил.
|
|
20
|
+
runOrchestratorCli виконує повний цикл фіксації порушень: початкова перевірка, детермінований фікс T0-auto, ітеративний LLM-фікс за драбиною ескалації, а потім фінальна перевірка.
|
|
19
21
|
|
|
20
22
|
## Публічний API
|
|
21
23
|
|
|
22
|
-
buildLadder — Створює послідовність моделей для ескалації, виходячи з доступних рівнів.
|
|
24
|
+
buildLadder — Створює послідовність моделей для ескалації, виходячи з доступних рівнів.
|
|
25
|
+
|
|
26
|
+
local-min — Перший прохід з локальною мінімальною моделлю.
|
|
27
|
+
local-min-retry — Повторний прохід локальною моделлю з урахуванням результатів попереднього кроку.
|
|
28
|
+
cloud-min — Використання мінімальної хмарної моделі з зворотним зв'язком.
|
|
29
|
+
cloud-avg — Використання середньої хмарної моделі з зворотним зв'язком, обмежене середнім бюджетом.
|
|
23
30
|
|
|
24
|
-
escalateRule —
|
|
31
|
+
escalateRule — Застосовує одне правило по послідовності ескалації до першого успішного перевірки.
|
|
32
|
+
Кожен рунг — Викликає обробника з попереднім результатом, перевіряє правило, фіксує результат у лозі.
|
|
33
|
+
Достроковий вихід — Зупиняє процес при певних умовах (відсутність ключа, пропуск моделі на системному рівні) або перевищенні середнього бюджету.
|
|
25
34
|
|
|
26
|
-
parseOrchestratorArgs — Витягує максимальне значення
|
|
35
|
+
parseOrchestratorArgs — Витягує максимальне значення середнього бюджету з аргументів командного рядка та збирає фільтри правил.
|
|
27
36
|
|
|
28
|
-
runOrchestratorCli — Запускає основний процес
|
|
37
|
+
runOrchestratorCli — Запускає основний процес оркестрації з командного рядка.
|
|
29
38
|
|
|
30
39
|
## Гарантії поведінки
|
|
31
40
|
|