pi-free 2.0.15 → 2.1.1

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.
Files changed (46) hide show
  1. package/CHANGELOG.md +100 -3
  2. package/README.md +64 -79
  3. package/banner.svg +21 -36
  4. package/config.ts +123 -9
  5. package/constants.ts +3 -9
  6. package/index.ts +14 -15
  7. package/lib/built-in-toggle.ts +29 -56
  8. package/lib/json-persistence.ts +90 -22
  9. package/lib/logger.ts +21 -12
  10. package/lib/model-detection.ts +2 -12
  11. package/lib/model-enhancer.ts +11 -2
  12. package/lib/model-metadata.ts +387 -0
  13. package/lib/open-browser.ts +74 -24
  14. package/lib/paths.ts +90 -0
  15. package/lib/probe-cache.ts +19 -19
  16. package/lib/provider-cache.ts +74 -28
  17. package/lib/provider-compat.ts +53 -37
  18. package/lib/provider-probe.ts +188 -0
  19. package/lib/registry.ts +1 -5
  20. package/lib/session-start-metrics.ts +46 -0
  21. package/lib/telemetry.ts +115 -86
  22. package/lib/types.ts +22 -2
  23. package/lib/util.ts +80 -21
  24. package/package.json +7 -2
  25. package/provider-failover/benchmark-lookup.ts +17 -5
  26. package/provider-helper.ts +12 -27
  27. package/providers/cline/cline-models.ts +7 -1
  28. package/providers/cline/cline-xml-bridge.ts +1471 -0
  29. package/providers/cline/cline.ts +67 -199
  30. package/providers/codestral/codestral.ts +0 -11
  31. package/providers/crofai/crofai.ts +6 -1
  32. package/providers/deepinfra/deepinfra.ts +69 -2
  33. package/providers/dynamic-built-in/index.ts +237 -22
  34. package/providers/kilo/kilo-models.ts +3 -1
  35. package/providers/kilo/kilo.ts +270 -60
  36. package/providers/model-fetcher.ts +18 -55
  37. package/providers/novita/novita.ts +69 -2
  38. package/providers/ollama/ollama.ts +47 -36
  39. package/providers/opencode-session.ts +67 -2
  40. package/providers/routeway/routeway.ts +25 -17
  41. package/providers/sambanova/sambanova.ts +67 -1
  42. package/providers/together/together.ts +69 -2
  43. package/providers/tokenrouter/tokenrouter.ts +634 -0
  44. package/providers/zenmux/zenmux.ts +6 -1
  45. package/scripts/check-extensions.mjs +32 -16
  46. package/providers/nvidia/nvidia.ts +0 -510
@@ -17,6 +17,10 @@ import { enhanceModelNameWithCodingIndex } from "./provider-failover/benchmark-l
17
17
 
18
18
  const _logger = createLogger("provider-helper");
19
19
 
20
+ type ModelsDevEnrichedMetadata = {
21
+ modelsDev?: Parameters<typeof enhanceModelNameWithCodingIndex>[3];
22
+ };
23
+
20
24
  // =============================================================================
21
25
  // Types
22
26
  // =============================================================================
@@ -78,12 +82,17 @@ export interface OpenAICompatibleConfig {
78
82
  * Use this for direct provider registration (not through setupProvider)
79
83
  */
80
84
  export function enhanceWithCI(
81
- models: ProviderModelConfig[],
85
+ models: Array<ProviderModelConfig & ModelsDevEnrichedMetadata>,
82
86
  providerId?: string,
83
87
  ): ProviderModelConfig[] {
84
88
  return models.map((m) => ({
85
89
  ...m,
86
- name: enhanceModelNameWithCodingIndex(m.name, m.id, providerId),
90
+ name: enhanceModelNameWithCodingIndex(
91
+ m.name,
92
+ m.id,
93
+ providerId,
94
+ m.modelsDev,
95
+ ),
87
96
  }));
88
97
  }
89
98
 
@@ -213,31 +222,7 @@ export function setupProvider(
213
222
  });
214
223
  }
215
224
 
216
- // ── Status bar for selected provider ───────────────────────────
217
-
218
- pi.on("model_select", (_event, ctx) => {
219
- if (_event.model?.provider !== providerId) {
220
- ctx.ui.setStatus(`${providerId}-status`, undefined);
221
- return;
222
- }
223
-
224
- // Build status line for this provider
225
- const free = stored.free.length;
226
- const total = stored.all.length || free;
227
- const paid = total - free;
228
- let status: string;
229
-
230
- if (paid === 0) {
231
- status = `${providerId}: ${free} free models`;
232
- } else if (currentShowPaid) {
233
- status = `${providerId}: ${total} models (free + paid)`;
234
- } else {
235
- status = `${providerId}: ${free} free · ${paid} paid`;
236
- }
237
-
238
- if (config.hasKey) status += " 🔑";
239
- ctx.ui.setStatus(`${providerId}-status`, status);
240
- });
225
+ // ── Model count status bar removed (keeps footer clean) ───────
241
226
 
242
227
  // ── Error handling / usage tracking are temporarily deprecated ─────────
243
228
 
@@ -14,6 +14,7 @@ import {
14
14
  PROVIDER_CLINE,
15
15
  } from "../../constants.ts";
16
16
  import type { ProviderModelConfig } from "../../lib/types.ts";
17
+ import { safeEnrichModelsWithModelsDev } from "../../lib/model-metadata.ts";
17
18
  import { getProxyModelCompat } from "../../lib/provider-compat.ts";
18
19
  import { cleanModelName, fetchWithRetry } from "../../lib/util.ts";
19
20
 
@@ -243,7 +244,12 @@ export async function fetchClineModels(
243
244
  ? models.filter((m) => m.cost.input === 0 && m.cost.output === 0)
244
245
  : models;
245
246
 
246
- return applyHidden(filtered, PROVIDER_CLINE);
247
+ return applyHidden(
248
+ await safeEnrichModelsWithModelsDev(filtered, {
249
+ providerId: PROVIDER_CLINE,
250
+ }),
251
+ PROVIDER_CLINE,
252
+ );
247
253
  }
248
254
 
249
255
  /**