@7n/rules 1.49.0 → 1.49.2
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 +16 -0
- package/package.json +2 -2
- package/rules/release/docs/release.md +12 -8
- package/rules/release/release.mjs +24 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.49.2] - 2026-07-26
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- @7n/rules синхронізує точну версію @7n/llm-lib під час спільного release.
|
|
8
|
+
|
|
9
|
+
## [1.49.1] - 2026-07-25
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- Додано JS-оркестрований skill `n-git-reconcile` для аналізу гілок, worktree та stash і перенесення корисних змін у готові PR. CI smoke-check використовує завантажений Linux native addon до release, тому перевіряє native-залежні CLI-модулі в тому самому runtime, що й publish.
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- Виправлено profile генерації тестів для survived Stryker-мутантів
|
|
18
|
+
|
|
3
19
|
## [1.49.0] - 2026-07-25
|
|
4
20
|
|
|
5
21
|
### Added
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@7n/rules",
|
|
3
|
-
"version": "1.49.
|
|
3
|
+
"version": "1.49.2",
|
|
4
4
|
"description": "CLI еталонних правил і skills (префікс n-): синк у репозиторій, дельта-lint, конформність",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"rename-yaml-extensions": "bun ./bin/n-rules.js rename-yaml-extensions"
|
|
66
66
|
},
|
|
67
67
|
"dependencies": {
|
|
68
|
-
"@7n/llm-lib": "
|
|
68
|
+
"@7n/llm-lib": "2.9.2",
|
|
69
69
|
"@7n/mt": "^0.5.1",
|
|
70
70
|
"@zed-industries/agent-client-protocol": "^0.4.5",
|
|
71
71
|
"ajv": "^8.20.0",
|
|
@@ -3,23 +3,27 @@ type: JS Module
|
|
|
3
3
|
title: release.mjs
|
|
4
4
|
resource: npm/rules/release/release.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
6
|
+
crc: 8042a5fb
|
|
7
|
+
model: openai-codex/gpt-5.4-mini
|
|
8
|
+
tier: cloud-min
|
|
9
|
+
score: 100
|
|
10
|
+
judgeModel: openai-codex/gpt-5.4-mini
|
|
7
11
|
---
|
|
8
12
|
|
|
9
|
-
|
|
13
|
+
## Огляд
|
|
10
14
|
|
|
11
|
-
|
|
15
|
+
Файл агрегує per-workspace change-файли у version-bump і `CHANGELOG`, комітить, ставить тег `<name>@<version>` та видаляє використані change-файли. Запускається у CI на `main` за дизайном `n-rules-release-design`, варіант A, і сам нічого не публікує. Публічні функції: `release`, `runReleaseCli`.
|
|
12
16
|
|
|
13
|
-
|
|
17
|
+
## Поведінка
|
|
14
18
|
|
|
15
|
-
|
|
19
|
+
`release` бере корінь репозиторію та дату, читає `package.json` як джерело workspace-метаданих і далі проходить по кожному workspace у порядку, заданому маніфестом. Для кожного workspace він збирає зміни, оновлює версію, дописує відповідний блок до CHANGELOG і прибирає використані change-файли; якщо для workspace немає релевантних змін, він не входить до списку релізу. Після цього `release` синхронізує точний runtime-пін `@7n/rules` із одночасно випущеним `@7n/llm-lib`, щоб transport не лишався на старій транзитивній версії, а потім формує коміт, анотовані теги `<name>@<version>` і, за увімкненого push, доводить release-коміт до апстріму з ретраями на випадок паралельних push у ту саму гілку. Поверненням є лише перелік фактично зрелізованих пакетів; самі артефакти публікації тут не виконуються.
|
|
16
20
|
|
|
17
|
-
runReleaseCli
|
|
21
|
+
`runReleaseCli` є тонкою CLI-обгорткою над `release`: запускає той самий потік з дефолтними параметрами, а в тестах дозволяє підмінити корінь, дату, git-раннер і режим push. Якщо release завершується без помилки, CLI повертає успішний exit-код; якщо ні — не приховує збій.
|
|
18
22
|
|
|
19
23
|
## Публічний API
|
|
20
24
|
|
|
21
|
-
release — агрегує change-файли
|
|
22
|
-
runReleaseCli —
|
|
25
|
+
- release — агрегує per-workspace change-файли у version-bump і CHANGELOG, створює commit, ставить тег `<name>@<version>` та видаляє use-up change-файли; спирається на налаштування з package.json.
|
|
26
|
+
- runReleaseCli — CLI-entry для запуску `release`, щоб виконати той самий release-сценарій з командного рядка без окремого ручного складання кроків.
|
|
23
27
|
|
|
24
28
|
## Гарантії поведінки
|
|
25
29
|
|
|
@@ -14,6 +14,7 @@ import { CHANGES_DIR, readChangeFiles } from './lib/change-file.mjs'
|
|
|
14
14
|
import { defaultRunGit, synthesizeChangeFromCommits } from './lib/fallback.mjs'
|
|
15
15
|
|
|
16
16
|
const SEMVER_LINE_RE = /("version"\s*:\s*")[^"]*(")/
|
|
17
|
+
const LLM_LIB_DEPENDENCY_LINE_RE = /("@7n\/llm-lib"\s*:\s*")[^"]*(")/
|
|
17
18
|
const PY_VERSION_LINE_RE = /^(version\s*=\s*")[^"]*(")/m
|
|
18
19
|
|
|
19
20
|
/**
|
|
@@ -36,6 +37,28 @@ async function writeManifestVersion(cwd, manifest, newVersion) {
|
|
|
36
37
|
await writeFile(path, replaced)
|
|
37
38
|
}
|
|
38
39
|
|
|
40
|
+
/**
|
|
41
|
+
* Синхронізує точну runtime-залежність `@7n/rules` з одночасно випущеним
|
|
42
|
+
* `@7n/llm-lib`. Точний pin змушує consumer lockfile оновити transport разом
|
|
43
|
+
* з rules, а не зберегти стару сумісну транзитивну версію.
|
|
44
|
+
* @param {string} cwd корінь монорепо
|
|
45
|
+
* @param {Array<{ ws: string, name: string | null, newVersion: string }>} released щойно випущені workspace-и
|
|
46
|
+
* @returns {Promise<void>} результат
|
|
47
|
+
*/
|
|
48
|
+
async function synchronizeRulesLlmLibDependency(cwd, released) {
|
|
49
|
+
const llmLib = released.find(entry => entry.name === '@7n/llm-lib')
|
|
50
|
+
const rules = released.find(entry => entry.name === '@7n/rules')
|
|
51
|
+
if (!llmLib || !rules) return
|
|
52
|
+
|
|
53
|
+
const path = join(cwd, rules.ws, 'package.json')
|
|
54
|
+
const text = await readFile(path, 'utf8')
|
|
55
|
+
const replaced = text.replace(LLM_LIB_DEPENDENCY_LINE_RE, (_match, p1, p2) => `${p1}${llmLib.newVersion}${p2}`)
|
|
56
|
+
if (replaced === text) {
|
|
57
|
+
throw new Error(`release: не вдалося синхронізувати @7n/llm-lib у ${rules.ws}/package.json`)
|
|
58
|
+
}
|
|
59
|
+
await writeFile(path, replaced)
|
|
60
|
+
}
|
|
61
|
+
|
|
39
62
|
/**
|
|
40
63
|
* @param {string} cwd корінь
|
|
41
64
|
* @param {string} ws workspace
|
|
@@ -196,6 +219,7 @@ export async function release(opts = {}) {
|
|
|
196
219
|
}
|
|
197
220
|
|
|
198
221
|
if (released.length > 0) {
|
|
222
|
+
await synchronizeRulesLlmLibDependency(cwd, released)
|
|
199
223
|
await commitAndPushRelease(released, tags, runGit, push)
|
|
200
224
|
}
|
|
201
225
|
return released
|