free-coding-models 0.5.45 → 0.5.47

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
@@ -468,7 +468,7 @@ When a tool mode is active (via `Z`), models incompatible with that tool are hig
468
468
 
469
469
  ## π Pi Extension — FCM-Pi ⚠️ BETA
470
470
 
471
- **FCM-Pi** is a native [Pi coding agent](https://pi.dev) extension that integrates `free-coding-models` directly into your Pi session. It auto-selects the best free model on startup, shows a live animated scan in the Pi status bar, and lets you hot-swap models mid-session.
471
+ **FCM-Pi** is a native [Pi coding agent](https://pi.dev) extension that integrates `free-coding-models` directly into your Pi session. It stays silent by default, scans only when you run `/fcm`, and lets you explicitly hot-swap models mid-session.
472
472
 
473
473
  > **BETA** — The extension is under active development and not yet published to npm. Install via local path only.
474
474
  >
@@ -492,16 +492,16 @@ Then restart Pi. The extension loads automatically.
492
492
 
493
493
  | Feature | Description |
494
494
  |---------|-------------|
495
- | **Auto-scan on startup** | On every Pi session start, FCM pings ~30 candidate models in parallel and selects the best one automatically |
496
- | **Animated progress scan** | While scanning, the Pi status bar shows a live magenta spinner with the model + provider being probed and a real-time % progress |
497
- | **Provider in status bar** | The active model is displayed as `GLM 4.7 (Cerebras) [FCM S+]` so you always know exactly what's running |
498
- | **10-minute disk cache** | Results are cached to `~/.pi/agent/fcm-cache.json` subsequent session starts are instant |
499
- | **Auto-failover** | If a request fails (HTTP 4xx/5xx), FCM auto-triggers a fresh scan and switches to the next best model |
495
+ | **Silent startup** | No scan, no footer noise, and no automatic model switch on Pi boot or `/resume` |
496
+ | **Manual scan** | `/fcm` pings ~30 candidate models in parallel and waits for your explicit selection |
497
+ | **Temporary progress scan** | The Pi status bar shows live scan progress only while probing/benchmarking, then hides again |
498
+ | **10-minute disk cache** | Results are cached to `~/.pi/agent/fcm-cache.json` for faster diagnostics and lists |
499
+ | **Error-triggered picker** | If a request fails (HTTP 4xx/5xx), FCM reopens the picker and marks the failed model `🔴 BUGGED` |
500
500
  | **Daemon integration** | If the FCM router daemon is running (`free-coding-models --daemon-bg`), scan results are fetched instantly from its cache |
501
501
 
502
502
  ### Scan progress display
503
503
 
504
- During `/fcm` or on session start, the Pi footer status shows:
504
+ During `/fcm`, the Pi footer status shows:
505
505
 
506
506
  ```
507
507
  ⠸ Probing: Kimi K2.6 [Nvidia], Step 3.5 Flash [Stepfun] — 47% (14/30)
@@ -519,7 +519,7 @@ During `/fcm` or on session start, the Pi footer status shows:
519
519
  |---------|-------------|
520
520
  | `/fcm` | Re-scan and pick a model interactively from the top 10 ranked |
521
521
  | `/fcm-list` | Display a ranked table of top 20 available models (SWE / Latency / TPS / Provider) |
522
- | `/fcm-router` | Connect Pi to the local FCM Smart Router daemon (auto-failover across providers) |
522
+ | `/fcm-router` | Explicitly connect Pi to the local FCM Smart Router daemon |
523
523
  | `/fcm-status` | Show diagnostics: active model, last scan source, daemon state |
524
524
 
525
525
  ### Composite ranking
@@ -535,7 +535,7 @@ Models are ranked using a composite score:
535
535
 
536
536
  ### Context window limits
537
537
 
538
- Cerebras free-tier API has a strict **8192 total token limit** (prompt + tools + completion). The FCM catalog reflects this accurately so Pi allocates the right budget and doesn't overflow the context silently.
538
+ Cerebras free-tier API has a strict **~8k total token limit** (prompt + tools + completion). Tiny-context models can pass a `hi` probe but fail real agent prompts, so FCM hides 8k Cerebras models from Pi/OpenCode pickers.
539
539
 
540
540
  ### Full documentation
541
541
 
@@ -543,6 +543,35 @@ See [`pi-extension/README.md`](./pi-extension/README.md) for the complete archit
543
543
 
544
544
  ---
545
545
 
546
+ ## OpenCode Plugin — fcm-opencode ⚠️ BETA
547
+
548
+ `fcm-opencode` is the OpenCode adapter for the same FCM scanner/ranker used by FCM-Pi.
549
+
550
+ ### Local install
551
+
552
+ ```bash
553
+ mkdir -p ~/.config/opencode/plugins
554
+ ln -sf /Users/vava/Documents/GitHub/free-coding-models/opencode-plugin/index.js \
555
+ ~/.config/opencode/plugins/fcm-opencode.js
556
+ ```
557
+
558
+ ### Commands
559
+
560
+ | Command | Description |
561
+ |---------|-------------|
562
+ | `/fcm` | Run an explicit scan and list ranked choices without switching |
563
+ | `/fcm 1` | Switch OpenCode config to ranked model #1 |
564
+ | `/fcm best` | Switch OpenCode config to the best ranked model |
565
+ | `/fcm rescan` | Force a fresh scan |
566
+ | `/fcm status` or `/fcm-status` | Show plugin diagnostics |
567
+ | `/fcm router` or `/fcm-router` | Switch OpenCode config to the local FCM Smart Router daemon |
568
+
569
+ Startup is intentionally light: fresh cache first, daemon second, **no direct scan** unless you run `/fcm`.
570
+
571
+ See [`opencode-plugin/README.md`](./opencode-plugin/README.md) for details and limitations.
572
+
573
+ ---
574
+
546
575
  ## ⌨️ TUI Keys
547
576
 
548
577
  ### Keyboard
@@ -0,0 +1,9 @@
1
+ # Changelog v0.5.46 - 2026-07-08
2
+
3
+ ### Fixed
4
+ - **LLM7 catalog corrected against live `/v1/models` API.** The previous audit had added several models that are NOT free on LLM7. The live API shows that of LLM7's 12 models, only 2 are on the `turbo` (free, `noKeyNeeded`) tier; everything else — including the `claude-*` (Fable 5, Opus 4.8, Sonnet 5), `gpt-5.4` / `gpt-5.4-mini` / `gpt-5.5`, `glm-5.2`, `kimi-k2.6`, `deepseek-v4-flash`, and `minimax-m2.7` entries — are `pro` (usage-based paid) and were incorrectly listed as free.
5
+ - **Removed 10 non-free (pro) models from LLM7**, keeping only the two genuinely-free `turbo` models: `devstral-small-2:24b` (S / 68.0%) and `codestral-latest` (A / 40.0%). Total catalog: 257 → 247 models.
6
+ - Removed the `1.05M` context-window entries (gpt-5.5 / gpt-5.4) that were causing alignment drift; no `1.05M` remains in the catalog.
7
+
8
+ ### Notes
9
+ - LLM7's free (`turbo`) tier now has only 2 coding models. The `llm7` provider remains `noKeyNeeded: true` and should only surface free models per the source-header rule ("Pro-tagged models from /v1/models are intentionally excluded").
@@ -0,0 +1,23 @@
1
+ # Changelog v0.5.47 - 2026-07-08
2
+
3
+ ### Added
4
+ - **New BETA `fcm-opencode` plugin** — an OpenCode adapter that brings `free-coding-models` scans, routing, and provider injection into OpenCode. It reuses the exact same scan / ranking / API-key / daemon / model-safety code as `fcm-pi`, so provider fixes and safety filters stay in one place. Install via a local symlink (see `opencode-plugin/README.md`). Commands:
5
+ - `/fcm` — scan and list ranked choices **without switching**
6
+ - `/fcm 1` / `/fcm 2` / … — explicitly switch OpenCode config to ranked model #N
7
+ - `/fcm best` — explicitly switch to the best ranked model
8
+ - `/fcm rescan` — force a fresh scan
9
+ - `/fcm status` (or `/fcm-status`) — plugin diagnostics (cache age, daemon, active model)
10
+ - `/fcm router` (or `/fcm-router`) — explicitly switch OpenCode to the local FCM Smart Router daemon
11
+ - **New shared `pi-extension/lib/pi-model-config.js` module** — centralizes the Pi model safety policy so both adapters apply identical rules: `parseContextWindow` (`8k` / `128k` / `1M` → number), `getPiMaxTokens` (caps completions to leave prompt room), `isPiContextUsable` (hides tiny-context models that pass a probe but fail real agent prompts, e.g. 8k Cerebras), and `getPiReasoningFlag` (keeps OpenAI-compatible FCM models in non-thinking mode).
12
+ - **`runFcmScan({ mode })` now supports `auto`, `daemon`, and `direct` scan strategies.** OpenCode uses `daemon` at startup so direct probes never block boot.
13
+
14
+ ### Changed
15
+ - **FCM-Pi is now silent by default.** No startup scan, no footer noise, and no automatic model switch on Pi boot or `/resume`. Run `/fcm` to scan and pick a model explicitly.
16
+ - **Error-triggered picker replaces silent auto-failover.** When the active model returns HTTP 4xx/5xx, FCM reopens the picker and marks the failing model `🔴 BUGGED` instead of switching automatically — you stay in control of which model runs.
17
+ - **Pi scan-progress footer now shows the branded `> free-coding-models` badge** in the exact same green/white-on-black colours as the main TUI header logo, instead of scrolling live model names. The live `%` progress and `(completed/total)` counter stay beside it.
18
+ - **OpenCode startup is light by default:** fresh cache first, daemon second, no direct scan unless the user explicitly runs `/fcm`. Long probes never freeze OpenCode boot.
19
+ - **README updated** with a new `fcm-opencode` section and a refreshed FCM-Pi section reflecting the silent-by-default behaviour.
20
+
21
+ ### Notes
22
+ - `fcm-pi` and `fcm-opencode` remain **BETA** and are installed via local path / symlink, not via the npm `free-coding-models` package.
23
+ - The full shared-core extraction into `packages/fcm-agent-core` / `packages/fcm-opencode` is still in progress (tracked in `.kandown/tasks/t2.md`). This release ships the working adapters and the extracted model-safety module ahead of that restructure.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "free-coding-models",
3
- "version": "0.5.45",
3
+ "version": "0.5.47",
4
4
  "description": "Find the fastest coding LLM models in seconds — ping free models from multiple providers, pick the best one for OpenCode, Cursor, or any AI coding assistant.",
5
5
  "keywords": [
6
6
  "nvidia",
package/sources.js CHANGED
@@ -404,20 +404,10 @@ export const kilo = [
404
404
  // 📖 Free unauthenticated tier works with tight shared limits; optional free token at https://token.llm7.io
405
405
  // 📖 Pro-tagged models from /v1/models are intentionally excluded.
406
406
  export const llm7 = [
407
- // ── S+ tier SWE-bench Verified ≥70% ──
408
- ['deepseek-v4-flash', 'DeepSeek V4 Flash', 'S+', '79.0%', '1M'],
409
- ['kimi-k2.6', 'Kimi K2.6', 'S+', '80.2%', '240k'],
410
- ['claude-opus-4-8', 'Claude Opus 4.8', 'S+', '88.6%', '1M'],
411
- ['claude-sonnet-5', 'Claude Sonnet 5', 'S+', '-', '1M'],
412
- ['claude-fable-5', 'Claude Fable 5', 'S+', '95.0%', '1M'],
413
- ['gpt-5.5', 'GPT-5.5', 'S+', '88.7%', '1.05M'],
414
- ['gpt-5.4', 'GPT-5.4', 'S+', '80.0%', '1.05M'],
415
- ['glm-5.2', 'GLM 5.2', 'S+', '82.8%', '1M'],
416
- // ── A tier — SWE-bench Verified 40–50% ──
407
+ // 📖 LLM7 live /v1/models: only `turbo` tier is free (noKeyNeeded). All `pro` models are usage-based paid.
408
+ // ── S tier SWE-bench Verified 60–70% ──
417
409
  ['devstral-small-2:24b', 'Devstral Small 2', 'S', '68.0%', '255k'],
418
- ['gpt-5.4-mini', 'GPT-5.4 mini', 'A', '-', '400k'],
419
- ['minimax-m2.7', 'MiniMax M2.7', 'S+', '78.0%', '180k'],
420
- // ── B+ tier — SWE-bench Verified 30–35% ──
410
+ // ── A tier — SWE-bench Verified 40–50% ──
421
411
  ['codestral-latest', 'Codestral Latest', 'A', '40.0%', '32k'],
422
412
  ]
423
413