pi-runinfra-provider 1.0.0 → 1.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/README.md +14 -2
- package/custom-models.json +1 -0
- package/models.json +127 -0
- package/package.json +1 -1
- package/patch.json +19 -0
- package/scripts/update-models.js +14 -0
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@ _A [pi](https://github.com/earendil-works/pi-coding-agent) provider extension fo
|
|
|
15
15
|
|
|
16
16
|
## Features
|
|
17
17
|
|
|
18
|
-
- **
|
|
18
|
+
- **10 AI Models** covering the full RunInfra lineup: DeepSeek V4 Flash, DeepSeek V4 Pro, Nemotron 3.5 Lightning 30B, Ornith 1.5 35B, Qwen3.8 2.4T A95B, Qwen3.8 27B, Parakeet TDT 0.6B v3, and the Qwen3 embedding/reranker models
|
|
19
19
|
- **OpenAI-Compatible API** — Just change the base URL and API key
|
|
20
20
|
- **Cost Tracking** — Per-model pricing for budget management
|
|
21
21
|
- **Reasoning Models** — Extended thinking via `reasoning_content` field
|
|
@@ -72,6 +72,11 @@ pi
|
|
|
72
72
|
| DeepSeek V4 Flash | 1.0M | ❌ | ✅ | $0.13 | $0.01 | $0.27 |
|
|
73
73
|
| DeepSeek V4 Pro | 1.0M | ❌ | ✅ | $0.60 | $0.03 | $1.90 |
|
|
74
74
|
| Nemotron 3.5 Lightning 30B | 262K | ❌ | ✅ | $0.05 | — | $0.15 |
|
|
75
|
+
| Ornith 1.5 35B | 262K | ✅ | ✅ | $0.10 | $0.01 | $0.40 |
|
|
76
|
+
| Parakeet TDT 0.6B v3 | 131K | ❌ | ❌ | $10.00 | — | — |
|
|
77
|
+
| Qwen3 Embedding 0.6B | 33K | ❌ | ❌ | $0.01 | — | — |
|
|
78
|
+
| Qwen3 Embedding 8B | 33K | ❌ | ❌ | $0.05 | — | — |
|
|
79
|
+
| Qwen3 Reranker 8B | 16K | ❌ | ❌ | $0.05 | — | — |
|
|
75
80
|
| Qwen3.8 2.4T A95B | 262K | ❌ | ✅ | $2.00 | $0.20 | $6.00 |
|
|
76
81
|
| Qwen3.8 27B | 262K | ❌ | ✅ | $0.10 | $0.01 | $0.40 |
|
|
77
82
|
|
|
@@ -128,7 +133,7 @@ RunInfra's API follows the OpenAI Chat Completions API:
|
|
|
128
133
|
- **`supportsDeveloperRole: false`** — All models. RunInfra uses standard OpenAI roles.
|
|
129
134
|
- **`maxTokensField: "max_tokens"`** — All models. RunInfra accepts `max_tokens`.
|
|
130
135
|
- **`thinkingFormat: "deepseek"`** — DeepSeek V4 Flash / V4 Pro. Reasoning is toggled via a `thinking` parameter and effort is sent as `reasoning_effort` (pi maps Shift+Tab levels to `low`/`high`/`max`).
|
|
131
|
-
- **`thinkingFormat: "openai"`** — Nemotron 3.5 Lightning, Qwen3.8. Returns thinking in the `reasoning_content` field.
|
|
136
|
+
- **`thinkingFormat: "openai"`** — Nemotron 3.5 Lightning, Ornith 1.5 35B, and Qwen3.8. Returns thinking in the `reasoning_content` field.
|
|
132
137
|
- **`supportsReasoningEffort: true`** — All reasoning models. Supports the `reasoning_effort` parameter.
|
|
133
138
|
- **`supportsStore: false`** — All models. RunInfra doesn't support the `store` parameter.
|
|
134
139
|
|
|
@@ -165,6 +170,13 @@ This will:
|
|
|
165
170
|
3. Apply overrides from `patch.json`
|
|
166
171
|
4. Update `models.json` and the README model table
|
|
167
172
|
|
|
173
|
+
To regenerate just the README model table from local data — no API key needed,
|
|
174
|
+
useful for offline curation:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
node scripts/update-models.js --readme-only
|
|
178
|
+
```
|
|
179
|
+
|
|
168
180
|
## License
|
|
169
181
|
|
|
170
182
|
MIT
|
package/custom-models.json
CHANGED
package/models.json
CHANGED
|
@@ -41,6 +41,49 @@
|
|
|
41
41
|
"maxTokensField": "max_tokens"
|
|
42
42
|
}
|
|
43
43
|
},
|
|
44
|
+
{
|
|
45
|
+
"id": "nemotron-3-5-lightning-30b",
|
|
46
|
+
"name": "Nemotron 3.5 Lightning 30B",
|
|
47
|
+
"reasoning": true,
|
|
48
|
+
"input": [
|
|
49
|
+
"text"
|
|
50
|
+
],
|
|
51
|
+
"cost": {
|
|
52
|
+
"input": 0.05,
|
|
53
|
+
"output": 0.15,
|
|
54
|
+
"cacheRead": 0,
|
|
55
|
+
"cacheWrite": 0
|
|
56
|
+
},
|
|
57
|
+
"contextWindow": 262144,
|
|
58
|
+
"maxTokens": 262144,
|
|
59
|
+
"compat": {
|
|
60
|
+
"supportsDeveloperRole": false,
|
|
61
|
+
"supportsStore": false,
|
|
62
|
+
"maxTokensField": "max_tokens"
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"id": "ornith-1-5-35b",
|
|
67
|
+
"name": "Ornith 1.5 35B",
|
|
68
|
+
"reasoning": true,
|
|
69
|
+
"input": [
|
|
70
|
+
"text",
|
|
71
|
+
"image"
|
|
72
|
+
],
|
|
73
|
+
"cost": {
|
|
74
|
+
"input": 0.1,
|
|
75
|
+
"output": 0.4,
|
|
76
|
+
"cacheRead": 0.01,
|
|
77
|
+
"cacheWrite": 0
|
|
78
|
+
},
|
|
79
|
+
"contextWindow": 262144,
|
|
80
|
+
"maxTokens": 262144,
|
|
81
|
+
"compat": {
|
|
82
|
+
"supportsDeveloperRole": false,
|
|
83
|
+
"supportsStore": false,
|
|
84
|
+
"maxTokensField": "max_tokens"
|
|
85
|
+
}
|
|
86
|
+
},
|
|
44
87
|
{
|
|
45
88
|
"id": "qwen3-8-2-4t-a95b",
|
|
46
89
|
"name": "Qwen3.8 2.4T A95B",
|
|
@@ -82,5 +125,89 @@
|
|
|
82
125
|
"supportsStore": false,
|
|
83
126
|
"maxTokensField": "max_tokens"
|
|
84
127
|
}
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"id": "parakeet-tdt-0-6b-v3",
|
|
131
|
+
"name": "Parakeet TDT 0.6B v3",
|
|
132
|
+
"reasoning": false,
|
|
133
|
+
"input": [
|
|
134
|
+
"text"
|
|
135
|
+
],
|
|
136
|
+
"cost": {
|
|
137
|
+
"input": 10,
|
|
138
|
+
"output": 0,
|
|
139
|
+
"cacheRead": 0,
|
|
140
|
+
"cacheWrite": 0
|
|
141
|
+
},
|
|
142
|
+
"contextWindow": 131072,
|
|
143
|
+
"maxTokens": 32768,
|
|
144
|
+
"compat": {
|
|
145
|
+
"supportsDeveloperRole": false,
|
|
146
|
+
"supportsStore": false,
|
|
147
|
+
"maxTokensField": "max_tokens"
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"id": "qwen3-embedding-0-6b",
|
|
152
|
+
"name": "Qwen3 Embedding 0.6B",
|
|
153
|
+
"reasoning": false,
|
|
154
|
+
"input": [
|
|
155
|
+
"text"
|
|
156
|
+
],
|
|
157
|
+
"cost": {
|
|
158
|
+
"input": 0.01,
|
|
159
|
+
"output": 0,
|
|
160
|
+
"cacheRead": 0,
|
|
161
|
+
"cacheWrite": 0
|
|
162
|
+
},
|
|
163
|
+
"contextWindow": 32768,
|
|
164
|
+
"maxTokens": 32768,
|
|
165
|
+
"compat": {
|
|
166
|
+
"supportsDeveloperRole": false,
|
|
167
|
+
"supportsStore": false,
|
|
168
|
+
"maxTokensField": "max_tokens"
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"id": "qwen3-embedding-8b",
|
|
173
|
+
"name": "Qwen3 Embedding 8B",
|
|
174
|
+
"reasoning": false,
|
|
175
|
+
"input": [
|
|
176
|
+
"text"
|
|
177
|
+
],
|
|
178
|
+
"cost": {
|
|
179
|
+
"input": 0.05,
|
|
180
|
+
"output": 0,
|
|
181
|
+
"cacheRead": 0,
|
|
182
|
+
"cacheWrite": 0
|
|
183
|
+
},
|
|
184
|
+
"contextWindow": 32768,
|
|
185
|
+
"maxTokens": 32768,
|
|
186
|
+
"compat": {
|
|
187
|
+
"supportsDeveloperRole": false,
|
|
188
|
+
"supportsStore": false,
|
|
189
|
+
"maxTokensField": "max_tokens"
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"id": "qwen3-reranker-8b",
|
|
194
|
+
"name": "Qwen3 Reranker 8B",
|
|
195
|
+
"reasoning": false,
|
|
196
|
+
"input": [
|
|
197
|
+
"text"
|
|
198
|
+
],
|
|
199
|
+
"cost": {
|
|
200
|
+
"input": 0.05,
|
|
201
|
+
"output": 0,
|
|
202
|
+
"cacheRead": 0,
|
|
203
|
+
"cacheWrite": 0
|
|
204
|
+
},
|
|
205
|
+
"contextWindow": 16384,
|
|
206
|
+
"maxTokens": 32768,
|
|
207
|
+
"compat": {
|
|
208
|
+
"supportsDeveloperRole": false,
|
|
209
|
+
"supportsStore": false,
|
|
210
|
+
"maxTokensField": "max_tokens"
|
|
211
|
+
}
|
|
85
212
|
}
|
|
86
213
|
]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-runinfra-provider",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "RunInfra provider extension for pi - Access DeepSeek V4, Nemotron 3.5 Lightning, and Qwen3.8 models through the RunInfra gateway",
|
|
5
5
|
"author": "monotykamary",
|
|
6
6
|
"homepage": "https://github.com/monotykamary/pi-runinfra-provider#readme",
|
package/patch.json
CHANGED
|
@@ -56,6 +56,25 @@
|
|
|
56
56
|
"maxTokensField": "max_tokens"
|
|
57
57
|
}
|
|
58
58
|
},
|
|
59
|
+
"ornith-1-5-35b": {
|
|
60
|
+
"reasoning": true,
|
|
61
|
+
"name": "Ornith 1.5 35B",
|
|
62
|
+
"thinkingLevelMap": {
|
|
63
|
+
"off": "none",
|
|
64
|
+
"minimal": "low",
|
|
65
|
+
"low": "low",
|
|
66
|
+
"medium": "medium",
|
|
67
|
+
"high": "xhigh",
|
|
68
|
+
"xhigh": "xhigh",
|
|
69
|
+
"max": "xhigh"
|
|
70
|
+
},
|
|
71
|
+
"compat": {
|
|
72
|
+
"thinkingFormat": "openai",
|
|
73
|
+
"supportsReasoningEffort": true,
|
|
74
|
+
"requiresReasoningContentOnAssistantMessages": true,
|
|
75
|
+
"maxTokensField": "max_tokens"
|
|
76
|
+
}
|
|
77
|
+
},
|
|
59
78
|
"qwen3-8-2-4t-a95b": {
|
|
60
79
|
"name": "Qwen3.8 2.4T A95B",
|
|
61
80
|
"reasoning": true,
|
package/scripts/update-models.js
CHANGED
|
@@ -430,6 +430,20 @@ function withDeprecatedForReadme(models) {
|
|
|
430
430
|
|
|
431
431
|
async function main() {
|
|
432
432
|
try {
|
|
433
|
+
// Regenerate the derived README table from local source data without an API
|
|
434
|
+
// key. This is useful for offline workflows while curating custom models.
|
|
435
|
+
if (process.argv.includes('--readme-only')) {
|
|
436
|
+
const baseModels = loadJson(MODELS_JSON_PATH);
|
|
437
|
+
const patchData = loadJson(PATCH_JSON_PATH);
|
|
438
|
+
const customModels = loadJson(CUSTOM_MODELS_JSON_PATH);
|
|
439
|
+
const readmeBase = withDeprecatedForReadme(Array.isArray(baseModels) ? baseModels : []);
|
|
440
|
+
const readmeModels = buildModels(readmeBase, Array.isArray(customModels) ? customModels : [], patchData);
|
|
441
|
+
readmeModels.sort((a, b) => a.name.localeCompare(b.name));
|
|
442
|
+
updateReadme(readmeModels);
|
|
443
|
+
console.log('✓ Regenerated README.md from local model data');
|
|
444
|
+
return;
|
|
445
|
+
}
|
|
446
|
+
|
|
433
447
|
const apiModels = await fetchModels();
|
|
434
448
|
|
|
435
449
|
// Load existing models.json — source of truth for curated specs
|