pi-freeflow 1.28.1 → 1.30.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 CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.30.0
4
+
5
+ ### Minor Changes
6
+
7
+ - **Spread relay mode.** `/freeflow spread` sends each request to a rotating healthy relay instead of always starting at one sticky relay, so parallel sessions and subagents land on different egress IPs rather than crowding a single one. A conversation's reasoning issuer still outranks the rotation, so in-progress chats are never rerouted, and a relay that is cooling down is never preferred. The interactive relay menu and `/freeflow status` show the new mode.
8
+
9
+ **Helper tools the proxy injects for API compatibility can no longer reach your host.** On the messages API path those injected tool calls were passed straight through; they are now stripped on every path, and a host that declares no tools never receives tool calls at all.
10
+
11
+ **Injected file-search helper now matches the shape your host expects**, so a call to it executes instead of being rejected.
12
+
13
+ ## 1.29.0
14
+
15
+ ### Minor Changes
16
+
17
+ - e119a71: Sync upstream tracking to v1.18.34 and land compatibility improvements: Vercel relays are now treated as a last resort behind Cloudflare with clear quota guidance, new relays show when a deployment is disabled by quota, and streamed responses plus tool-using callers stay compatible through the local proxy.
18
+
3
19
  ## 1.28.1
4
20
 
5
21
  ### Patch Changes
package/README.md CHANGED
@@ -16,8 +16,8 @@ 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** | 10 from OpenCode Zen, 18 from KiloCode Gateway, 5 from Cline, context windows up to 1M. Full list below. | **$0** |
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 |
19
+ | **33 free models** | 11 from OpenCode Zen, 17 from KiloCode Gateway, 5 from Cline, context windows up to 1M. Full list below. | **$0** |
20
+ | **Relay pool** | Route requests through your own Cloudflare Workers and Vercel Edge relays. Traffic spreads across the pool, or stays on one sticky relay. 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** |
23
23
  | **Shared local proxy** | One daemon on `127.0.0.1:28180` serves every session on the machine, so parallel subagents reuse it instead of opening their own connections. | **$0** |
@@ -82,17 +82,24 @@ stays in memory and is never written to disk.
82
82
 
83
83
  Manual fallback per platform:
84
84
 
85
- **Option A: Cloudflare Workers, auto deploy**
85
+ **Option A: Cloudflare Workers, auto deploy (recommended)**
86
86
  ```bash
87
87
  /freeflow deploy cloudflare # prompts token in-memory, auto-adds to pool
88
+ # or shorthand: /freeflow deploy (defaults to Cloudflare)
88
89
  ```
89
90
  Manual fallback: `dash.cloudflare.com` → Workers → Create → Deploy → Edit code → paste the canonical worker source (see below) → Deploy → `/freeflow add https://your.workers.dev cf-worker-1`
90
91
 
91
- **Option B: Vercel Edge Relay, auto deploy**
92
+ **Option B: Deno Deploy, auto deploy**
93
+ ```bash
94
+ /freeflow deploy deno # prompts token in-memory, auto-adds to pool
95
+ ```
96
+ Manual fallback: `dash.deno.com` → New Project → Playground → paste the canonical worker source (see below) → Deploy → `/freeflow add https://your-project.deno.dev deno-relay-1`
97
+
98
+ **Option C: Vercel Edge Relay (last resort, paid plan only)**
92
99
  ```bash
93
100
  /freeflow deploy vercel # prompts token in-memory, auto-adds to pool
94
- # or shorthand: /freeflow deploy
95
101
  ```
102
+ Only use with a paid plan: the Hobby plan caps Fast Origin Transfer at 10 GB (~1.2 MB per streaming turn, about 8,000 turns), then every deployment in the project returns HTTP 402 until the quota resets.
96
103
  Manual fallback: push 2 files (`api/relay.js` + `vercel.json`) to GitHub, then Import on `vercel.com`, then `/freeflow add https://your.vercel.app vercel-relay-1`
97
104
 
98
105
  For `api/relay.js`, use the canonical worker source (see below); `vercel.json` stays:
@@ -101,12 +108,6 @@ For `api/relay.js`, use the canonical worker source (see below); `vercel.json` s
101
108
  { "rewrites": [{ "source": "/(.*)", "destination": "/api/relay" }] }
102
109
  ```
103
110
 
104
- **Option C: Deno Deploy, auto deploy**
105
- ```bash
106
- /freeflow deploy deno # prompts token in-memory, auto-adds to pool
107
- ```
108
- Manual fallback: `dash.deno.com` → New Project → Playground → paste the canonical worker source (see below) → Deploy → `/freeflow add https://your-project.deno.dev deno-relay-1`
109
-
110
111
  **Canonical worker source (all platforms)**
111
112
 
112
113
  The relay worker template is generated per deployment by `/freeflow deploy`, with one shared core adapted for Vercel, Cloudflare, and Deno. Deployed relays accept requests from any pi-freeflow user by default, while only forwarding to an allowlist (`https://opencode.ai`, `https://api.kilo.ai`) with private-host and path checks.
@@ -166,7 +167,7 @@ The same command set works identically in OMP and Pi:
166
167
  /freeflow label <index|url> <name># Assign a friendly label to a relay
167
168
  /freeflow remove <index|url|label># Remove a relay from the pool
168
169
  /freeflow test <index|url|label> # Probe a relay for reachability and latency
169
- /freeflow on | off | auto # Toggle relay mode (auto = enabled for freeflow)
170
+ /freeflow on|off|auto|spread # Relay mode (auto = enabled for freeflow, spread = rotate pool)
170
171
  /freeflow deploy <platform> # Guided relay deploy: vercel|cloudflare|deno, token in-memory, auto-adds
171
172
  /freeflow logs [lines] # Inspect recent proxy logs
172
173
  /freeflow trace [req-id] # Tail logs filtered by request correlation ID
@@ -190,7 +191,7 @@ The same command set works identically in OMP and Pi:
190
191
  /model → freeflow → pick
191
192
  ```
192
193
 
193
- #### OpenCode Zen (10 models), Responses and Chat API
194
+ #### OpenCode Zen (11 models), Responses and Chat API
194
195
 
195
196
  Good defaults for long coding sessions and agentic work.
196
197
 
@@ -203,11 +204,12 @@ Good defaults for long coding sessions and agentic work.
203
204
  | `nemotron-3.5-lightning-free` | NVIDIA | **1M** (1.000.000) | **262K** (262.144) | `minimal … xhigh` | ❌ |
204
205
  | `nemotron-3-ultra-free` | NVIDIA | **1M** (1.000.000) | **128K** (128.000) | `minimal … xhigh` | ❌ |
205
206
  | `big-pickle` | Big Pickle | **200K** (200.000) | **32K** (32.000) | `high / max` | ❌ |
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
208
  | `longcat-2.5-preview-free` | Meituan LongCat | **1M** (1.000.000) | **131K** (131.072) | `minimal … max` | ✅ |
209
+ | `fledge-alpha-free` | Stealth preview (lab undisclosed) | **1M** (1.048.576) | **131K** (131.072) | `low / high / max` | ✅ |
210
+ | `ling-3.1-flash-free` | Inclusion AI | **262K** (262.144) | **32K** (32.768) | `minimal … max` | ❌ |
209
211
 
210
- #### KiloCode Gateway (18 models), OpenRouter compatible
212
+ #### KiloCode Gateway (17 models), OpenRouter compatible
211
213
 
212
214
  Keyless access. Short aliases work for every row (the full ID is in parentheses).
213
215
 
@@ -225,7 +227,6 @@ Keyless access. Short aliases work for every row (the full ID is in parentheses)
225
227
  | `kilo-auto` (`kilo-auto/free`) | Kilo Gateway Auto | **256K** (256.000) | **10K** (10.000) | `minimal…xhigh`\* | ❌ |
226
228
  | `openrouter` (`openrouter/free`) | OpenRouter Free | **200K** (200.000) | **65K** (65.536) | `minimal…xhigh`\* | ✅ |
227
229
  | `content-safety` (`nvidia/...:free`) | NVIDIA | **128K** (128.000) | **8K** (8.192) | ❌ *(non-thinking)* | ✅ |
228
- | `ling-3.0-flash-fin` (`inclusionai/ling-3.0-flash-fin:free`) | Inclusion AI | **262K** (262.144) | **32K** (32.768) | `minimal…xhigh`\* | ❌ |
229
230
  | `ling-3.0-flash-sante` (`inclusionai/ling-3.0-flash-sante:free`) | Inclusion AI | **262K** (262.144) | **32K** (32.768) | `minimal…xhigh`\* | ❌ |
230
231
  | `step-3.7-flash` (`stepfun/...:free`) | StepFun | **262K** (262.144) | **262K** (262.144) | `minimal…xhigh`\* | ✅ |
231
232
  | `space-bunny-alpha` (`stealth/...`) | Stealth preview (lab undisclosed) | **1M** (1.000.000) | **512K** (524.288) | `minimal…xhigh`\* | ✅ |
@@ -346,7 +347,7 @@ src/
346
347
  ├── models.ts # 33-model catalog definitions
347
348
  ├── catalog.ts # model catalog cache (24h disk)
348
349
  ├── proxy.ts # local proxy server (127.0.0.1:28180)
349
- ├── relay.ts # relay selection and round-robin
350
+ ├── relay.ts # relay fetch, rolling on retryable failures
350
351
  ├── relay-state.ts # relay pool state, health tracking
351
352
  ├── stream-pipe.ts # SSE stream piping and truncation resilience
352
353
  ├── commands.ts # /freeflow CLI subcommands
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-freeflow",
3
3
  "type": "module",
4
- "version": "1.28.1",
4
+ "version": "1.30.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
@@ -37,6 +37,11 @@ import type {
37
37
  * - z-ai/glm-5.2:free: gone 2026-09-28 — :free ID absent (keyless 404); only the paid
38
38
  * z-ai/glm-5.2 remains (isFree:false, keyless 401 PAID_MODEL_AUTH_REQUIRED).
39
39
  * - inclusionai/ling-3.0-flash-vl:free: gone from the live Kilo free list — only the paid counterpart remains.
40
+ * - ling-3.0-flash-fin-free: unserved upstream (2026-10-01) — persistent keyless 400
41
+ * "Error from provider (Console): Upstream request failed: Endpoint is unavailable.",
42
+ * reproduced across separate runs on different days while every other Zen model answers.
43
+ * - inclusionai/ling-3.0-flash-fin:free: gone from Kilo (2026-10-01) — keyless chat 404
44
+ * "The requested model ... does not exist".
40
45
  */
41
46
  export const DEAD_MODEL_IDS = new Set<string>([
42
47
  "jev-1.13-free",
@@ -54,6 +59,8 @@ export const DEAD_MODEL_IDS = new Set<string>([
54
59
  "nex-agi/nex-n2.5-mini:free",
55
60
  "z-ai/glm-5.2:free",
56
61
  "inclusionai/ling-3.0-flash-vl:free",
62
+ "ling-3.0-flash-fin-free",
63
+ "inclusionai/ling-3.0-flash-fin:free",
57
64
  ]);
58
65
  /**
59
66
  * Free-tier allowlist for anything entering the picker via network or stale disk.