@nitra/cursor 9.3.0 → 9.4.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.
- package/CHANGELOG.md +6 -0
- package/package.json +1 -1
- package/rules/doc-files/js/docgen-gen.mjs +20 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [9.4.0] - 2026-06-14
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
|
|
7
|
+
- docgen: класифікація omlx-збоїв (transient/systemic/permanent) — ретрай ETIMEDOUT з backoff (2s→8s), circuit-breaker на systemic-каскад (3 підряд → abort, exit 2), permanent→skip; pre-send byte-guard (джерело > 0.5× контексту → instant-skip без LLM); scan поважає .gitignore; прибрано хардкод DEFAULT_OMLX_MODEL (fail-loud, модель через N_LOCAL_MIN_MODEL)
|
|
8
|
+
|
|
3
9
|
## [9.3.0] - 2026-06-14
|
|
4
10
|
|
|
5
11
|
### Added
|
package/package.json
CHANGED
|
@@ -363,6 +363,18 @@ function orchestratedDoc(facts, src, model, timeoutMs, { anchors = null, tempera
|
|
|
363
363
|
|
|
364
364
|
/** Максимальний час генерації одного LLM-виклику. */
|
|
365
365
|
const LOCAL_TIMEOUT_MS = 5 * 60 * 1000
|
|
366
|
+
|
|
367
|
+
/** Контекстне вікно локальної моделі в токенах (оцінка; override — N_CURSOR_DOCGEN_CTX). */
|
|
368
|
+
const DEFAULT_CONTEXT_TOKENS = 131072
|
|
369
|
+
|
|
370
|
+
/**
|
|
371
|
+
* Бюджет токенів на джерело: половина контекстного вікна (решта — факти/стиль/вихід).
|
|
372
|
+
* Перевищення → pre-send guard відсікає файл без жодного LLM-виклику.
|
|
373
|
+
* @returns {number} бюджет у токенах
|
|
374
|
+
*/
|
|
375
|
+
function srcTokenBudget() {
|
|
376
|
+
return Math.floor((Number(env.N_CURSOR_DOCGEN_CTX) || DEFAULT_CONTEXT_TOKENS) * 0.5)
|
|
377
|
+
}
|
|
366
378
|
/**
|
|
367
379
|
* Дефолтна модель: N_CURSOR_DOCGEN_MODEL → resolveModel('min') (→ N_LOCAL_MIN_MODEL).
|
|
368
380
|
* Без хардкод-fallback: модель налаштовує кожен локально (`N_LOCAL_MIN_MODEL`); якщо
|
|
@@ -384,6 +396,14 @@ export const DEFAULT_LOCAL_MODEL = env.N_CURSOR_DOCGEN_MODEL ?? resolveModel('mi
|
|
|
384
396
|
*/
|
|
385
397
|
export function generateDoc(file, { model = DEFAULT_LOCAL_MODEL, threshold = QUALITY_THRESHOLD, existingMd = null } = {}) {
|
|
386
398
|
const src = readFileSync(file, 'utf8')
|
|
399
|
+
// Pre-send guard: весь src вшивається у промпт як є (екстракт фактів його НЕ
|
|
400
|
+
// замінює). Для гігантів (vendored/генерат) це переповнює контекст → інстант-skip
|
|
401
|
+
// без LLM-виклику. Маркер «Prompt too long» → classifyOmlxError → permanent → skip.
|
|
402
|
+
const estTokens = Math.round(Buffer.byteLength(src, 'utf8') / 4)
|
|
403
|
+
const budget = srcTokenBudget()
|
|
404
|
+
if (estTokens > budget) {
|
|
405
|
+
throw new Error(`docgen pre-send guard: джерело ~${estTokens} токенів > бюджет ${budget} (0.5× контексту) — Prompt too long, skip`)
|
|
406
|
+
}
|
|
387
407
|
const facts = extractFacts(src, file)
|
|
388
408
|
const t0 = Date.now()
|
|
389
409
|
llmMeter = { calls: 0, ms: 0 }
|