@nitra/cursor 4.0.0 → 4.1.0
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 +6 -0
- package/lib/models.mjs +68 -0
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
package/lib/models.mjs
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Глобальна класифікація моделей для pi.
|
|
3
|
+
*
|
|
4
|
+
* Формат значень: "provider/model-id" (pi --model формат).
|
|
5
|
+
* Налаштовується один раз у середовищі; кожен скіл посилається на потрібний тир.
|
|
6
|
+
*
|
|
7
|
+
* Приклад ~/.bashrc або .env:
|
|
8
|
+
* N_LOCAL_MIN_MODEL=ollama/gemma3:4b
|
|
9
|
+
* N_CLOUD_MIN_MODEL=openai/gpt-5.4-mini
|
|
10
|
+
* N_CLOUD_AVG_MODEL=openai/gpt-5.4
|
|
11
|
+
* N_CLOUD_MAX_MODEL=openai/gpt-5.5
|
|
12
|
+
*
|
|
13
|
+
* Значення '' означає "pi дефолтний провайдер" (залежить від ~/.pi конфігу).
|
|
14
|
+
*
|
|
15
|
+
* ## Каскад local → cloud (контракт)
|
|
16
|
+
*
|
|
17
|
+
* Використовуйте resolveModel(tier) замість прямих констант — система прозоро
|
|
18
|
+
* відпрацює навіть без локальних моделей:
|
|
19
|
+
*
|
|
20
|
+
* resolveModel('min') → LOCAL_MIN → LOCAL_AVG → LOCAL_MAX → CLOUD_MIN
|
|
21
|
+
* resolveModel('avg') → LOCAL_AVG → LOCAL_MAX → CLOUD_AVG
|
|
22
|
+
* resolveModel('max') → LOCAL_MAX → CLOUD_MAX
|
|
23
|
+
*
|
|
24
|
+
* Якщо жоден тир не задано — повертає '' (pi-дефолт провайдера).
|
|
25
|
+
* Прямі константи (LOCAL_MIN тощо) залишені для випадків, де потрібен
|
|
26
|
+
* явний контроль (напр., ollama HTTP, explicit retry до хмари).
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
import { env } from 'node:process'
|
|
30
|
+
|
|
31
|
+
// ── Локальні (offline, без API-ключа) ────────────────────────────────────────
|
|
32
|
+
|
|
33
|
+
/** Швидкий локальний inference. Напр.: ollama/gemma3:4b */
|
|
34
|
+
export const LOCAL_MIN = env.N_LOCAL_MIN_MODEL ?? ''
|
|
35
|
+
|
|
36
|
+
/** Середній локальний. Напр.: ollama/gemma4:26b-moe */
|
|
37
|
+
export const LOCAL_AVG = env.N_LOCAL_AVG_MODEL ?? ''
|
|
38
|
+
|
|
39
|
+
/** Максимальний локальний. Напр.: ollama/llama4-maverick */
|
|
40
|
+
export const LOCAL_MAX = env.N_LOCAL_MAX_MODEL ?? ''
|
|
41
|
+
|
|
42
|
+
// ── Хмарні (потрібен API-ключ у pi) ─────────────────────────────────────────
|
|
43
|
+
|
|
44
|
+
/** Мінімальний хмарний. Напр.: openai/gpt-5.4-mini, google/gemini-2.5-flash, anthropic/claude-haiku-4-5 */
|
|
45
|
+
export const CLOUD_MIN = env.N_CLOUD_MIN_MODEL ?? ''
|
|
46
|
+
|
|
47
|
+
/** Середній хмарний. Напр.: openai/gpt-5.4, google/gemini-2.5-pro, anthropic/claude-sonnet-4-6 */
|
|
48
|
+
export const CLOUD_AVG = env.N_CLOUD_AVG_MODEL ?? ''
|
|
49
|
+
|
|
50
|
+
/** Максимальний хмарний. Напр.: openai/gpt-5.5, anthropic/claude-opus-4-8 */
|
|
51
|
+
export const CLOUD_MAX = env.N_CLOUD_MAX_MODEL ?? ''
|
|
52
|
+
|
|
53
|
+
// ── Каскадне розв'язання ─────────────────────────────────────────────────────
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Повертає перший непорожній model-id для запитаного тиру,
|
|
57
|
+
* каскадно перевіряючи локальні тири, а тоді хмарний еквівалент.
|
|
58
|
+
*
|
|
59
|
+
* @param {'min'|'avg'|'max'} tier
|
|
60
|
+
* @returns {string} provider/model-id або '' для pi-дефолту
|
|
61
|
+
* @throws {TypeError} якщо tier невідомий
|
|
62
|
+
*/
|
|
63
|
+
export function resolveModel(tier) {
|
|
64
|
+
if (tier === 'min') return LOCAL_MIN || LOCAL_AVG || LOCAL_MAX || CLOUD_MIN
|
|
65
|
+
if (tier === 'avg') return LOCAL_AVG || LOCAL_MAX || CLOUD_AVG
|
|
66
|
+
if (tier === 'max') return LOCAL_MAX || CLOUD_MAX
|
|
67
|
+
throw new TypeError(`resolveModel: unknown tier "${tier}". Use 'min', 'avg', or 'max'.`)
|
|
68
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nitra/cursor",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.1.0",
|
|
4
4
|
"description": "CLI для завантаження cursor-правил (префікс n-) у локальний репозиторій",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"bin",
|
|
30
30
|
"github-actions",
|
|
31
31
|
"schemas",
|
|
32
|
+
"lib",
|
|
32
33
|
"scripts",
|
|
33
34
|
"skills",
|
|
34
35
|
".claude-template",
|