@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 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: 966e3fea
7
- model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
- tier: local-min
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; ще 1
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
 
@@ -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.7",
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.5",
60
- "@7n/llm-lib-linux-x64": "2.13.5"
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",