pi-umans-provider 1.0.9 → 1.0.11

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 CHANGED
@@ -29,11 +29,16 @@ _A [pi](https://github.com/earendil-works/pi-coding-agent) provider extension wi
29
29
  |-------|------|---------|--------|-----------|------------|
30
30
  | Coder | Kimi K2.7-Code | 262K | ✅ | ✅ | 33K |
31
31
  | DeepSeek V4 Flash | DeepSeek-V4-Flash | 1.0M | ❌ | ✅ | 393K |
32
- | DeepSeek V4 Pro 0813 (lab) | DeepSeek-V4-Pro-0813 | 524K | ❌ | ✅ | 393K |
32
+ | DeepSeek V4 Flash (lab) | — | 1.0M | ❌ | ✅ | 393K |
33
+ | DeepSeek V4 Flash Vision (lab) | — | 1.0M | ✅ | ✅ | 393K |
34
+ | DeepSeek V4 Pro | DeepSeek-V4-Pro-0813 | 1.0M | ❌ | ✅ | 393K |
35
+ | DeepSeek V4 Pro 0813 (lab) | — | 1.0M | ❌ | ✅ | 393K |
33
36
  | Flash | Qwen3.6-35B-A3B | 262K | ✅ | ✅ | 33K |
34
- | GLM 5.2 | GLM-5.2 | 406K | ❌ | ✅ | 131K |
37
+ | GLM 5.2 | — | 406K | ❌ | ✅ | 131K |
38
+ | Kimi K2.7 Code | — | 262K | ✅ | ✅ | 33K |
35
39
  | Kimi K3 | Kimi K3 | 1.0M | ✅ | ✅ | 131K |
36
40
  | Qwen3.6 35B A3B | Qwen3.6-35B-A3B | 262K | ✅ | ✅ | 33K |
41
+ | Qwen3.8 27B (lab) | Qwen3.8-27B | 262K | ✅ | ✅ | 131K |
37
42
 
38
43
  > **Note:** `umans-flash-beta` is deprecated (sunset 2026-06-07). Use `umans-flash` instead.
39
44
  > `umans-qwen3.6-35b-a3b` is a technical alias for `umans-flash`.
@@ -51,5 +51,39 @@
51
51
  "contextWindow": 1048576,
52
52
  "maxTokens": 393215,
53
53
  "deprecatedAt": "2026-08-14T02:00:18.070Z"
54
+ },
55
+ "umans-deepseek-v4-pro-0813-lab": {
56
+ "id": "umans-deepseek-v4-pro-0813-lab",
57
+ "name": "Umans DeepSeek V4 Pro 0813 (lab)",
58
+ "reasoning": true,
59
+ "input": [
60
+ "text"
61
+ ],
62
+ "cost": {
63
+ "input": 0,
64
+ "output": 0,
65
+ "cacheRead": 0,
66
+ "cacheWrite": 0
67
+ },
68
+ "contextWindow": 1048576,
69
+ "maxTokens": 393215,
70
+ "deprecatedAt": "2026-08-16T02:00:14.127Z"
71
+ },
72
+ "umans-glm-5.2": {
73
+ "id": "umans-glm-5.2",
74
+ "name": "Umans GLM 5.2",
75
+ "reasoning": true,
76
+ "input": [
77
+ "text"
78
+ ],
79
+ "cost": {
80
+ "input": 0,
81
+ "output": 0,
82
+ "cacheRead": 0,
83
+ "cacheWrite": 0
84
+ },
85
+ "contextWindow": 405504,
86
+ "maxTokens": 131071,
87
+ "deprecatedAt": "2026-08-16T02:00:14.127Z"
54
88
  }
55
89
  }
package/models.json CHANGED
@@ -33,8 +33,8 @@
33
33
  "maxTokens": 393215
34
34
  },
35
35
  {
36
- "id": "umans-deepseek-v4-pro-0813-lab",
37
- "name": "Umans DeepSeek V4 Pro 0813 (lab)",
36
+ "id": "umans-deepseek-v4-pro-0813",
37
+ "name": "Umans DeepSeek V4 Pro",
38
38
  "reasoning": true,
39
39
  "input": [
40
40
  "text"
@@ -45,7 +45,7 @@
45
45
  "cacheRead": 0,
46
46
  "cacheWrite": 0
47
47
  },
48
- "contextWindow": 524288,
48
+ "contextWindow": 1048576,
49
49
  "maxTokens": 393215
50
50
  },
51
51
  {
@@ -66,11 +66,12 @@
66
66
  "maxTokens": 32768
67
67
  },
68
68
  {
69
- "id": "umans-glm-5.2",
70
- "name": "Umans GLM 5.2",
69
+ "id": "umans-kimi-k3",
70
+ "name": "Umans Kimi K3",
71
71
  "reasoning": true,
72
72
  "input": [
73
- "text"
73
+ "text",
74
+ "image"
74
75
  ],
75
76
  "cost": {
76
77
  "input": 0,
@@ -78,12 +79,12 @@
78
79
  "cacheRead": 0,
79
80
  "cacheWrite": 0
80
81
  },
81
- "contextWindow": 405504,
82
+ "contextWindow": 1048576,
82
83
  "maxTokens": 131071
83
84
  },
84
85
  {
85
- "id": "umans-kimi-k3",
86
- "name": "Umans Kimi K3",
86
+ "id": "umans-qwen3.6-35b-a3b",
87
+ "name": "Umans Qwen3.6 35B A3B",
87
88
  "reasoning": true,
88
89
  "input": [
89
90
  "text",
@@ -95,12 +96,12 @@
95
96
  "cacheRead": 0,
96
97
  "cacheWrite": 0
97
98
  },
98
- "contextWindow": 1048576,
99
- "maxTokens": 131071
99
+ "contextWindow": 262144,
100
+ "maxTokens": 32768
100
101
  },
101
102
  {
102
- "id": "umans-qwen3.6-35b-a3b",
103
- "name": "Umans Qwen3.6 35B A3B",
103
+ "id": "umans-qwen3.8-27b-lab",
104
+ "name": "Umans Qwen3.8 27B (lab)",
104
105
  "reasoning": true,
105
106
  "input": [
106
107
  "text",
@@ -113,6 +114,6 @@
113
114
  "cacheWrite": 0
114
115
  },
115
116
  "contextWindow": 262144,
116
- "maxTokens": 32768
117
+ "maxTokens": 131071
117
118
  }
118
119
  ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-umans-provider",
3
- "version": "1.0.9",
3
+ "version": "1.0.11",
4
4
  "description": "UMANS provider extension for pi - Access Kimi K2.6, GLM 5.1, Qwen 3.6, and coding-optimized models through the UMANS API",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -215,6 +215,31 @@ function updateDeprecatedModels(modelsJsonPath, newModels) {
215
215
  }
216
216
  }
217
217
 
218
+ /**
219
+ * Grace-period deprecated models (deprecatedAt within TTL) with metadata stripped.
220
+ * Keeps the README table serving models that are delisted but still within their
221
+ * 14-day grace window.
222
+ */
223
+ function withDeprecatedForReadme(models) {
224
+ const deprecatedPath = path.join(path.dirname(MODELS_JSON_PATH), 'deprecated-models.json');
225
+ let deprecated = {};
226
+ try {
227
+ const parsed = JSON.parse(fs.readFileSync(deprecatedPath, 'utf8'));
228
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) deprecated = parsed;
229
+ } catch { /* no graveyard yet */ }
230
+ const now = Date.now();
231
+ const seen = new Set(models.map(m => m.id));
232
+ const extras = [];
233
+ for (const entry of Object.values(deprecated)) {
234
+ if (!entry || !entry.id || seen.has(entry.id)) continue;
235
+ const removedAt = Date.parse(entry.deprecatedAt || '');
236
+ if (Number.isNaN(removedAt) || now - removedAt > DEPRECATED_MODEL_TTL_MS) continue;
237
+ const m = { ...entry };
238
+ delete m.deprecatedAt;
239
+ extras.push(m);
240
+ }
241
+ return extras.length > 0 ? [...models, ...extras] : models;
242
+ }
218
243
  async function main() {
219
244
  console.log(`Fetching models from ${MODELS_INFO_API_URL}...`);
220
245
 
@@ -291,7 +316,7 @@ async function main() {
291
316
 
292
317
  // Build full model list for README: base → patch → custom
293
318
  const customModels = loadJson(CUSTOM_MODELS_JSON_PATH);
294
- const readmeModels = buildModels(apiTransformed, Array.isArray(customModels) ? customModels : [], patch);
319
+ const readmeModels = buildModels(withDeprecatedForReadme(apiTransformed), Array.isArray(customModels) ? customModels : [], patch);
295
320
  readmeModels.sort((a, b) => a.name.localeCompare(b.name));
296
321
  console.log("✓ Built model list (base → patch → custom) for README");
297
322