@7n/llm-lib 2.13.7 → 2.13.9
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 +12 -0
- package/lib/acp.mjs +4 -1
- package/lib/docs/acp.md +4 -4
- package/lib/local-providers.mjs +7 -3
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.13.9] - 2026-07-30
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- apiKey local-провайдерів приймає й серверну конвенцію без префікса (OMLX_API_KEY/LITELLM_API_KEY, N_-префікс має пріоритет) — оточення з auth-увімкненим omlx-server знову працює без ручного аліасингу
|
|
8
|
+
|
|
9
|
+
## [2.13.8] - 2026-07-30
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- acp: one-shot завершується за terminal turn (StopReason), гарантований teardown дочірнього ACP-процесу і робочий idle-timeout під flood подій — фікс зависання git-reconcile×Codex
|
|
14
|
+
|
|
3
15
|
## [2.13.7] - 2026-07-30
|
|
4
16
|
|
|
5
17
|
### Fixed
|
package/lib/acp.mjs
CHANGED
|
@@ -30,7 +30,10 @@ import { loadNative } from './internal/native.mjs'
|
|
|
30
30
|
* oneShotAcpGuarded?: (kind: string, prompt: string, cwd: string, tier: string, denyCommandFragments: string[]) => Promise<string>
|
|
31
31
|
* }
|
|
32
32
|
* }} [options] тир + інжект `native` для тестів (той самий 4-й аргумент, що й раніше — сумісність зі старим `{ native }`-викликом збережена)
|
|
33
|
-
* @returns {Promise<string>} повний текст відповіді до кінця
|
|
33
|
+
* @returns {Promise<string>} повний текст відповіді до кінця ходу; fail-closed
|
|
34
|
+
* контракт: Promise завжди завершується — термінальний хід повертає текст
|
|
35
|
+
* навіть якщо агент не закриває stdio/сесію, а transport failure
|
|
36
|
+
* (idle-timeout/помилка ACP) — reject зі структурованою причиною з Rust
|
|
34
37
|
*/
|
|
35
38
|
export function runAcpAgent(kind, prompt, cwd, { tier, mode, native, denyCommandFragments = [] } = {}) {
|
|
36
39
|
if (!tier && mode !== 'interactive') throw new TypeError('runAcpAgent: передай tier або явно mode:"interactive"')
|
package/lib/docs/acp.md
CHANGED
|
@@ -3,9 +3,9 @@ type: JS Module
|
|
|
3
3
|
title: acp.mjs
|
|
4
4
|
resource: llm-lib/lib/acp.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
7
|
-
model:
|
|
8
|
-
tier:
|
|
6
|
+
crc: afd53eaa
|
|
7
|
+
model: openai-codex/gpt-5.4-mini
|
|
8
|
+
tier: cloud-min
|
|
9
9
|
score: 80
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -34,7 +34,7 @@ Rust сам резолвить tier→env/args/post-session-config з пресе
|
|
|
34
34
|
|
|
35
35
|
## Сценарії використання
|
|
36
36
|
|
|
37
|
-
- `llm-lib/tests/acp.test.mjs` (runAcpAgent; getAcpPresets (smoke через реально збудований napi-аддон)) — interactive mode делегує kind/prompt/cwd у native.oneShotAcp і віддає його результат; без tier або interactive mode — fail-closed; tier прокидається в native.oneShotAcp четвертим аргументом; denyCommandFragments йде через guarded native boundary; denyCommandFragments fail-closed зі старим native addon; ще
|
|
37
|
+
- `llm-lib/tests/acp.test.mjs` (runAcpAgent; getAcpPresets (smoke через реально збудований napi-аддон)) — interactive mode делегує kind/prompt/cwd у native.oneShotAcp і віддає його результат; без tier або interactive mode — fail-closed; tier прокидається в native.oneShotAcp четвертим аргументом; denyCommandFragments йде через guarded native boundary; denyCommandFragments fail-closed зі старим native addon; ще 2
|
|
38
38
|
|
|
39
39
|
## Гарантії поведінки
|
|
40
40
|
|
package/lib/local-providers.mjs
CHANGED
|
@@ -15,17 +15,21 @@ import { env } from 'node:process'
|
|
|
15
15
|
* omlx: { baseUrl: string, apiKey: string|null },
|
|
16
16
|
* litellm: { baseUrl: string, apiKey: string|null }
|
|
17
17
|
* }} дефолтна мапа локальних провайдерів (override окремих полів — через
|
|
18
|
-
* `N_OMLX_BASE_URL`/`N_OMLX_API_KEY`/`N_LITELLM_BASE_URL`/`N_LITELLM_API_KEY
|
|
18
|
+
* `N_OMLX_BASE_URL`/`N_OMLX_API_KEY`/`N_LITELLM_BASE_URL`/`N_LITELLM_API_KEY`;
|
|
19
|
+
* для API-ключів приймаються і без префікса `OMLX_API_KEY`/`LITELLM_API_KEY` —
|
|
20
|
+
* це власна конвенція самих серверів (omlx-server читає `OMLX_API_KEY` для свого
|
|
21
|
+
* auth), тож розробницьке оточення природно експортує саме її; `N_`-префіксовані
|
|
22
|
+
* значення мають пріоритет)
|
|
19
23
|
*/
|
|
20
24
|
export function defaultLocalProviders() {
|
|
21
25
|
return {
|
|
22
26
|
omlx: {
|
|
23
27
|
baseUrl: env.N_OMLX_BASE_URL ?? 'http://127.0.0.1:8000/v1/',
|
|
24
|
-
apiKey: env.N_OMLX_API_KEY ?? null
|
|
28
|
+
apiKey: env.N_OMLX_API_KEY ?? env.OMLX_API_KEY ?? null
|
|
25
29
|
},
|
|
26
30
|
litellm: {
|
|
27
31
|
baseUrl: env.N_LITELLM_BASE_URL ?? 'https://llm.7n.ai/v1/',
|
|
28
|
-
apiKey: env.N_LITELLM_API_KEY ?? null
|
|
32
|
+
apiKey: env.N_LITELLM_API_KEY ?? env.LITELLM_API_KEY ?? null
|
|
29
33
|
}
|
|
30
34
|
}
|
|
31
35
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@7n/llm-lib",
|
|
3
|
-
"version": "2.13.
|
|
3
|
+
"version": "2.13.9",
|
|
4
4
|
"description": "Тонкий шар роботи з LLM (локальні omlx + хмарні провайдери) поверх pi: model tiers, one-shot, agentic-раннери, write-guard, trace, telemetry, prompt-budget",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"nitra",
|
|
@@ -56,8 +56,8 @@
|
|
|
56
56
|
"access": "public"
|
|
57
57
|
},
|
|
58
58
|
"optionalDependencies": {
|
|
59
|
-
"@7n/llm-lib-darwin-arm64": "2.13.
|
|
60
|
-
"@7n/llm-lib-linux-x64": "2.13.
|
|
59
|
+
"@7n/llm-lib-darwin-arm64": "2.13.8",
|
|
60
|
+
"@7n/llm-lib-linux-x64": "2.13.8"
|
|
61
61
|
},
|
|
62
62
|
"peerDependencies": {
|
|
63
63
|
"@earendil-works/pi-ai": "~0.80.10",
|