pi-freeflow 1.0.0 → 1.0.2

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
@@ -64,33 +64,33 @@ omp plugin link /path/to/pi-freeflow
64
64
 
65
65
  | Model ID | Name | Context Window | Max Output | Reasoning / Thinking | Vision (Images) |
66
66
  | :--- | :--- | :---: | :---: | :---: | :---: |
67
- | `x-preview-f-free` | Ox Alpha Free | **1M** (1,048,576) | 131K | `low, high, max` | ✅ Yes |
68
- | `muse-spark-1.2-contributor-free` | Muse Spark 1.2 Free | **1M** (1,048,576) | 131K | `minimal..max` | ✅ Yes |
69
- | `mimo-v2.5-free` | Xiaomi MiMo-V2.5 Free | **1M** (1,048,576) | 131K | `low, medium, high` | ✅ Yes |
70
- | `laguna-s-2.1-free` | Poolside Laguna S 2.1 Free | **1M** (1,048,576) | 131K | `minimal..max` | ❌ No |
71
- | `nemotron-3.5-lightning-free` | Nemotron 3.5 Lightning Free | **1M** (1,000,000) | 262K | `minimal..max` | ❌ No |
72
- | `nemotron-3-ultra-free` | Nemotron 3 Ultra Free | **1M** (1,000,000) | 128K | `minimal..max` | ❌ No |
73
- | `hy3-free` | Tencent Hunyuan 3 Free | **262K** (262,144) | 128K | `minimal..max` | ❌ No |
67
+ | `x-preview-f-free` | Ox Alpha (1M) | **1M** (1,048,576) | 131K | `low, high, max` | ✅ Yes |
68
+ | `muse-spark-1.2-contributor-free` | Muse Spark 1.2 (1M) | **1M** (1,048,576) | 131K | `minimal..max` | ✅ Yes |
69
+ | `mimo-v2.5-free` | MiMo V2.5 (1M) | **1M** (1,048,576) | 131K | `low, medium, high` | ✅ Yes |
70
+ | `laguna-s-2.1-free` | Laguna S 2.1 (1M) | **1M** (1,048,576) | 131K | `minimal..max` | ❌ No |
71
+ | `nemotron-3.5-lightning-free` | Nemotron 3.5 Lightning (1M) | **1M** (1,000,000) | 262K | `minimal..max` | ❌ No |
72
+ | `nemotron-3-ultra-free` | Nemotron 3 Ultra (1M) | **1M** (1,000,000) | 128K | `minimal..max` | ❌ No |
73
+ | `hy3-free` | Hy3 (262K) | **262K** (262,144) | 128K | `minimal..max` | ❌ No |
74
74
  | `big-pickle` | Big Pickle | **200K** (200,000) | 32K | `high, max` | ❌ No |
75
75
 
76
76
  ### KiloCode Gateway Models (14 Models)
77
77
 
78
78
  | Model ID | Name | Context Window | Max Output | Reasoning / Thinking | Vision (Images) |
79
79
  | :--- | :--- | :---: | :---: | :---: | :---: |
80
- | `dots-studio/dots-3-note-preview:free` | Dots3-Note Preview Free | **512K** (512,000) | 512K | OpenRouter format | ✅ Yes |
81
- | `stepfun/step-3.7-flash:free` | Step 3.7 Flash Free | **262K** (262,144) | 262K | OpenRouter format | ✅ Yes |
82
- | `nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free` | Nemotron 3 Nano Omni Free | **256K** (256,000) | 65K | OpenRouter format | ✅ Yes |
83
- | `nvidia/nemotron-3-ultra-550b-a55b:free` | Nemotron 3 Ultra Free | **1M** (1,000,000) | 65K | OpenRouter format | ❌ No |
84
- | `nvidia/nemotron-3.5-lightning:free` | Nemotron 3.5 Lightning Free | **1M** (1,000,000) | 65K | OpenRouter format | ❌ No |
85
- | `nvidia/nemotron-3-super-120b-a12b:free` | Nemotron 3 Super Free | **262K** (262,144) | 262K | OpenRouter format | ❌ No |
86
- | `tencent/hy3:free` | Tencent Hy3 Free | **262K** (262,144) | 128K | OpenRouter format | ❌ No |
87
- | `cohere/north-mini-code:free` | North Mini Code Free | **256K** (256,000) | 64K | OpenRouter format | ❌ No |
88
- | `poolside/laguna-s-2.1:free` | Laguna S 2.1 Free | **262K** (262,144) | 33K | OpenRouter format | ❌ No |
89
- | `poolside/laguna-xs-2.1:free` | Laguna XS 2.1 Free | **262K** (262,144) | 33K | OpenRouter format | ❌ No |
90
- | `liquid/lfm-2.5-2.6b:free` | Liquid LFM 2.5 2.6B Free | **66K** (65,536) | 8K | OpenRouter format | ❌ No |
91
- | `kilo-auto/free` | Kilo Auto Free | **256K** (256,000) | 10K | Standard | ❌ No |
92
- | `openrouter/free` | OpenRouter Free (auto) | **200K** (200,000) | 65K | Standard | ❌ No |
93
- | `nvidia/nemotron-3.5-content-safety:free` | Nemotron 3.5 Content Safety | **128K** (128,000) | 8K | Standard | ❌ No |
80
+ | `dots-studio/dots-3-note-preview:free` | Dots3-Note Preview (512K) | **512K** (512,000) | 512K | OpenRouter format | ✅ Yes |
81
+ | `stepfun/step-3.7-flash:free` | Step 3.7 Flash | **262K** (262,144) | 262K | OpenRouter format | ✅ Yes |
82
+ | `nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free` | Nemotron 3 Nano Omni | **256K** (256,000) | 65K | OpenRouter format | ✅ Yes |
83
+ | `nvidia/nemotron-3-ultra-550b-a55b:free` | Nemotron 3 Ultra 550B (1M) | **1M** (1,000,000) | 65K | OpenRouter format | ❌ No |
84
+ | `nvidia/nemotron-3.5-lightning:free` | Nemotron 3.5 Lightning (Kilo) | **1M** (1,000,000) | 65K | OpenRouter format | ❌ No |
85
+ | `nvidia/nemotron-3-super-120b-a12b:free` | Nemotron 3 Super 120B | **262K** (262,144) | 262K | OpenRouter format | ❌ No |
86
+ | `tencent/hy3:free` | Tencent Hy3 (Kilo) | **262K** (262,144) | 128K | OpenRouter format | ❌ No |
87
+ | `cohere/north-mini-code:free` | North Mini Code | **256K** (256,000) | 64K | OpenRouter format | ❌ No |
88
+ | `poolside/laguna-s-2.1:free` | Laguna S 2.1 (Kilo) | **262K** (262,144) | 33K | OpenRouter format | ❌ No |
89
+ | `poolside/laguna-xs-2.1:free` | Laguna XS 2.1 | **262K** (262,144) | 33K | OpenRouter format | ❌ No |
90
+ | `liquid/lfm-2.5-2.6b:free` | Liquid LFM 2.5 | **66K** (65,536) | 8K | OpenRouter format | ❌ No |
91
+ | `kilo-auto/free` | Kilo Auto | **256K** (256,000) | 10K | Standard | ❌ No |
92
+ | `openrouter/free` | OpenRouter Auto | **200K** (200,000) | 65K | Standard | ❌ No |
93
+ | `nvidia/nemotron-3.5-content-safety:free` | Nemotron Content Safety | **128K** (128,000) | 8K | Standard | ❌ No |
94
94
 
95
95
  ---
96
96
 
@@ -13,6 +13,14 @@ import { Readable } from "node:stream";
13
13
  import { fileURLToPath } from "node:url";
14
14
  import type { ExtensionAPI, ExtensionUIContext } from "@earendil-works/pi-coding-agent";
15
15
 
16
+
17
+ // Ensure subagents and OMP resolver recognize active credentials for freeflow
18
+ if (!process.env.FREEFLOW_API_KEY) {
19
+ process.env.FREEFLOW_API_KEY = "freeflow";
20
+ }
21
+ if (!process.env.BANSOS_API_KEY) {
22
+ process.env.BANSOS_API_KEY = "freeflow";
23
+ }
16
24
  // ── Configuration ──────────────────────────────────────────────────
17
25
  const UPSTREAM_OPENCODE = "https://opencode.ai/zen";
18
26
  // KiloCode gateway — OpenAI-compatible; free models are keyless (200 req/hr per IP)
@@ -388,7 +396,7 @@ interface ModelDef {
388
396
  const KNOWN_MODELS: ModelDef[] = [
389
397
  {
390
398
  id: "x-preview-f-free",
391
- name: "Ox Alpha Free",
399
+ name: "Ox Alpha (1M)",
392
400
  reasoning: true,
393
401
  contextWindow: 1_048_576,
394
402
  maxTokens: 131_072,
@@ -405,7 +413,7 @@ const KNOWN_MODELS: ModelDef[] = [
405
413
  },
406
414
  {
407
415
  id: "muse-spark-1.2-contributor-free",
408
- name: "Muse Spark 1.2 Free",
416
+ name: "Muse Spark 1.2 (1M)",
409
417
  reasoning: true,
410
418
  contextWindow: 1_048_576,
411
419
  maxTokens: 131_072,
@@ -423,7 +431,7 @@ const KNOWN_MODELS: ModelDef[] = [
423
431
  },
424
432
  {
425
433
  id: "mimo-v2.5-free",
426
- name: "MiMo V2.5 Free",
434
+ name: "MiMo V2.5 (1M)",
427
435
  reasoning: true,
428
436
  contextWindow: 1_048_576,
429
437
  maxTokens: 131_072,
@@ -440,7 +448,7 @@ const KNOWN_MODELS: ModelDef[] = [
440
448
  },
441
449
  {
442
450
  id: "hy3-free",
443
- name: "Hy3 Free",
451
+ name: "Hy3 (262K)",
444
452
  reasoning: true,
445
453
  contextWindow: 262_144,
446
454
  maxTokens: 128_000,
@@ -456,7 +464,7 @@ const KNOWN_MODELS: ModelDef[] = [
456
464
  },
457
465
  {
458
466
  id: "nemotron-3-ultra-free",
459
- name: "Nemotron 3 Ultra Free",
467
+ name: "Nemotron 3 Ultra (1M)",
460
468
  reasoning: true,
461
469
  contextWindow: 1_000_000,
462
470
  maxTokens: 128_000,
@@ -472,7 +480,7 @@ const KNOWN_MODELS: ModelDef[] = [
472
480
  },
473
481
  {
474
482
  id: "nemotron-3.5-lightning-free",
475
- name: "Nemotron 3.5 Lightning Free",
483
+ name: "Nemotron 3.5 Lightning (1M)",
476
484
  reasoning: true,
477
485
  contextWindow: 1_000_000,
478
486
  maxTokens: 262_144,
@@ -504,7 +512,7 @@ const KNOWN_MODELS: ModelDef[] = [
504
512
  },
505
513
  {
506
514
  id: "laguna-s-2.1-free",
507
- name: "Laguna S 2.1 Free",
515
+ name: "Laguna S 2.1 (1M)",
508
516
  reasoning: true,
509
517
  contextWindow: 1_048_576,
510
518
  maxTokens: 131_072,
@@ -524,7 +532,7 @@ const KNOWN_MODELS: ModelDef[] = [
524
532
  const KILO_MODELS: ModelDef[] = [
525
533
  {
526
534
  id: "kilo-auto/free",
527
- name: "Kilo Auto Free",
535
+ name: "Kilo Auto",
528
536
  reasoning: false,
529
537
  contextWindow: 256_000,
530
538
  maxTokens: 10_000,
@@ -532,7 +540,7 @@ const KILO_MODELS: ModelDef[] = [
532
540
  },
533
541
  {
534
542
  id: "stepfun/step-3.7-flash:free",
535
- name: "Step 3.7 Flash Free",
543
+ name: "Step 3.7 Flash",
536
544
  reasoning: true,
537
545
  contextWindow: 262_144,
538
546
  maxTokens: 262_144,
@@ -541,7 +549,7 @@ const KILO_MODELS: ModelDef[] = [
541
549
  },
542
550
  {
543
551
  id: "nvidia/nemotron-3-ultra-550b-a55b:free",
544
- name: "Nemotron 3 Ultra Free",
552
+ name: "Nemotron 3 Ultra 550B (1M)",
545
553
  reasoning: true,
546
554
  contextWindow: 1_000_000,
547
555
  maxTokens: 65_536,
@@ -550,7 +558,7 @@ const KILO_MODELS: ModelDef[] = [
550
558
  },
551
559
  {
552
560
  id: "nvidia/nemotron-3-super-120b-a12b:free",
553
- name: "Nemotron 3 Super Free",
561
+ name: "Nemotron 3 Super 120B",
554
562
  reasoning: true,
555
563
  contextWindow: 262_144,
556
564
  maxTokens: 262_144,
@@ -559,7 +567,7 @@ const KILO_MODELS: ModelDef[] = [
559
567
  },
560
568
  {
561
569
  id: "dots-studio/dots-3-note-preview:free",
562
- name: "Dots3-Note Preview Free",
570
+ name: "Dots3-Note Preview (512K)",
563
571
  reasoning: true,
564
572
  contextWindow: 512_000,
565
573
  maxTokens: 512_000,
@@ -568,7 +576,7 @@ const KILO_MODELS: ModelDef[] = [
568
576
  },
569
577
  {
570
578
  id: "cohere/north-mini-code:free",
571
- name: "North Mini Code Free",
579
+ name: "North Mini Code",
572
580
  reasoning: true,
573
581
  contextWindow: 256_000,
574
582
  maxTokens: 64_000,
@@ -577,7 +585,7 @@ const KILO_MODELS: ModelDef[] = [
577
585
  },
578
586
  {
579
587
  id: "poolside/laguna-xs-2.1:free",
580
- name: "Laguna XS 2.1 Free",
588
+ name: "Laguna XS 2.1",
581
589
  reasoning: true,
582
590
  contextWindow: 262_144,
583
591
  maxTokens: 32_768,
@@ -586,7 +594,7 @@ const KILO_MODELS: ModelDef[] = [
586
594
  },
587
595
  {
588
596
  id: "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free",
589
- name: "Nemotron 3 Nano Omni Free",
597
+ name: "Nemotron 3 Nano Omni",
590
598
  reasoning: true,
591
599
  contextWindow: 256_000,
592
600
  maxTokens: 65_536,
@@ -595,7 +603,7 @@ const KILO_MODELS: ModelDef[] = [
595
603
  },
596
604
  {
597
605
  id: "openrouter/free",
598
- name: "OpenRouter Free (auto)",
606
+ name: "OpenRouter Auto",
599
607
  reasoning: false,
600
608
  contextWindow: 200_000,
601
609
  maxTokens: 65_536,
@@ -603,7 +611,7 @@ const KILO_MODELS: ModelDef[] = [
603
611
  },
604
612
  {
605
613
  id: "nvidia/nemotron-3.5-lightning:free",
606
- name: "Nemotron 3.5 Lightning Free",
614
+ name: "Nemotron 3.5 Lightning (Kilo)",
607
615
  reasoning: true,
608
616
  contextWindow: 1_000_000,
609
617
  maxTokens: 65_536,
@@ -612,7 +620,7 @@ const KILO_MODELS: ModelDef[] = [
612
620
  },
613
621
  {
614
622
  id: "nvidia/nemotron-3.5-content-safety:free",
615
- name: "Nemotron 3.5 Content Safety Free",
623
+ name: "Nemotron Content Safety",
616
624
  reasoning: false,
617
625
  contextWindow: 128_000,
618
626
  maxTokens: 8_192,
@@ -620,7 +628,7 @@ const KILO_MODELS: ModelDef[] = [
620
628
  },
621
629
  {
622
630
  id: "tencent/hy3:free",
623
- name: "Tencent Hy3 Free",
631
+ name: "Tencent Hy3 (Kilo)",
624
632
  reasoning: true,
625
633
  contextWindow: 262_144,
626
634
  maxTokens: 128_000,
@@ -629,7 +637,7 @@ const KILO_MODELS: ModelDef[] = [
629
637
  },
630
638
  {
631
639
  id: "liquid/lfm-2.5-2.6b:free",
632
- name: "Liquid LFM 2.5 2.6B Free",
640
+ name: "Liquid LFM 2.5",
633
641
  reasoning: true,
634
642
  contextWindow: 65_536,
635
643
  maxTokens: 8_192,
@@ -638,7 +646,7 @@ const KILO_MODELS: ModelDef[] = [
638
646
  },
639
647
  {
640
648
  id: "poolside/laguna-s-2.1:free",
641
- name: "Laguna S 2.1 Free",
649
+ name: "Laguna S 2.1 (Kilo)",
642
650
  reasoning: true,
643
651
  contextWindow: 262_144,
644
652
  maxTokens: 32_768,
@@ -1233,7 +1241,7 @@ export default async function (pi: ExtensionAPI) {
1233
1241
  compat: { supportsDeveloperRole: false },
1234
1242
  models: aliveModels.map((m) => ({
1235
1243
  id: m.id,
1236
- name: `${m.source === "kilo" ? "KiloCode" : "OpenCode"} · ${m.name}`,
1244
+ name: m.name,
1237
1245
  api: m.api,
1238
1246
  reasoning: m.reasoning,
1239
1247
  thinkingLevelMap: m.thinkingLevelMap,
@@ -1252,7 +1260,6 @@ export default async function (pi: ExtensionAPI) {
1252
1260
  };
1253
1261
 
1254
1262
  pi.registerProvider("freeflow", providerConfig);
1255
- pi.registerProvider("bansos", providerConfig);
1256
1263
  }
1257
1264
  // ── /bansos command: toggle relay egress live (on|off|status|url [URL]) ───
1258
1265
  const commandSpec = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-freeflow",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Personal multi-cloud rolling fallback relay for OpenCode Zen and KiloCode models in OMP/Pi",
5
5
  "keywords": [
6
6
  "pi-package",