@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 +17 -0
- package/README.md +5 -3
- package/lib/batch.mjs +10 -19
- package/package.json +3 -3
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` | — | `
|
|
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
|
|
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
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* (
|
|
6
|
-
*
|
|
7
|
-
*
|
|
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
|
-
* власного
|
|
14
|
-
*
|
|
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] конфіг локальних провайдерів, ліміти
|
|
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,
|
|
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": "
|
|
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": "
|
|
60
|
-
"@7n/llm-lib-linux-x64": "
|
|
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",
|