@7n/llm-lib 2.14.17 → 3.0.1

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,22 @@
1
1
  # Changelog
2
2
 
3
+ ## [3.0.1] - 2026-08-05
4
+
5
+ ### Changed
6
+
7
+ - chore(release): синк пінів платформних napi-пакетів @7n/llm-lib; release: @7n/llm-lib@3.0.0, @7n/rules@1.87.0; fix(llm-lib): onProgress-контракт submitBatch + вилучення емуляції batch (#402)
8
+
9
+ ## [3.0.0] - 2026-08-05
10
+
11
+ ### Fixed
12
+
13
+ - onProgress-колбек submitBatch тепер отримує (completed, total) як два числа, не (null, [completed, total]) — napi ThreadsafeFunction конвертувала tuple у JS-масив замість розгортання в окремі аргументи
14
+ - README/tiers.rs: застарілий дефолт N_LLM_LOCAL_PROVIDERS (omlx) виправлено на актуальний local-openai; README тепер документує generic-слот local-openai (N_LOCAL_OPENAI_BASE_URL/API_KEY)
15
+
16
+ ### Removed
17
+
18
+ - submitBatch: вилучено клієнтську емуляцію batch (chunkSize/concurrency/backend-опції). Batch завжди йде через реальний /v1/batches резолвленого провайдера; провайдер без зареєстрованого base_url/api_key тепер повертає явну помилку замість тихого фолбеку на емуляцію
19
+
3
20
  ## [2.14.17] - 2026-08-04
4
21
 
5
22
  ### Changed
package/README.md CHANGED
@@ -112,14 +112,16 @@ Runtime-knobs (нове імʼя має пріоритет; legacy-alias пра
112
112
  | `N_LLM_FIX_TURN_CEILING` | `N_CURSOR_FIX_TURN_CEILING` | 50 |
113
113
  | `N_LLM_SKILL_TURN_CEILING` | `N_CURSOR_SKILL_TURN_CEILING` | 80 |
114
114
  | `N_LLM_SKILL_TIMEOUT_MS` | `N_CURSOR_SKILL_TIMEOUT_MS` | 600000 |
115
- | `N_LLM_LOCAL_PROVIDERS` | — | `omlx` (кома-список провайдерів, що вважаються локальними) |
115
+ | `N_LLM_LOCAL_PROVIDERS` | — | `local-openai` (кома-список провайдерів, що вважаються локальними) |
116
116
  | `N_LLM_COMPRESS` | — | увімкнено (`0` — вимикає клієнтську компресію контексту, лише для дебагу) |
117
117
  | `N_LLM_TRACE_BODIES` | — | увімкнено (`0` — вимкнути body-capture повних тіл, важкі дані) |
118
118
  | `N_LLM_BODIES_DIR` | — | `~/.n-cursor/llm-bodies` |
119
119
  | `N_LLM_BODIES_MAX_MB` | — | `500` (ретеншн: авто-очистка найстаріших файлів понад ліміт) |
120
120
 
121
- Моделі/ключі провайдерів конфігуруються у pi: `~/.pi/agent/models.json` + `auth.json`
122
- (omlx як custom OpenAI-compatible provider).
121
+ Моделі/ключі провайдерів конфігуруються у pi: `~/.pi/agent/models.json` + `auth.json`.
122
+ Для локального OpenAI-сумісного сервера (omlx, litellm-проксі, TurboFieldfare тощо)
123
+ generic-слот `local-openai`: `N_LOCAL_OPENAI_BASE_URL` (дефолт `http://127.0.0.1:8000/v1/`)
124
+ та `N_LOCAL_OPENAI_API_KEY`. Активний лише один local-openai сервер за раз.
123
125
 
124
126
  ## Приклад
125
127
 
package/lib/batch.mjs CHANGED
@@ -1,18 +1,15 @@
1
1
  /**
2
- * Тип 2b (OpenAI-сумісний API, batch) — `submitBatch` обирає між клієнтською
3
- * емуляцією (v1, чанкований конкурентний прогін через Тип 2a
4
- * `llm_lib::local_cloud`) і справжнім `/v1/batches` litellm batch-adapter-а
5
- * (спека `docs/specs/2026-07-27-batch-local-avg-real-batches.md`), під тим
6
- * самим інтерфейсом `submit progress → results` для обох. Вибір —
7
- * `backend` (дефолт `'auto'`: реальний Batch API лише коли резолвлений
8
- * провайдер `litellm` і кешована мережева проба адаптера пройшла; локальний
9
- * omlx завжди йде емуляцією).
2
+ * Тип 2b (OpenAI-сумісний API, batch) — `submitBatch` завжди йде через
3
+ * справжній `/v1/batches` OpenAI-сумісний batch-adapter резолвленого
4
+ * провайдера (спека `docs/specs/2026-07-27-batch-local-avg-real-batches.md`).
5
+ * Клієнтську емуляцію (v1, чанкований прогін через Тип 2a) вилучено
6
+ * провайдер без зареєстрованого `base_url`/`api_key` у `localProviders`
7
+ * повертає явну помилку, без тихого фолбеку.
10
8
  *
11
9
  * Тонкий JS-клієнт до Rust-крейта `llm_lib::batch`/`llm_lib::remote_batch`
12
10
  * через napi FFI in-process (`llm-lib/crates/llm-lib-napi`) — жодного
13
- * власного чанкінгу чи HTTP тут (анти-приклад, якого це узагальнює:
14
- * `mlmail/use-summary.js` чанкує переклади проти omlx вручну, з
15
- * вистражданими лімітами).
11
+ * власного HTTP тут (анти-приклад, якого це узагальнює: `mlmail/use-summary.js`
12
+ * чанкує переклади проти omlx вручну, з вистражданими лімітами).
16
13
  */
17
14
  import { loadNative } from './internal/native.mjs'
18
15
 
@@ -35,9 +32,6 @@ import { loadNative } from './internal/native.mjs'
35
32
  * @param {{
36
33
  * localProviders?: Record<string, { baseUrl: string, apiKey?: string | null }>,
37
34
  * system?: string,
38
- * chunkSize?: number,
39
- * concurrency?: number,
40
- * backend?: 'emulated' | 'openai-batches' | 'auto',
41
35
  * pollIntervalMs?: number,
42
36
  * pollTimeoutMs?: number,
43
37
  * onProgress?: (completed: number, total: number) => void,
@@ -50,13 +44,13 @@ import { loadNative } from './internal/native.mjs'
50
44
  * onProgress?: (completed: number, total: number) => void
51
45
  * ) => Promise<BatchResult[]>
52
46
  * }
53
- * }} [options] конфіг локальних провайдерів, ліміти чанка/конкурентності/бекенда/опитування, progress-колбек, інжект `native` для тестів
47
+ * }} [options] конфіг локальних провайдерів, ліміти опитування, progress-колбек, інжект `native` для тестів
54
48
  * @returns {Promise<BatchResult[]>} результати в тому самому порядку, що й вхідні `items`
55
49
  */
56
50
  export function submitBatch(
57
51
  modelSpecOrTier,
58
52
  items,
59
- { localProviders, system, chunkSize, concurrency, backend, pollIntervalMs, pollTimeoutMs, onProgress, native } = {}
53
+ { localProviders, system, pollIntervalMs, pollTimeoutMs, onProgress, native } = {}
60
54
  ) {
61
55
  const nativeImpl = native ?? loadNative()
62
56
  return nativeImpl.submitBatch(
@@ -71,9 +65,6 @@ export function submitBatch(
71
65
  system: system ?? undefined
72
66
  },
73
67
  {
74
- chunkSize: chunkSize ?? undefined,
75
- concurrency: concurrency ?? undefined,
76
- backend: backend ?? undefined,
77
68
  pollIntervalMs: pollIntervalMs ?? undefined,
78
69
  pollTimeoutMs: pollTimeoutMs ?? undefined
79
70
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@7n/llm-lib",
3
- "version": "2.14.17",
3
+ "version": "3.0.1",
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.14.15",
60
- "@7n/llm-lib-linux-x64": "2.14.15"
59
+ "@7n/llm-lib-darwin-arm64": "3.0.0",
60
+ "@7n/llm-lib-linux-x64": "3.0.0"
61
61
  },
62
62
  "peerDependencies": {
63
63
  "@earendil-works/pi-ai": "~0.80.10",