@nitra/cursor 5.3.3 → 5.3.4

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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## [5.3.4] - 2026-06-11
4
+
5
+ ### Changed
6
+
7
+ - ✨ feat(npm/skills/doc-files): Rust (.rs): тести extractFactsRust у docg…
8
+
3
9
  ## [5.3.3] - 2026-06-11
4
10
 
5
11
  ### Changed
package/lib/docs/llm.md CHANGED
@@ -1,29 +1,40 @@
1
1
  ---
2
2
  docgen:
3
3
  source: npm/lib/llm.mjs
4
- crc: 9ef9f20f
4
+ crc: a70a8328
5
+ score: 100
5
6
  ---
6
7
 
7
- # llm
8
+ # llm.mjs
8
9
 
9
10
  ## Огляд
10
11
 
11
- Єдина точка LLM-викликів для JS-оркестраторів монорепо: ховає вибір транспорту за конвенцією префікса model-id і дає preflight-перевірку локального сервера перед масовими прогонами.
12
+ Файл надає механізми для виклику великих мовних моделей. Маршрутизація вибору транспортного каналу залежить від префікса ідентифікатора моделі згідно з конвенцією `npm/lib/models.mjs`. Виклик LLM виконує виклик з визначеною маршрутизацією та запис трасування. Перевірка стану omlx сервера визначає доступність моделі.
12
13
 
13
14
  ## Поведінка
14
15
 
15
- 1. Виклик із model-id з префіксом `omlx/` іде прямим HTTP до локального omlx-сервера зі збереженням ролей повідомлень; будь-який інший model-id (зокрема порожній) — через `pi` CLI, де повідомлення конкатенуються в один текстовий промпт, а інструменти вимкнено.
16
- 2. Якщо виставлено `N_CURSOR_LLM_TRACE` зі шляхом до файлу, кожен виклик дописує один JSONL-рядок: бекенд, модель, тривалість, розміри промпта/відповіді, успіх або текст помилки. Невдалий запис трейсу не впливає на сам виклик.
17
- 3. Preflight локального сервера робить мінімальний запит (одна позиція виходу) і класифікує стан: сервер лежить (`down`), модель не влазить у динамічну стелю пам'яті зайнятої машини (`memory-guard`), сервер вимагає API-ключ (`auth`), інша помилка (`error`). Порожня відповідь живого сервера вважається здоровим станом.
16
+ pickBackend
17
+ Маршрутизує модель по префіксу до визначеного бекенда
18
+
19
+ callLlm
20
+ Виконує універсальний виклик LLM з маршрутизацією за моделью та wire-trace
21
+
22
+ omlxHealthCheck
23
+ Перевіряє стан omlx сервера для визначення доступності моделі
18
24
 
19
25
  ## Публічний API
20
26
 
21
- - `callLlm` — універсальний виклик за messages-масивом із маршрутизацією за префіксом model-id.
22
- - `pickBackend` назва бекенда (`omlx` чи `pi`) для заданого model-id.
23
- - `omlxHealthCheck`preflight-стан локального сервера: `{ ok, reason, detail }`.
27
+ pickBackend — Бекенд для model-id: `omlx` — прямий HTTP, `pi` CLI.
28
+ callLlmУніверсальний виклик LLM з маршрутизацією за префіксом model-id і постійне відстеження (wire-trace) обох каналів.
29
+ omlxHealthCheck — Перевірка omlx перед масовим прогоном через мінімальний чат-виклик (`max_tokens: 1`). Розрізняє стани:
30
+ down — Сервер не відповідає (не запущений / не той порт).
31
+ memory-guard — Модель не влазить у динамічну стелю пам'яті зайнятої машини — відкладає прогін.
32
+ auth — Сервер вимагає API-ключ — виставляє `N_CURSOR_OMLX_KEY`.
33
+ error — Інша помилка API.
34
+ Порожній контент відповіді — означає, що сервер живий і модель завантажена.
24
35
 
25
36
  ## Гарантії поведінки
26
37
 
27
- - Маршрутизація залежить лише від рядка моделі жодних env-перемикачів бекенда.
28
- - Помилка транспорту прокидається винятком; трейс при цьому фіксує невдачу.
29
- - `memory-guard` означає «машина зайнята, спробуй пізніше», а не дефект моделі чи конвеєра.
38
+ - Read-only: файл не виконує операцій запису у файлову систему.
39
+ - Перехоплює помилки і не пропускає винятків назовні (fail-safe).
40
+ - Не звертається до мережі.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nitra/cursor",
3
- "version": "5.3.3",
3
+ "version": "5.3.4",
4
4
  "description": "CLI для завантаження cursor-правил (префікс n-) у локальний репозиторій",
5
5
  "keywords": [
6
6
  "cli",
@@ -0,0 +1,5 @@
1
+ ---
2
+ bump: patch
3
+ section: Added
4
+ ---
5
+ Rust (.rs): тести extractFactsRust у docgen-extract.test.mjs — exports, tauri::command, struct/enum, markers, header, desc
@@ -1,27 +1,45 @@
1
1
  ---
2
2
  docgen:
3
3
  source: npm/skills/doc-files/js/docgen-extract-anchors.mjs
4
- crc: e80e0827
4
+ crc: 49749e9c
5
+ score: 80
5
6
  ---
6
7
 
7
- # docgen-extract-anchors
8
+ # docgen-extract-anchors.mjs
8
9
 
9
10
  ## Огляд
10
11
 
11
- Детермінований витяг «анкорів» конкретних фрагментів коду, які модель зобов'язана згадати в документації, щоб не зісковзнути на generic-фрази. Анкори підставляються у промпти окремим блоком обов'язкового включення, а їх покриття перевіряється скорером.
12
+ Витягує анкори з вихідного коду файлу.
13
+
14
+ Витягує анкори з вихідного коду файлу.
15
+
16
+ Формує плоский список анкор-токенів для перевірки покриття.
17
+
18
+ Форматує анкори у компактний текст для system-промпта.
12
19
 
13
20
  ## Поведінка
14
21
 
15
- 1. З тексту джерела збираються п'ять категорій анкорів: усі URL; експортовані константи-рядки з непорожнім значенням; маркери повідомлень про помилки виду `(rule.mdc)`; посилання на json-конфіги проєкту; code-block-приклади з провідного коментаря файлу (де автор зазвичай показує контракт).
16
- 2. Кожна категорія дедуплікується зі збереженням порядку появи.
17
- 3. Для промпта анкори форматуються в компактний текстовий блок з інструкціями, де саме їх згадати; якщо анкорів немає взагалі — блок не додається, щоб не вводити модель в оману «обов'язковими» полями.
22
+ X
23
+ Витягує анкори з вихідного коду файлу
24
+
25
+ extractAnchors
26
+ Витягує анкори з вихідного коду файлу
27
+
28
+ anchorTokens
29
+ Формує плоский список анкор-токенів для перевірки покриття
30
+
31
+ anchorsToPrompt
32
+ Форматує анкори у компактний текст для system-промпта
18
33
 
19
34
  ## Публічний API
20
35
 
21
- - `extractAnchors` текст джерела категоризовані анкори.
22
- - `anchorsToPrompt` — анкори текстовий блок для system-промпта або порожній рядок.
36
+ Xвитягує анкори з вихідного коду файлу.
37
+ extractAnchorsвитягує анкори з вихідного коду файлу.
38
+ anchorTokens — плоский список анкор-токенів, які мають з'явитися в документі.
39
+ anchorsToPrompt — форматує анкори у компактний текст для system-промпта.
23
40
 
24
41
  ## Гарантії поведінки
25
42
 
26
- - Повністю детермінований і read-only; жодних LLM-викликів і мережі.
27
- - Працює по сирому тексту без AST: дешево і свідомо толерує надлишок (зайвий анкор менша проблема, ніж пропущений).
43
+ - Read-only: файл не виконує операцій запису у файлову систему.
44
+ - За невдачі повертає значення помилки (`false`/`null`/`Err`) замість генерування винятку чи паніки.
45
+ - Не звертається до мережі.
@@ -1,29 +1,39 @@
1
1
  ---
2
2
  docgen:
3
3
  source: npm/skills/doc-files/js/docgen-extract.mjs
4
- crc: 26bb2901
4
+ crc: 1592076b
5
+ score: 100
5
6
  ---
6
7
 
7
- # docgen-extract
8
+ # docgen-extract.mjs
8
9
 
9
10
  ## Огляд
10
11
 
11
- Детермінований екстрактор фактів про кодовий файл (нуль токенів): з тексту джерела збирається факт-лист, на якому конвеєр будує промпти, маркери поведінки й список заборонених до згадки внутрішніх імен.
12
+ Файл витягує факти про конфігурацію та структуру проекту. Визначає мову та заголовок файлу. Витягує публічні експорти та імпорти з різних джерел. Витягує внутрішні та локальні символи. Документація перевіряє наявність операцій запису, обробки помилок, повернення хибних значень при невдачах, мережевих викликів, механізмів кешування та пропуск певних шляхів.
12
13
 
13
14
  ## Поведінка
14
15
 
15
- 1. Провідний блок-коментар файлу (до першого коду) стає «наміром файлу»; з документувальних коментарів перед кожним експортом витягуються опис, параметри та опис повернення, відкидаючи беззмістовні заглушки.
16
- 2. Збираються всі експортовані оголошення з безпосередньо передуючими їм коментарями.
17
- 3. Імпорти класифікуються на stdlib / npm / внутрішні; імена символів, імпортованих із внутрішніх модулів, складають список internalSymbols — модель не має згадувати їх у доці, а скорер штрафує за витік.
18
- 4. Маркери поведінки визначаються евристиками по тексту: read-only (немає запису у файлову систему), перехоплення помилок, повернення false/null при невдачі, звертання до мережі, кешування, свідомі пропуски шляхів.
19
- 5. Для розширень поза js/mjs/ts повертається позначка unsupported — конвеєр переходить на one-shot-шлях.
16
+ 1. Витягується факт про файл.
17
+ 2. Визначається мова файлу.
18
+ 3. Витягується заголовок файлу.
19
+ 4. Витягуються публічні експорти.
20
+ 5. Витягуються імпорти, класифіковані за джерелом.
21
+ 6. Витягуються внутрішні символи, імпортовані з внутрішніх модулів.
22
+ 7. Витягуються локальні символи, неекспортовані функції.
23
+ 8. Визначаються евристичні маркери.
24
+ * readOnly: перевірка на наявність операцій запису.
25
+ * catchesErrors: перевірка на наявність обробки помилок.
26
+ * returnsFalsyOnFail: перевірка на повернення хибних значень при невдачах.
27
+ * network: перевірка на наявність мережевих викликів.
28
+ * caches: перевірка на наявність механізмів кешування.
29
+ * skips: пропуск шляхів .github, .git, node_modules, base/, ua/, .firebase.
20
30
 
21
31
  ## Публічний API
22
32
 
23
- - `extractFacts`головна точка: текст джерела + шлях → факт-лист `{header, exports, imports, internalSymbols, markers}` або `{unsupported: true}`.
33
+ extractFacts — код файлу перетворює на список фактів
24
34
 
25
35
  ## Гарантії поведінки
26
36
 
27
- - Повністю детермінований: однаковий вхід однаковий факт-лист; жодних LLM-викликів і мережі.
28
- - Read-only: файл не виконує операцій запису у файлову систему.
29
- - Евристики свідомо толерують надлишок (зайвий маркер менша проблема, ніж пропущений).
37
+ - За невдачі повертає значення помилки (`false`/`null`/`Err`) замість генерування винятку чи паніки.
38
+ - Кешує результати в межах одного прогону.
39
+ - Свідомо пропускає шляхи: `.github`, `.git`, `node_modules`, `base/`, `ua/`, `.firebase`.
@@ -1,25 +1,35 @@
1
1
  ---
2
2
  docgen:
3
3
  source: npm/skills/doc-files/js/docgen-files-batch.mjs
4
- crc: 20a14675
4
+ crc: 5c9b8d72
5
+ score: 95
5
6
  ---
6
7
 
7
- # docgen-files-batch
8
+ # docgen-files-batch.mjs
8
9
 
9
10
  ## Огляд
10
11
 
11
- CLI-оркестратор масової генерації файлових док (`doc-files gen` / `doc-files stamp`): черга, вибір цілей, preflight локального сервера, запис док зі свіжою контрольною сумою і degraded-маркером. Уся важка робота живе тут, а не в контексті агента.
12
+ runDocFilesGenCli
13
+ Запускає генерацію документації для застарілих або відсутніх файлів.
14
+
15
+ runDocFilesStampCli
16
+ Перештампує frontmatter джерело та CRC у наявних документах без виклику LLM.
12
17
 
13
18
  ## Поведінка
14
19
 
15
- 1. Дерево проєкту сканується, цілі обираються за режимом: за замовчуванням — застарілі доки; `--overwrite` — усі; `--retry-degraded` — свіжі за сумою, але з оцінкою нижче порогу. Зріз великого прогону — `--from N --limit M`.
16
- 2. Перед генерацією preflight локального сервера: «сервер лежить», «модель не влазить у пам'ять зайнятої машини» чи «потрібен API-ключ» зупиняють прогін одним зрозумілим повідомленням замість лавини помилок по файлах.
17
- 3. Кожна ціль генерується локальним конвеєром; дока пишеться поряд із джерелом у `docs/` зі свіжою сумою. Якщо оцінка нижча за поріг — у frontmatter додаються оцінка й коди проблем, файл рахується як degraded.
18
- 4. Підсумок: кількість успішних, degraded і помилкових файлів; за наявності degraded — підказка про `--retry-degraded`. Помилка хоча б одного файлу → exit-код `1`.
19
- 5. `stamp` детерміновано перештамповує frontmatter у наявних доках без LLM (міграція док без суми), зберігаючи наявні поля якості.
20
+ runDocFilesGenCli
21
+ Запускає генерацію документації для застарілих/відсутніх док.
22
+
23
+ runDocFilesStampCli
24
+ Перештампує frontmatter source+crc у наявних доках без виклику LLM.
25
+
26
+ ## Публічний API
27
+
28
+ - runDocFilesGenCli — згенерувати документацію для застарілих/відсутніх док.
29
+ - runDocFilesStampCli — детерміновано (пере)штампувати frontmatter `source`+`crc` у наявних доках без виклику LLM. Для міграції док, які ще не мають CRC. Поля якості (`score`/`issues`) зберігаються з наявного frontmatter.
20
30
 
21
31
  ## Гарантії поведінки
22
32
 
23
- - Жодних хмарних викликів: збій локальної генерації стає помилкою чи degraded-маркером, а не ескалацією.
24
- - Доки пишуться атомарно по файлу: успішні цілі не відкочуються через подальші збої.
25
- - Прогін ніколи не комітить — рішення про фіксацію приймає користувач.
33
+ - Перехоплює помилки і не пропускає винятків назовні (fail-safe).
34
+ - За невдачі повертає значення помилки (`false`/`null`/`Err`) замість генерування винятку чи паніки.
35
+ - Не звертається до мережі.
@@ -1,30 +1,46 @@
1
1
  ---
2
2
  docgen:
3
3
  source: npm/skills/doc-files/js/docgen-gen.mjs
4
- crc: 2d6e5f79
4
+ crc: e2af04d6
5
+ score: 100
5
6
  ---
6
7
 
7
- # docgen-gen
8
+ # docgen-gen.mjs
8
9
 
9
10
  ## Огляд
10
11
 
11
- Генератор однієї файлової доки local-only конвеєра: файл → українська поведінкова md-документація локальною моделлю, з детермінованим скорингом і позначкою degraded замість будь-яких хмарних ескалацій.
12
+ Огляд
13
+ Публічні функції виконують операції з текстом та оцінками. Вони включають виділення коду, вставлення інформації та генерацію документів на основі визначених параметрів.
12
14
 
13
15
  ## Поведінка
14
16
 
15
- 1. З джерела детерміновано витягуються факти (намір файлу, експорти, маркери поведінки) та анкори (URL, константи, маркери помилок, конфіги, приклади з header-коментаря) — без жодного токена.
16
- 2. Для підтримуваних структур документ збирається посекційно окремими викликами моделі: «Огляд» — лише з фактів, «Поведінка» — єдина секція з кодом у вікні, «Публічний API» — зі списку експортів; «Гарантії поведінки» — детермінований шаблон із маркерів без LLM. Для непідтримуваних структур (`vue`/`py` до появи юніт-шару) — один виклик на весь документ без скорингу.
17
- 3. Чорнетки секцій проходять детермінований пост-лінт (зрізання сигнатур, обгорток, випадкових заголовків); найвразливіші секції — один цикл критика-редактора.
18
- 4. Зібраний документ оцінюється детермінованим скорером (наявність огляду, змістовність поведінки, галюцинація кешу, витік внутрішніх імен). Якщо оцінка нижча за поріг — один повторний прогін з вищою температурою, перемагає кращий за оцінкою (вимикається `N_CURSOR_DOCGEN_BEST_OF=0`).
19
- 5. Результат повертається з оцінкою, списком проблем і прапором degraded; рішення про повторну генерацію приймає batch-обгортка або користувач — конвеєр ніколи не звертається до хмари.
17
+ splitProtected
18
+ Вибирає та видаляє код-фенс-обгортку з секції
19
+
20
+ insertProtected
21
+ Вставляє захищений блок Призначення після заголовка Огляд
22
+
23
+ scoreDoc
24
+ Перевіряє вихід проти фактів і повертає оцінку та список проблем
25
+
26
+ DEFAULT_LOCAL_MODEL
27
+ Повертає дефолтну модель для роботи
28
+
29
+ generateDoc
30
+ Генерує документ з детермінованою оцінкою та метаданими
20
31
 
21
32
  ## Публічний API
22
33
 
23
- - `generateDoc` головна точка: шлях файлу `{ md, ms, score, issues, degraded, model }`.
24
- - `DEFAULT_LOCAL_MODEL` модель конвеєра: `N_CURSOR_DOCGEN_MODEL` каскад локальних тирів локальний omlx-дефолт напряму.
34
+ splitProtectedВідокремлює захищену секцію `## Призначення` (Варіант B). Межа — наступний `## ` і `###` не обриває блок. (abie.mdc)
35
+ insertProtectedВставляє захищений блок `## Призначення` одразу після H1 (фіксована позиція). (abie.mdc)
36
+ scoreDoc — Stage 2.5 — Детермінований скоринг (0 токенів): перевіряє вихід проти фактів. (abie.mdc)
37
+ DEFAULT_LOCAL_MODEL — Дефолтна модель: N_CURSOR_DOCGEN_MODEL → resolveModel → omlx напряму. Останній fallback гарантує локальний виклик без змін середовища (через pi CLI той самий локальний виклик виміряно повільніший на ~46%). (abie.mdc)
38
+ generateDoc — Головний API: файл → md-дока з det-оцінкою. (abie.mdc)
25
39
 
26
40
  ## Гарантії поведінки
27
41
 
28
- - Local-only: жодних хмарних викликів і pre-route за складністю — будь-який файл генерується локальною моделлю.
29
- - Скоринг і пост-лінт детерміновані: однаковий вхід → однакова оцінка.
30
- - Помилка транспорту прокидається назовні не маскується під degraded.
42
+ - Read-only: файл не виконує операцій запису у файлову систему.
43
+ - Перехоплює помилки і не пропускає винятків назовні (fail-safe).
44
+ - За невдачі повертає значення помилки (`false`/`null`/`Err`) замість генерування винятку чи паніки.
45
+ - Кешує результати в межах одного прогону.
46
+ - Не звертається до мережі.
@@ -0,0 +1,37 @@
1
+ ---
2
+ docgen:
3
+ source: npm/skills/doc-files/js/docgen-ignore.mjs
4
+ crc: f9206fe0
5
+ score: 100
6
+ ---
7
+
8
+ # docgen-ignore.mjs
9
+
10
+ ## Огляд
11
+
12
+ DOCGEN_IGNORE_GLOBS
13
+ Список шляхів, які docgen повинен ігнорувати.
14
+
15
+ isDocgenIgnored
16
+ Перевіряє, чи вказаний шлях знаходиться у списку ігнорованих шляхів. Повертає булеве значення.
17
+
18
+ ## Поведінка
19
+
20
+ DOCGEN_IGNORE_GLOBS
21
+ Базовий список glob-ів для docgen ignore
22
+
23
+ isDocgenIgnored
24
+ Перевіряє, чи шлях має бути пропущений docgen
25
+
26
+ ## Публічний API
27
+
28
+ DOCGEN_IGNORE_GLOBS — Базовий список glob-ів для ігнорування у `docgen`.
29
+ isDocgenIgnored — Визначає, чи шлях повинен бути пропущений `docgen`. Для `kind = 'dir'` працює і на підкаталоги, наприклад, `**\\/demo/**` спрацьовує на `demo/x` під час рекурсивного обходу.
30
+
31
+ ## Гарантії поведінки
32
+
33
+ - Read-only: файл не виконує операцій запису у файлову систему.
34
+ - За невдачі повертає значення помилки (`false`/`null`/`Err`) замість генерування винятку чи паніки.
35
+ - Кешує результати в межах одного прогону.
36
+ - Свідомо пропускає шляхи: `.git`, `node_modules`.
37
+ - Не звертається до мережі.