@7n/test 0.9.0 → 0.10.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 (41) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/package.json +4 -2
  3. package/src/assess-need.mjs +4 -1
  4. package/src/classify-exports.mjs +108 -0
  5. package/src/coverage-classify/docs/apply.md +28 -0
  6. package/src/coverage-classify/docs/cache.md +34 -0
  7. package/src/coverage-classify/docs/index.md +40 -0
  8. package/src/coverage-classify/docs/prompt.md +30 -0
  9. package/src/coverage-classify/docs/verdict-schema.md +29 -0
  10. package/src/coverage-fix-extract.mjs +10 -10
  11. package/src/coverage-per-file.mjs +68 -43
  12. package/src/docs/assess-need.md +31 -0
  13. package/src/docs/classify-exports.md +30 -0
  14. package/src/docs/coverage-fix-extract.md +35 -0
  15. package/src/docs/coverage-fix.md +31 -0
  16. package/src/docs/coverage-per-file.md +34 -0
  17. package/src/docs/fix-tests.md +32 -0
  18. package/src/docs/gen-tests.md +38 -0
  19. package/src/docs/index.md +34 -0
  20. package/src/docs/run.md +33 -0
  21. package/src/fix-tests.mjs +233 -87
  22. package/src/gen-tests.mjs +1102 -49
  23. package/src/lib/ast-analyze.mjs +287 -0
  24. package/src/lib/docs/ast-analyze.md +45 -0
  25. package/src/lib/docs/index.md +14 -0
  26. package/src/lib/docs/pi-client.md +29 -0
  27. package/src/lib/docs/runtime-probe.md +36 -0
  28. package/src/lib/docs/vitest-shim.md +31 -0
  29. package/src/lib/pi-client.mjs +18 -3
  30. package/src/lib/runtime-probe.mjs +390 -0
  31. package/src/lib/vitest-shim.mjs +73 -0
  32. package/src/run.mjs +3 -1
  33. package/src/scripts/lib/changed-files.mjs +5 -5
  34. package/src/scripts/lib/docs/changed-files.md +32 -0
  35. package/src/scripts/lib/docs/read-n-cursor-config-lite.md +39 -0
  36. package/src/scripts/utils/docs/index.md +13 -0
  37. package/src/scripts/utils/docs/lock-cache-dir.md +32 -0
  38. package/src/scripts/utils/docs/with-lock.md +38 -0
  39. package/src/scripts/utils/docs/worktree-fingerprint.md +34 -0
  40. package/src/scripts/utils/lock-cache-dir.mjs +1 -1
  41. package/src/scripts/utils/with-lock.mjs +2 -3
@@ -0,0 +1,34 @@
1
+ ---
2
+ type: JS Module
3
+ title: worktree-fingerprint.mjs
4
+ resource: npm/src/scripts/utils/worktree-fingerprint.mjs
5
+ docgen:
6
+ crc: df297382
7
+ model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
+ score: 100
9
+ judgeModel: openai-codex/gpt-5.4-mini
10
+ ---
11
+
12
+ ## Огляд
13
+
14
+ Робота цього файлу полягає у генерації унікального цифрового відбитка поточного стану робочого дерева проєкту за допомогою функції `worktreeFingerprint`. Він збирає інформацію про стан коміту Git та контент файлів, що ще не додані до відстеження. Це дозволяє однозначно ідентифікувати консистенцію робочої копії репозиторію.
15
+
16
+ ## Поведінка
17
+
18
+ 1. Обчислення консистенції робочого дерева.
19
+ 2. Зчитування хешу поточного коміту Git.
20
+ 3. Зчитування тексту відмінностей між комітом і робочим деревом.
21
+ 4. Зчитування списку невідстежуваних файлів Git.
22
+ 5. Для кожного невідстежуваного файлу обчислюється його хеш.
23
+ 6. Утворюється відсортований список пар, що містять назву файлу та його хеш.
24
+ 7. Усі зібрані дані (хеш коміту, текст відмінностей, відсортовані пари невідстежуваних файлів) конкатенуються в один текстовий блок.
25
+ 8. Від цього текстового блоку обчислюється SHA256 хеш.
26
+ 9. Якщо будь-яка частина процесу не може бути виконана (наприклад, поточний каталог не є Git-репозиторієм), функція повертає null.
27
+
28
+ ## Публічний API
29
+
30
+ worktreeFingerprint — визначає унікальний відбиток поточного стану git-робочого дерева.
31
+
32
+ ## Гарантії поведінки
33
+
34
+ - (специфічних машинно-виведених гарантій немає)
@@ -9,7 +9,7 @@
9
9
  *
10
10
  * `git rev-parse --git-common-dir` повертає той самий `.git` головного репо з
11
11
  * будь-якого worktree, тож стан кладемо під `<git-common-dir>/n-cursor/<key>`
12
- * (всередині `.git` — спільне, ніколи не трекається, переживає `bun i`).
12
+ * (всередині `.git` — спільне, ніколи не відстежується, переживає `bun i`).
13
13
  * Поза git-репо (git недоступний / каталог не репо) — fallback на per-checkout
14
14
  * `node_modules/.cache/n-cursor/<key>`, як було історично.
15
15
  */
@@ -50,8 +50,7 @@ function makeRelease(lockDir) {
50
50
  export function shouldDedup(result, fingerprint, ttl) {
51
51
  if (result.exitCode !== 0) return false
52
52
  if (fingerprint === null || result.fingerprint !== fingerprint) return false
53
- if (Date.now() - result.finishedAt >= ttl) return false
54
- return true
53
+ return Date.now() - result.finishedAt < ttl
55
54
  }
56
55
 
57
56
  /**
@@ -126,7 +125,7 @@ export async function withLock(key, runFn, opts = {}) {
126
125
  /* result.json не існує або пошкоджений */
127
126
  }
128
127
 
129
- // Після release лок ре-рейзиться той самий сигнал: `once` вже зняв обробник,
128
+ // Після release блокування повторно надсилає той самий сигнал: `once` вже зняв обробник,
130
129
  // тож процес завершується дефолтною дією з коректним кодом (130/143)
131
130
  const onSignal = signal => {
132
131
  release()