@mcptoolshop/registry-stats 2.3.0 → 3.1.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.it.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.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.md">English</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.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.md">English</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
- Pubblica su npm, PyPI, NuGet, il Marketplace di VS Code e Docker Hub. Attualmente, rispondere alla domanda "come stanno andando i miei pacchetti?" significa controllare cinque siti diversi. **registry-stats** è la piattaforma completa: un motore TypeScript (CLI + API + server REST), una dashboard web interattiva e un'applicazione desktop nativa per Windows, il tutto proveniente da un unico repository.
35
-
36
- Nessuna dipendenza a runtime. Utilizza la funzione nativa `fetch()`. Node 18 o superiore.
37
-
38
- ## Cosa c'è all'interno
39
-
40
- | Livello | Cosa fa |
41
- |-------|-------------|
42
- | **Engine** | Libreria TypeScript + CLI + server REST. Interroga cinque registri con un'unica interfaccia. Pubblicato su npm come `@mcptoolshop/registry-stats`. |
43
- | **Dashboard** | Applicazione web basata su Astro. Assistente chat AI, sei grafici interattivi, motore di crescita intelligente e guida con schede. Ricostruita settimanalmente tramite CI. |
44
- | **Desktop** | Applicazione nativa per Windows realizzata con WinUI 3 + WebView2. Include la dashboard offline e scarica le statistiche in tempo reale su richiesta. |
45
-
46
- ## Dashboard
47
-
48
- Una dashboard con aggiornamenti automatici è disponibile all'indirizzo [`/dashboard/`](https://mcp-tool-shop-org.github.io/registry-stats/dashboard/).
49
-
50
- - **Interfaccia a schede** — Schede Home, Analytics, Leaderboard e Help
51
- - **Assistente chat AI** — Registry Assistant alimentato da Ollama con contesto RAG, risposte in streaming, selettore di modelli e memoria della conversazione
52
- - **Riepilogo esecutivo** — punteggio di salute (0–100), indice di diversità, variazione settimanale, download totali da tutti i registri
53
- - **Sei grafici interattivi** — tendenza a 30 giorni (vista aggregata / per registro / top 5), quota del registro (area polare), rischio del portafoglio (istogramma + Gini & P90), top 10 momentum, tracker della velocità con sparkline e mappa termica a 30 giorni con rilevamento picchi (>2σ)
54
- - **Motore di crescita intelligente** — gestisce la distorsione dei piccoli denominatori con soglia di base, limite percentuale e formula di velocità smorzata
55
- - **Insight azionabili** — raccomandazioni auto-generate e avvisi di attenzione per i pacchetti in calo
56
- - **Classifica** — tutti i pacchetti classificati per download settimanali con sparkline a 30 giorni e badge di tendenza intelligenti
57
- - **Pagina di configurazione** — editor del portafoglio con validazione, sezione registry-sync e panoramica della pipeline
58
- - **Scheda di aiuto** — guida intuitiva che copre ogni scheda, concetti chiave, suggerimenti per l'assistente AI, pipeline dei dati e link utili
59
- - **Tema chiaro/scuro** — segue le preferenze del sistema
60
-
61
- I dati vengono scaricati al momento della compilazione e la dashboard viene ricostruita settimanalmente tramite CI (il lunedì alle 06:00 UTC). Configura i pacchetti da monitorare in `site/src/data/packages.json`.
62
-
63
- ## Applicazione Desktop
64
-
65
- Un'applicazione nativa per Windows che integra la dashboard in un ambiente WebView2 locale:
66
-
67
- - **Funziona offline** — include file HTML/CSS/JS; funziona senza connessione a Internet.
68
- - **Aggiornamento in tempo reale** scarica `stats.json` da GitHub Pages su richiesta.
69
- - **Esportazione CSV** — esporta i dati della classifica con un solo clic.
70
- - **Pacchetto MSIX** — creato e firmato tramite CI utilizzando `desktop-ci.yml`.
71
-
72
- Il codice sorgente dell'applicazione desktop si trova nella cartella `desktop/`. Realizzata con .NET 10 MAUI e destinata a WinUI 3.
73
-
74
- ## Installazione
75
-
33
+
34
+ Pubblica i tuoi pacchetti su npm, PyPI, NuGet, il Marketplace di VS Code e Docker Hub. Attualmente, per rispondere alla domanda "come stanno performando i miei pacchetti?", è necessario controllare cinque siti diversi. **registry-stats** è la piattaforma completa: un motore TypeScript (CLI + API + server REST), una dashboard web interattiva e un'applicazione desktop nativa per Windows, il tutto contenuto in un unico repository.
35
+
36
+ Nessuna dipendenza a runtime. Utilizza la funzione nativa `fetch()`. Node 18+.
37
+
38
+ ## Cosa contiene
39
+
40
+ | Strato | Cosa fa |
41
+ |-------|-------------|
42
+ | **Engine** | Libreria TypeScript + CLI + server REST. Interroga cinque registri con un'unica interfaccia. Pubblicato su npm come `@mcptoolshop/registry-stats`. |
43
+ | **Dashboard** | Applicazione web alimentata da Astro, con il co-pilota AI Pulse (streaming vocale, ricerca web, schermo intero, connettori dati GitHub), sei grafici interattivi, aggiornamento in tempo reale, esportazione di report (PDF / JSONL / Markdown) e una guida di aiuto organizzata in schede. Ricostruita settimanalmente tramite CI; aggiornabile su richiesta. |
44
+ | **Desktop** | Applicazione nativa per Windows realizzata con WinUI 3 + WebView2. Include la dashboard offline e scarica le statistiche in tempo reale su richiesta. |
45
+
46
+ ## Dashboard
47
+
48
+ Una dashboard con aggiornamento automatico è disponibile all'indirizzo [`/dashboard/`](https://mcp-tool-shop-org.github.io/registry-stats/dashboard/).
49
+
50
+ - **Interfaccia a schede** — Schede Home, Analytics, Classifica e Aiuto.
51
+ - **Co-pilota AI Pulse** — Assistente conversazionale basato su Ollama, con sintesi vocale in streaming (parla mentre l'LLM elabora, 4 voci tramite [mcp-voice-soundboard](https://github.com/mcp-tool-shop-org/mcp-voice-soundboard)), ricerca web (Wikipedia + SearXNG opzionale), sintesi vocale automatica, modalità schermo intero, connettore dati per organizzazioni GitHub, selettore di modelli e memoria delle conversazioni.
52
+ - **Panoramica generale** — Punteggio di salute (0–100), indice di diversità, variazione settimanale, numero totale di download in tutti i registri.
53
+ - **Sei grafici interattivi** — Tendenza degli ultimi 30 giorni (aggregata / per registro / top-5), quota di registro (area polare), rischio del portafoglio (istogramma + Gini & P90), top-10 dei più performanti, tracciamento della velocità con grafici a linee, e mappa di calore degli ultimi 30 giorni con rilevamento di picchi (>2σ).
54
+ - **Motore di crescita intelligente** — Gestisce le distorsioni dovute a numeri bassi con una soglia di base, un limite percentuale e una formula di velocità smorzata.
55
+ - **Informazioni utili** — Raccomandazioni generate automaticamente e avvisi per pacchetti in declino.
56
+ - **Pannello Pulse** — Vista divisa tra i pacchetti consolidati (≥ 50 download/settimana) e i pacchetti emergenti e nuovi, con grafici a linee degli ultimi 7 giorni, variazioni assolute e percentuali, contesto di riferimento e un riepilogo esecutivo in una riga.
57
+ - **Aggiornamento in tempo reale** — Recupero dei dati da npm e PyPI tramite API direttamente dal client, con indicatore di avanzamento; i risultati vengono memorizzati nella sessionStorage (TTL di 5 minuti) per garantire un cambio di scheda immediato.
58
+ - **Esportazione di report** — Menu a tendina accanto al pulsante di aggiornamento, che offre tre formati: **Exec PDF** (tramite jsPDF), **LLM JSONL** (record tipizzati per l'elaborazione da parte dell'AI) e **Dev Markdown** (tabelle GFM).
59
+ - **Classifica** — 132 pacchetti classificati in base al numero di download settimanali, con grafici a linee degli ultimi 30 giorni e badge intelligenti per le tendenze.
60
+ - **Pagina di configurazione** — Editor del portafoglio con validazione, sezione di sincronizzazione con i registri e panoramica delle pipeline.
61
+ - **Scheda di aiuto** Guida chiara e completa che copre ogni scheda, i concetti chiave, i suggerimenti per l'assistente AI, la pipeline dei dati e link utili.
62
+ - **Tema chiaro / scuro** — Segue le preferenze del sistema.
63
+
64
+ I dati vengono recuperati al momento della compilazione e ricostruiti settimanalmente tramite CI (lunedì alle 06:00 UTC). L'aggiornamento in tempo reale recupera i numeri più recenti direttamente dalle API dei registri. Configura i pacchetti da monitorare in `site/src/data/packages.json` (132 pacchetti su 5 registri).
65
+
66
+ ## Applicazione Desktop
67
+
68
+ Un'applicazione nativa per Windows che integra la dashboard in un ambiente WebView2 locale:
69
+
70
+ - **Funziona offline** — include HTML/CSS/JS integrati; funziona senza connessione a Internet
71
+ - **Aggiornamento in tempo reale** — recupera `stats.json` da GitHub Pages su richiesta
72
+ - **Esportazione CSV** esporta i dati della classifica con un solo clic
73
+ - **Pacchetto MSIX** — creato e firmato tramite CI utilizzando `desktop-ci.yml`
74
+
75
+ Il codice sorgente dell'applicazione desktop si trova in `desktop/`. Realizzato con .NET 10 MAUI e destinato a WinUI 3.
76
+
77
+ ## Installazione
78
+
76
79
  ```bash
77
80
  npm install @mcptoolshop/registry-stats
78
81
  ```
79
-
80
- ## CLI (Interfaccia a riga di comando)
81
-
82
+
83
+ ## CLI (Interfaccia a riga di comando)
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
- ## File di configurazione
121
-
122
- Create un file `registry-stats.config.json` nella directory principale del vostro progetto (oppure eseguite `registry-stats --init`):
123
-
122
+
123
+ ## File di configurazione
124
+
125
+ Create un file `registry-stats.config.json` nella directory principale del vostro progetto (oppure eseguite `registry-stats --init`):
126
+
124
127
  ```json
125
128
  {
126
129
  "registries": ["npm", "pypi", "nuget", "vscode", "docker"],
@@ -139,11 +142,11 @@ Create un file `registry-stats.config.json` nella directory principale del vostr
139
142
  "concurrency": 5
140
143
  }
141
144
  ```
142
-
143
- Eseguite `registry-stats` senza argomenti per ottenere le statistiche per tutti i pacchetti configurati. La CLI cerca il file di configurazione a partire dalla directory corrente.
144
-
145
- La configurazione è disponibile anche tramite API programmatica:
146
-
145
+
146
+ Eseguite `registry-stats` senza argomenti per ottenere le statistiche per tutti i pacchetti configurati. La CLI cerca il file di configurazione a partire dalla directory corrente.
147
+
148
+ La configurazione è disponibile anche tramite API programmatica:
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 programmatica
156
-
157
+
158
+ ## API programmatica
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
- ## Supporto per i registri
199
-
200
- | Registro | Formato del pacchetto | Serie temporali | Dati disponibili |
201
- |----------|---------------|-------------|----------------|
202
- | `npm` | `express`, `@scope/pkg` | Sì (549 giorni) | giorno precedente, settimana precedente, mese precedente |
203
- | `pypi` | `requests` | Sì (180 giorni) | giorno precedente, settimana precedente, mese precedente, totale |
204
- | `nuget` | `Newtonsoft.Json` | No | totale |
205
- | `vscode` | `publisher.extension` | No | totale (installazioni), valutazione, tendenze |
206
- | `docker` | `namespace/repo` | No | totale (download), stelle |
207
-
208
- ## Affidabilità integrata
209
-
210
- - Tentativi automatici con backoff esponenziale in caso di errori 429/5xx
211
- - Rispetta le intestazioni `Retry-After`
212
- - Limitazione della concorrenza per richieste di massa
213
- - Cache TTL opzionale (configurabile: potete fornire la vostra implementazione Redis/file tramite l'interfaccia `StatsCache`)
214
-
215
- ## Server API REST
216
-
217
- Eseguite come microservizio o integrate nel vostro server:
218
-
200
+
201
+ ## Supporto per i registri
202
+
203
+ | Registro | Formato del pacchetto | Serie temporali | Dati disponibili |
204
+ |----------|---------------|-------------|----------------|
205
+ | `npm` | `express`, `@scope/pkg` | Sì (549 giorni) | giorno precedente, settimana precedente, mese precedente |
206
+ | `pypi` | `requests` | Sì (180 giorni) | giorno precedente, settimana precedente, mese precedente, totale |
207
+ | `nuget` | `Newtonsoft.Json` | No | totale |
208
+ | `vscode` | `publisher.extension` | No | totale (installazioni), valutazione, tendenze |
209
+ | `docker` | `namespace/repo` | No | totale (download), stelle |
210
+
211
+ ## Affidabilità integrata
212
+
213
+ - Tentativi automatici con backoff esponenziale in caso di errori 429/5xx
214
+ - Rispetta le intestazioni `Retry-After`
215
+ - Limitazione della concorrenza per richieste di massa
216
+ - Cache TTL opzionale (configurabile: potete fornire la vostra implementazione Redis/file tramite l'interfaccia `StatsCache`)
217
+
218
+ ## Server API REST
219
+
220
+ Eseguite come microservizio o integrate nel vostro server:
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
- Utilizzo programmatica per server personalizzati o serverless:
231
-
232
+
233
+ Utilizzo programmatica per server personalizzati o serverless:
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
- ## Registri personalizzati
245
-
246
+
247
+ ## Registri personalizzati
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
- ## Struttura del Repository
268
-
269
+
270
+ ## Struttura del Repository
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
- ## Sviluppo
278
-
279
+
280
+ ## Sviluppo
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
- ## Sicurezza e ambito dei dati
291
-
292
- | Aspetto | Dettaglio |
293
- |--------|--------|
294
- | **Data touched** | Statistiche di download pubbliche da npm, PyPI, NuGet, VS Code Marketplace, Docker Hub. Cache in memoria (opzionale). |
295
- | **Data NOT touched** | Nessuna telemetria. Nessuna analisi. Nessun archivio di credenziali. Nessun dato utente. Nessuna scrittura di file. |
296
- | **Permissions** | Lettura: API pubbliche dei registri tramite HTTPS. Scrittura: solo stdout/stderr. |
297
- | **Network** | Uscite HTTPS verso le API pubbliche dei registri. Server REST locale opzionale. |
298
- | **Telemetry** | Nessuno raccolto o inviato. |
299
-
300
- Consulta [SECURITY.md](SECURITY.md) per la segnalazione di vulnerabilità.
301
-
302
- ## Tabella di valutazione
303
-
304
- | Categoria | Punteggio |
305
- |----------|-------|
306
- | A. Sicurezza | 10 |
307
- | B. Gestione degli errori | 10 |
308
- | C. Documentazione per gli operatori | 10 |
309
- | D. Igiene della distribuzione | 10 |
310
- | E. Identità (soft) | 10 |
311
- | **Overall** | **50/50** |
312
-
313
- > Analisi completa: [SHIP_GATE.md](SHIP_GATE.md) · [SCORECARD.md](SCORECARD.md)
314
-
315
- ## Licenza
316
-
317
- MIT
318
-
292
+
293
+ ## Sicurezza e ambito dei dati
294
+
295
+ | Aspetto | Dettaglio |
296
+ |--------|--------|
297
+ | **Data touched** | Statistiche di download pubbliche da npm, PyPI, NuGet, VS Code Marketplace, Docker Hub. Cache in memoria (opzionale). |
298
+ | **Data NOT touched** | Nessuna telemetria. Nessuna analisi. Nessun archivio di credenziali. Nessun dato utente. Nessuna scrittura di file. |
299
+ | **Permissions** | Lettura: API dei registri pubblici tramite HTTPS. Scrittura: solo stdout/stderr. |
300
+ | **Network** | Comunicazione HTTPS in uscita verso le API dei registri pubblici. Server REST localhost opzionale. |
301
+ | **Telemetry** | Nessun dato raccolto o trasmesso. |
302
+
303
+ Consultare [SECURITY.md](SECURITY.md) per la segnalazione di vulnerabilità.
304
+
305
+ ## Scheda di valutazione
306
+
307
+ | Categoria | Punteggio |
308
+ |----------|-------|
309
+ | A. Sicurezza | 10 |
310
+ | B. Gestione degli errori | 10 |
311
+ | C. Documentazione per gli operatori | 10 |
312
+ | D. Igiene del processo di distribuzione | 10 |
313
+ | E. Identità (soft) | 10 |
314
+ | **Overall** | **50/50** |
315
+
316
+ > Analisi completa: [SHIP_GATE.md](SHIP_GATE.md) · [SCORECARD.md](SCORECARD.md)
317
+
318
+ ## Licenza
319
+
320
+ MIT
321
+
319
322
  ---
320
-
321
- Creato da <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>
323
+
324
+ Creato da <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>