pi-freeflow 1.26.1 → 1.28.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 +28 -0
- package/README.md +6 -6
- package/package.json +1 -1
- package/src/catalog.ts +10 -5
- package/src/cline-accounts.ts +962 -891
- package/src/commands.ts +1910 -1806
- package/src/deploy.ts +8 -5
- package/src/index.ts +1 -1
- package/src/models.ts +36 -23
- package/src/probe.ts +33 -1
- package/src/proxy.ts +25 -2
- package/src/relay-state.ts +1140 -1133
- package/src/relay.ts +422 -399
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.28.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 526d43f: Refresh the free model catalog to the current live rotation (33 models).
|
|
8
|
+
|
|
9
|
+
- New: Space Bunny Alpha on the KiloCode Gateway free list (1M context window) — pick it with the short name `space-bunny-alpha`.
|
|
10
|
+
- Back: Step 3.7 Flash returns to the KiloCode Gateway free list after a live serving re-check.
|
|
11
|
+
- Retired from the picker: Nex N2.5 Pro, Nex N2.5 Mini, and GLM 5.2 free — all three are gone from the free list (only paid versions remain).
|
|
12
|
+
|
|
13
|
+
- 526d43f: Add LongCat 2.5 Preview Free (`longcat-2.5-preview-free`) from OpenCode Zen with a 1M context window, reasoning, and vision.
|
|
14
|
+
|
|
15
|
+
Fix upstream drift detection to accurately recognize free and alpha models while excluding commercial paid model families from candidate suggestions.
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- 526d43f: Retry relay reachability verification after deployment so edge DNS and routing propagation delays (such as newly created Cloudflare Workers routes) do not show a false unreachable warning.
|
|
20
|
+
|
|
21
|
+
## 1.27.0
|
|
22
|
+
|
|
23
|
+
### Minor Changes
|
|
24
|
+
|
|
25
|
+
- 2b20cbf: Cline accounts now show which login served requests: the accounts list shows per-login request totals with the last used model and time, and status shows a summary of the most recently used login.
|
|
26
|
+
|
|
27
|
+
### Patch Changes
|
|
28
|
+
|
|
29
|
+
- 0931e12: Fix deployed relay target matching and private-host protection.
|
|
30
|
+
|
|
3
31
|
## 1.26.1
|
|
4
32
|
|
|
5
33
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ Thin by design: a model list, a relay proxy, and a log. The host (`pi-ai`) handl
|
|
|
16
16
|
|
|
17
17
|
| Feature | What it does | Cost |
|
|
18
18
|
| :--- | :--- | :--- |
|
|
19
|
-
| **33 free models** |
|
|
19
|
+
| **33 free models** | 10 from OpenCode Zen, 18 from KiloCode Gateway, 5 from Cline, context windows up to 1M. Full list below. | **$0** |
|
|
20
20
|
| **Relay pool** | Route requests through your own Cloudflare Workers and Vercel Edge relays. Requests rotate across the pool. A relay that rate-limits, times out, or drops the connection cools down while healthy ones take its traffic. | **$0** beyond your platforms' free tiers |
|
|
21
21
|
| **Automatic fallback** | When every relay is cooling down, requests go direct to upstream instead of failing. | **$0** |
|
|
22
22
|
| **Short model names** | Every model has a slash-free, colon-free alias, plus an optional `:effort` suffix for thinking depth. You type `freeflow/<name>`. | **$0** |
|
|
@@ -190,7 +190,7 @@ The same command set works identically in OMP and Pi:
|
|
|
190
190
|
/model → freeflow → pick
|
|
191
191
|
```
|
|
192
192
|
|
|
193
|
-
#### OpenCode Zen (
|
|
193
|
+
#### OpenCode Zen (10 models), Responses and Chat API
|
|
194
194
|
|
|
195
195
|
Good defaults for long coding sessions and agentic work.
|
|
196
196
|
|
|
@@ -205,8 +205,9 @@ Good defaults for long coding sessions and agentic work.
|
|
|
205
205
|
| `big-pickle` | Big Pickle | **200K** (200.000) | **32K** (32.000) | `high / max` | ❌ |
|
|
206
206
|
| `ling-3.0-flash-fin-free` | Inclusion AI | **262K** (262.144) | **131K** (131.072) | `minimal … xhigh` | ❌ |
|
|
207
207
|
| `space-bunny-free` | Stealth preview (lab undisclosed) | **1M** (1.048.576) | **512K** (524.288) | `low … max` | ✅ |
|
|
208
|
+
| `longcat-2.5-preview-free` | Meituan LongCat | **1M** (1.000.000) | **131K** (131.072) | `minimal … max` | ✅ |
|
|
208
209
|
|
|
209
|
-
#### KiloCode Gateway (
|
|
210
|
+
#### KiloCode Gateway (18 models), OpenRouter compatible
|
|
210
211
|
|
|
211
212
|
Keyless access. Short aliases work for every row (the full ID is in parentheses).
|
|
212
213
|
|
|
@@ -226,11 +227,10 @@ Keyless access. Short aliases work for every row (the full ID is in parentheses)
|
|
|
226
227
|
| `content-safety` (`nvidia/...:free`) | NVIDIA | **128K** (128.000) | **8K** (8.192) | ❌ *(non-thinking)* | ✅ |
|
|
227
228
|
| `ling-3.0-flash-fin` (`inclusionai/ling-3.0-flash-fin:free`) | Inclusion AI | **262K** (262.144) | **32K** (32.768) | `minimal…xhigh`\* | ❌ |
|
|
228
229
|
| `ling-3.0-flash-sante` (`inclusionai/ling-3.0-flash-sante:free`) | Inclusion AI | **262K** (262.144) | **32K** (32.768) | `minimal…xhigh`\* | ❌ |
|
|
229
|
-
| `
|
|
230
|
-
| `
|
|
230
|
+
| `step-3.7-flash` (`stepfun/...:free`) | StepFun | **262K** (262.144) | **262K** (262.144) | `minimal…xhigh`\* | ✅ |
|
|
231
|
+
| `space-bunny-alpha` (`stealth/...`) | Stealth preview (lab undisclosed) | **1M** (1.000.000) | **512K** (524.288) | `minimal…xhigh`\* | ✅ |
|
|
231
232
|
| `inkling-small` (`thinkingmachines/inkling-small:free`) | Thinking Machines | **1M** (1.048.576) | **262K** (262.144) | `minimal…xhigh`\* | ✅ |
|
|
232
233
|
| `qwen3.8-27b` (`qwen/...:free`) | Alibaba Qwen | **262K** (262.144) | **235K** (235.929) | `minimal…xhigh`\* | ✅ |
|
|
233
|
-
| `glm-5.2` (`z-ai/...:free`) | Zhipu AI | **32K** (32.768) | **29K** (29.491) | `minimal…xhigh`\* | ❌ |
|
|
234
234
|
|
|
235
235
|
\* Levels are forwarded as-is through the OpenRouter-style nested `reasoning` parameter; effort mapping is decided by each model. MiMo collapses `minimal→low` and `xhigh→high` upstream, so its selector shows 5 labels but only 3 distinct effort values.
|
|
236
236
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-freeflow",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.28.0",
|
|
5
5
|
"description": "Thin provider for OMP/Pi — model list + dumb relay proxy + log; host pi-ai owns thinking/normalization",
|
|
6
6
|
"main": "extensions/index.ts",
|
|
7
7
|
"types": "src/index.ts",
|
package/src/catalog.ts
CHANGED
|
@@ -30,9 +30,12 @@ import type {
|
|
|
30
30
|
|
|
31
31
|
/**
|
|
32
32
|
* Pruned model IDs that must never re-enter the catalog via disk cache or upstream merge.
|
|
33
|
-
* - jev-1.13-free: non-chat decision model, chat-incompatible — never registered.
|
|
34
|
-
* - deepseek-v4-flash-free: listed but
|
|
35
|
-
* -
|
|
33
|
+
* - jev-1.13-free: non-chat decision model, chat-incompatible (live chat 500) — never registered.
|
|
34
|
+
* - deepseek-v4-flash-free: listed but unserved upstream (live chat 400 "Model is unavailable").
|
|
35
|
+
* - nex-agi/nex-n2.5-pro:free + nex-agi/nex-n2.5-mini:free: gone 2026-09-28 — zero nex-agi
|
|
36
|
+
* IDs on the live Kilo list, keyless chat 404 "does not exist".
|
|
37
|
+
* - z-ai/glm-5.2:free: gone 2026-09-28 — :free ID absent (keyless 404); only the paid
|
|
38
|
+
* z-ai/glm-5.2 remains (isFree:false, keyless 401 PAID_MODEL_AUTH_REQUIRED).
|
|
36
39
|
* - inclusionai/ling-3.0-flash-vl:free: gone from the live Kilo free list — only the paid counterpart remains.
|
|
37
40
|
*/
|
|
38
41
|
export const DEAD_MODEL_IDS = new Set<string>([
|
|
@@ -47,7 +50,9 @@ export const DEAD_MODEL_IDS = new Set<string>([
|
|
|
47
50
|
"minimax/minimax-m3:free",
|
|
48
51
|
"thinkingmachines/inkling:free",
|
|
49
52
|
"union-alpha",
|
|
50
|
-
"
|
|
53
|
+
"nex-agi/nex-n2.5-pro:free",
|
|
54
|
+
"nex-agi/nex-n2.5-mini:free",
|
|
55
|
+
"z-ai/glm-5.2:free",
|
|
51
56
|
"inclusionai/ling-3.0-flash-vl:free",
|
|
52
57
|
]);
|
|
53
58
|
/**
|
|
@@ -55,7 +60,7 @@ export const DEAD_MODEL_IDS = new Set<string>([
|
|
|
55
60
|
* Upstream lists paid models alongside free ones (e.g. claude-fable-5-1,
|
|
56
61
|
* claude-opus-4-*, gemini-3-*) so a bare upstream merge leaks paid entries that
|
|
57
62
|
* fail with 401 Missing API key. Known static IDs without a free suffix
|
|
58
|
-
* (e.g. big-pickle) stay allowed via MODEL_MAP.
|
|
63
|
+
* (e.g. big-pickle, stealth/space-bunny-alpha) stay allowed via MODEL_MAP.
|
|
59
64
|
*/
|
|
60
65
|
export function isFreeCatalogId(id: string): boolean {
|
|
61
66
|
if (typeof id !== "string" || id.length === 0) return false;
|