@mcptoolshop/registry-stats 2.2.0 → 3.0.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/README.es.md CHANGED
@@ -1,15 +1,15 @@
1
- <p align="center">
2
- <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.md">English</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
3
- </p>
4
-
1
+ <p align="center">
2
+ <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.md">English</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
3
+ </p>
4
+
5
5
  <p align="center">
6
6
  <img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/registry-stats/readme.png" alt="registry-stats logo" width="400" />
7
7
  </p>
8
-
8
+
9
9
  <p align="center">
10
10
  Five registries. One engine. Dashboard included.
11
11
  </p>
12
-
12
+
13
13
  <p align="center">
14
14
  <a href="https://github.com/mcp-tool-shop-org/registry-stats/actions/workflows/pages.yml"><img src="https://github.com/mcp-tool-shop-org/registry-stats/actions/workflows/pages.yml/badge.svg" alt="CI"></a>
15
15
  <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="MIT License"></a>
@@ -17,7 +17,7 @@
17
17
  <a href="https://mcp-tool-shop-org.github.io/registry-stats/dashboard/"><img src="https://img.shields.io/badge/Dashboard-live-green" alt="Dashboard"></a>
18
18
  <a href="https://mcp-tool-shop-org.github.io/registry-stats/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page"></a>
19
19
  </p>
20
-
20
+
21
21
  <p align="center">
22
22
  <a href="#dashboard">Dashboard</a> &middot;
23
23
  <a href="#desktop-app">Desktop App</a> &middot;
@@ -28,57 +28,60 @@
28
28
  <a href="#config-file">Config</a> &middot;
29
29
  <a href="#license">License</a>
30
30
  </p>
31
-
31
+
32
32
  ---
33
-
34
- Publica en npm, PyPI, NuGet, el Marketplace de VS Code y Docker Hub. Actualmente, responder a la pregunta "¿cómo le están yendo a mis paquetes?" implica consultar cinco sitios diferentes. **registry-stats** es la plataforma completa: un motor de TypeScript (CLI + API + servidor REST), un panel web en tiempo real y una aplicación de escritorio nativa para Windows, todo desde un único repositorio.
35
-
36
- No tiene dependencias de tiempo de ejecución. Utiliza `fetch()` nativo. Node 18+.
37
-
38
- ## ¿Qué hay dentro?
39
-
40
- | Capa | ¿Qué hace? |
41
- |-------|-------------|
42
- | **Engine** | Biblioteca de TypeScript + CLI + servidor REST. Consulta cinco registros con una única interfaz. Publicado en npm como `@mcptoolshop/registry-stats`. |
43
- | **Dashboard** | Aplicación web impulsada por Astro. Asistente de chat con IA, seis gráficos interactivos, motor de crecimiento inteligente y guía de ayuda con pestañas. Se reconstruye semanalmente mediante CI. |
44
- | **Desktop** | Aplicación nativa para Windows con WinUI 3 + WebView2. Incluye el panel sin conexión y descarga las estadísticas en tiempo real bajo demanda. |
45
-
46
- ## Panel
47
-
48
- Un panel de estadísticas que se actualiza automáticamente se encuentra en [`/dashboard/`](https://mcp-tool-shop-org.github.io/registry-stats/dashboard/).
49
-
50
- - **Interfaz con pestañas** — Pestañas Home, Analytics, Leaderboard y Help
51
- - **Asistente de chat con IA** — Registry Assistant con Ollama, contexto RAG, respuestas en streaming, selector de modelos y memoria de conversación
52
- - **Resumen ejecutivo** — puntuación de salud (0–100), índice de diversidad, variación semanal, descargas totales de todos los registros
53
- - **Seis gráficos interactivos** — tendencia de 30 días (vista agregada / por registro / top 5), cuota de registro (área polar), riesgo del portafolio (histograma + Gini & P90), top 10 de momentum, rastreador de velocidad con sparklines, y mapa de calor de 30 días con detección de picos (>2σ)
54
- - **Motor de crecimiento inteligente** — maneja la distorsión por denominadores pequeños con umbral base, límite de porcentaje y fórmula de velocidad amortiguada
55
- - **Perspectivas accionables** — recomendaciones autogeneradas y alertas para paquetes en declive
56
- - **Tabla de clasificación** — todos los paquetes clasificados por descargas semanales con sparklines de 30 días y badges de tendencia inteligente
57
- - **Página de configuración** — editor de portafolio con validación, sección de registry-sync y vista general del flujo de datos
58
- - **Pestaña de ayuda** — guía amigable que cubre cada pestaña, conceptos clave, consejos del asistente IA, flujo de datos y enlaces útiles
59
- - **Tema claro/oscuro** — Sigue la preferencia del sistema
60
-
61
- Los datos se obtienen en el momento de la compilación y se reconstruyen semanalmente mediante CI (los lunes a las 06:00 UTC). Configure los paquetes rastreados en `site/src/data/packages.json`.
62
-
63
- ## Aplicación de escritorio
64
-
65
- Una aplicación nativa para Windows que integra el panel en un entorno WebView2 local:
66
-
67
- - **Funciona sin conexión** — Incluye HTML/CSS/JS empaquetados; funciona sin internet.
68
- - **Actualización en tiempo real** Descarga `stats.json` de GitHub Pages bajo demanda.
69
- - **Exportación a CSV** — Exporta los datos de la tabla de clasificación con un solo clic.
70
- - **Empaquetado MSIX** — Se construye y firma en CI mediante `desktop-ci.yml`.
71
-
72
- El código fuente de la aplicación de escritorio se encuentra en `desktop/`. Se construyó con .NET 10 MAUI y apunta a WinUI 3.
73
-
74
- ## Instalación
75
-
33
+
34
+ Publica en npm, PyPI, NuGet, el Marketplace de VS Code y Docker Hub. Actualmente, responder a la pregunta "¿cómo le están yendo a mis paquetes?" implica consultar cinco sitios diferentes. **registry-stats** es la plataforma completa: un motor de TypeScript (CLI + API + servidor REST), un panel web interactivo y una aplicación de escritorio nativa para Windows, todo desde un único repositorio.
35
+
36
+ No tiene dependencias de tiempo de ejecución. Utiliza `fetch()` nativo. Node 18+.
37
+
38
+ ## ¿Qué hay dentro?
39
+
40
+ | Capa | ¿Qué hace? |
41
+ |-------|-------------|
42
+ | **Engine** | Biblioteca de TypeScript + CLI + servidor REST. Consulta cinco registros con una sola interfaz. Publicado en npm como `@mcptoolshop/registry-stats`. |
43
+ | **Dashboard** | Una aplicación web impulsada por Astro, con el copiloto de IA Pulse (transmisión de voz, búsqueda web, pantalla completa, conectores de datos de GitHub), seis gráficos interactivos, actualización en tiempo real, exportación de informes (PDF / JSONL / Markdown) y una guía de ayuda con pestañas. Reconstruida semanalmente mediante CI; se puede actualizar bajo demanda. |
44
+ | **Desktop** | Aplicación nativa para Windows con WinUI 3 + WebView2. Incluye el panel de control sin conexión y descarga las estadísticas en tiempo real bajo demanda. |
45
+
46
+ ## Panel de control
47
+
48
+ Un panel de control de estadísticas que se actualiza automáticamente se encuentra en [`/dashboard/`](https://mcp-tool-shop-org.github.io/registry-stats/dashboard/).
49
+
50
+ - **Interfaz con pestañas** — Pestañas de Inicio, Analítica, Clasificación y Ayuda.
51
+ - **Copiloto de IA Pulse** — Asistente conversacional impulsado por Ollama con síntesis de voz en streaming (habla mientras el modelo de lenguaje genera texto, 4 voces a través de [mcp-voice-soundboard](https://github.com/mcp-tool-shop-org/mcp-voice-soundboard)), búsqueda web (Wikipedia + SearXNG opcional), reproducción automática de voz, modo de pantalla completa, conector de datos de organizaciones de GitHub, selector de modelos y memoria de conversación.
52
+ - **Resumen ejecutivo** — Puntuación de salud (0–100), índice de diversidad, cambio semanal, número total de descargas en todos los registros.
53
+ - **Seis gráficos interactivos** — Tendencia de 30 días (agregada / por registro / conmutación entre los 5 principales), cuota de registro (área polar), riesgo de la cartera (histograma + Gini y P90), los 10 principales por impulso, rastreador de velocidad con gráficos de líneas, y mapa de calor de 30 días con detección de picos (>2σ).
54
+ - **Motor de crecimiento inteligente** — Maneja la distorsión de denominadores pequeños con un umbral base, un límite porcentual y una fórmula de velocidad amortiguada.
55
+ - **Información útil** — Recomendaciones generadas automáticamente y alertas para paquetes en declive.
56
+ - **Panel Pulse** — Vista dividida de "Established Movers" (≥ 50 descargas/semana) y paquetes emergentes y nuevos, con gráficos de líneas de 7 días integrados, deltas absolutos + porcentuales, contexto base y un resumen ejecutivo de una línea.
57
+ - **Actualización en tiempo real** — Recuperación bajo demanda desde las API de npm y PyPI con indicador de progreso; los resultados se almacenan en caché en sessionStorage (TTL de 5 minutos) para que los cambios de pestaña sean instantáneos.
58
+ - **Exportación de informes** — Menú desplegable junto al botón de Actualizar que ofrece tres formatos: **PDF Ejecutivo** (a través de jsPDF), **JSONL del modelo de lenguaje** (registros tipados para la ingesta de IA) y **Markdown para desarrolladores** (tablas GFM).
59
+ - **Clasificación** — 132 paquetes clasificados por descargas semanales con gráficos de líneas de 30 días integrados y distintivos de tendencia inteligentes.
60
+ - **Página de configuración** — Editor de cartera con validación, sección complementaria de sincronización de registros y descripción general del flujo de trabajo.
61
+ - **Pestaña de ayuda** Guía fácil de entender que cubre cada pestaña, conceptos clave, consejos para el asistente de IA, flujo de datos y enlaces útiles.
62
+ - **Tema oscuro / claro** — Sigue la preferencia del sistema.
63
+
64
+ Los datos se obtienen en el momento de la compilación y se reconstruyen semanalmente mediante CI (los lunes a las 06:00 UTC). La actualización en tiempo real descarga los últimos números directamente desde las API de los registros. Configure los paquetes rastreados en `site/src/data/packages.json` (132 paquetes en 5 registros).
65
+
66
+ ## Aplicación de escritorio
67
+
68
+ Una aplicación nativa para Windows que integra el panel de control en un entorno WebView2 local:
69
+
70
+ - **Funciona sin conexión** — Incluye HTML/CSS/JS empaquetados; funciona sin conexión a Internet.
71
+ - **Actualización en tiempo real** — Descarga `stats.json` de GitHub Pages bajo demanda.
72
+ - **Exportación a CSV** Exporta los datos de la clasificación con un solo clic.
73
+ - **Empaquetado MSIX** — Se construye y firma en CI mediante `desktop-ci.yml`.
74
+
75
+ El código fuente de la aplicación de escritorio se encuentra en `desktop/`. Se construyó con .NET 10 MAUI y apunta a WinUI 3.
76
+
77
+ ## Instalación
78
+
76
79
  ```bash
77
80
  npm install @mcptoolshop/registry-stats
78
81
  ```
79
-
80
- ## CLI
81
-
82
+
83
+ ## CLI
84
+
82
85
  ```bash
83
86
  # Query a single registry
84
87
  registry-stats express -r npm
@@ -116,11 +119,11 @@ registry-stats express -r npm --range 2025-01-01:2025-06-30 --format chart
116
119
  # Start a REST API server
117
120
  registry-stats serve --port 3000
118
121
  ```
119
-
120
- ## Archivo de configuración
121
-
122
- Crea un archivo `registry-stats.config.json` en la raíz de tu proyecto (o ejecuta `registry-stats --init`):
123
-
122
+
123
+ ## Archivo de configuración
124
+
125
+ Crea un archivo `registry-stats.config.json` en la raíz de tu proyecto (o ejecuta `registry-stats --init`):
126
+
124
127
  ```json
125
128
  {
126
129
  "registries": ["npm", "pypi", "nuget", "vscode", "docker"],
@@ -139,11 +142,11 @@ Crea un archivo `registry-stats.config.json` en la raíz de tu proyecto (o ejecu
139
142
  "concurrency": 5
140
143
  }
141
144
  ```
142
-
143
- Ejecuta `registry-stats` sin argumentos para obtener las estadísticas de todos los paquetes configurados. La CLI busca el archivo de configuración desde el directorio actual.
144
-
145
- La configuración también está disponible de forma programática:
146
-
145
+
146
+ Ejecuta `registry-stats` sin argumentos para obtener las estadísticas de todos los paquetes configurados. La CLI busca el archivo de configuración desde el directorio actual.
147
+
148
+ La configuración también está disponible de forma programática:
149
+
147
150
  ```typescript
148
151
  import { loadConfig, defaultConfig, starterConfig } from '@mcptoolshop/registry-stats';
149
152
 
@@ -151,9 +154,9 @@ const config = loadConfig(); // finds nearest config file, or null
151
154
  const defaults = defaultConfig(); // returns default Config object
152
155
  const template = starterConfig(); // returns starter JSON string
153
156
  ```
154
-
155
- ## API programática
156
-
157
+
158
+ ## API programática
159
+
157
160
  ```typescript
158
161
  import { stats, calc, createCache } from '@mcptoolshop/registry-stats';
159
162
 
@@ -194,41 +197,41 @@ const cache = createCache();
194
197
  await stats('npm', 'express', { cache }); // fetches
195
198
  await stats('npm', 'express', { cache }); // cache hit
196
199
  ```
197
-
198
- ## Soporte para registros
199
-
200
- | Registro | Formato del paquete | Series de tiempo | Datos disponibles |
201
- |----------|---------------|-------------|----------------|
202
- | `npm` | `express`, `@scope/pkg` | Sí (549 días) | último día, última semana, último mes |
203
- | `pypi` | `requests` | Sí (180 días) | último día, última semana, último mes, total |
204
- | `nuget` | `Newtonsoft.Json` | No | total |
205
- | `vscode` | `publisher.extension` | No | total (instalaciones), calificación, tendencias |
206
- | `docker` | `namespace/repo` | No | total (descargas), estrellas |
207
-
208
- ## Fiabilidad integrada
209
-
210
- - Reintentos automáticos con retroceso exponencial en caso de errores 429/5xx.
211
- - Respeta los encabezados `Retry-After`.
212
- - Limitación de concurrencia para solicitudes masivas.
213
- - Caché TTL opcional (plug-in: proporciona tu propio backend de Redis/archivo a través de la interfaz `StatsCache`).
214
-
215
- ## Servidor de API REST
216
-
217
- Ejecútalo como un microservicio o intégralo en tu propio servidor:
218
-
200
+
201
+ ## Soporte para registros
202
+
203
+ | Registro | Formato del paquete | Series de tiempo | Datos disponibles |
204
+ |----------|---------------|-------------|----------------|
205
+ | `npm` | `express`, `@scope/pkg` | Sí (549 días) | último día, última semana, último mes |
206
+ | `pypi` | `requests` | Sí (180 días) | último día, última semana, último mes, total |
207
+ | `nuget` | `Newtonsoft.Json` | No | total |
208
+ | `vscode` | `publisher.extension` | No | total (instalaciones), calificación, tendencias |
209
+ | `docker` | `namespace/repo` | No | total (descargas), estrellas |
210
+
211
+ ## Fiabilidad integrada
212
+
213
+ - Reintentos automáticos con retroceso exponencial en caso de errores 429/5xx.
214
+ - Respeta los encabezados `Retry-After`.
215
+ - Limitación de concurrencia para solicitudes masivas.
216
+ - Caché TTL opcional (plug-in: proporciona tu propio backend de Redis/archivo a través de la interfaz `StatsCache`).
217
+
218
+ ## Servidor de API REST
219
+
220
+ Ejecútalo como un microservicio o intégralo en tu propio servidor:
221
+
219
222
  ```bash
220
223
  registry-stats serve --port 3000
221
224
  ```
222
-
225
+
223
226
  ```
224
227
  GET /stats/:package # all registries
225
228
  GET /stats/:registry/:package # single registry
226
229
  GET /compare/:package?registries=npm,pypi
227
230
  GET /range/:registry/:package?start=YYYY-MM-DD&end=YYYY-MM-DD&format=json|csv|chart
228
231
  ```
229
-
230
- Uso programático para servidores personalizados o sin servidor:
231
-
232
+
233
+ Uso programático para servidores personalizados o sin servidor:
234
+
232
235
  ```typescript
233
236
  import { createHandler, serve } from '@mcptoolshop/registry-stats';
234
237
 
@@ -240,9 +243,9 @@ import { createServer } from 'node:http';
240
243
  const handler = createHandler();
241
244
  createServer(handler).listen(3000);
242
245
  ```
243
-
244
- ## Registros personalizados
245
-
246
+
247
+ ## Registros personalizados
248
+
246
249
  ```typescript
247
250
  import { registerProvider, type RegistryProvider } from '@mcptoolshop/registry-stats';
248
251
 
@@ -263,9 +266,9 @@ const cargo: RegistryProvider = {
263
266
  registerProvider(cargo);
264
267
  await stats('cargo', 'serde');
265
268
  ```
266
-
267
- ## Estructura del repositorio
268
-
269
+
270
+ ## Estructura del repositorio
271
+
269
272
  ```
270
273
  registry-stats/
271
274
  ├── src/ # TypeScript engine (published to npm)
@@ -273,9 +276,9 @@ registry-stats/
273
276
  ├── desktop/ # WinUI 3 desktop app (.NET 10 MAUI)
274
277
  └── test/ # Library tests (vitest)
275
278
  ```
276
-
277
- ## Desarrollo
278
-
279
+
280
+ ## Desarrollo
281
+
279
282
  ```bash
280
283
  # Engine
281
284
  npm install && npm run build && npm test
@@ -286,36 +289,36 @@ npm run site:dev
286
289
  # Dashboard (production build)
287
290
  npm run site:build
288
291
  ```
289
-
290
- ## Seguridad y alcance de los datos
291
-
292
- | Aspecto | Detalle |
293
- |--------|--------|
294
- | **Data touched** | Estadísticas de descarga pública de npm, PyPI, NuGet, Marketplace de VS Code, Docker Hub. Caché en memoria (opcional). |
295
- | **Data NOT touched** | Sin telemetría. Sin análisis. Sin almacenamiento de credenciales. Sin datos de usuario. Sin escrituras de archivos. |
296
- | **Permissions** | Lectura: APIs públicas de registros a través de HTTPS. Escritura: solo stdout/stderr. |
297
- | **Network** | Conexiones HTTPS salientes a APIs públicas de registros. Servidor REST opcional en localhost. |
298
- | **Telemetry** | Ninguno recopilado ni enviado. |
299
-
300
- Consulte [SECURITY.md](SECURITY.md) para informar sobre vulnerabilidades.
301
-
302
- ## Tabla de puntuación
303
-
304
- | Categoría | Puntuación |
305
- |----------|-------|
306
- | A. Seguridad | 10 |
307
- | B. Manejo de errores | 10 |
308
- | C. Documentación para operadores | 10 |
309
- | D. Higiene de implementación | 10 |
310
- | E. Identidad (suave) | 10 |
311
- | **Overall** | **50/50** |
312
-
313
- > Auditoría completa: [SHIP_GATE.md](SHIP_GATE.md) · [SCORECARD.md](SCORECARD.md)
314
-
315
- ## Licencia
316
-
317
- MIT
318
-
292
+
293
+ ## Seguridad y alcance de los datos
294
+
295
+ | Aspecto | Detalle |
296
+ |--------|--------|
297
+ | **Data touched** | Estadísticas de descargas públicas de npm, PyPI, NuGet, Marketplace de VS Code, Docker Hub. Caché en memoria (opcional). |
298
+ | **Data NOT touched** | Sin telemetría. Sin análisis. Sin almacenamiento de credenciales. Sin datos de usuario. Sin escrituras de archivos. |
299
+ | **Permissions** | Lectura: APIs de registros públicos a través de HTTPS. Escritura: solo a stdout/stderr. |
300
+ | **Network** | Conexiones HTTPS salientes a APIs de registros públicos. Servidor REST local opcional. |
301
+ | **Telemetry** | Ninguna información es recopilada o enviada. |
302
+
303
+ Consulte [SECURITY.md](SECURITY.md) para informar sobre vulnerabilidades.
304
+
305
+ ## Evaluación
306
+
307
+ | Categoría | Puntuación |
308
+ |----------|-------|
309
+ | A. Seguridad | 10 |
310
+ | B. Manejo de errores | 10 |
311
+ | C. Documentación para el operador | 10 |
312
+ | D. Higiene en la entrega | 10 |
313
+ | E. Identidad (suave) | 10 |
314
+ | **Overall** | **50/50** |
315
+
316
+ > Auditoría completa: [SHIP_GATE.md](SHIP_GATE.md) · [SCORECARD.md](SCORECARD.md)
317
+
318
+ ## Licencia
319
+
320
+ MIT
321
+
319
322
  ---
320
-
321
- Creado por <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>
323
+
324
+ Creado por <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>