@mcptoolshop/venvkit 0.2.1 → 1.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.hi.md ADDED
@@ -0,0 +1,274 @@
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.md">English</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
3
+ </p>
4
+
5
+ <p align="center">
6
+ <img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/venvkit/readme.png" alt="venvkit" width="400">
7
+ </p>
8
+
9
+ # venvkit
10
+
11
+ > [MCP Tool Shop](https://mcptoolshop.com) का हिस्सा
12
+
13
+ <p align="center">
14
+ <a href="https://github.com/mcp-tool-shop-org/venvkit/actions/workflows/ci.yml"><img src="https://github.com/mcp-tool-shop-org/venvkit/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
15
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square" alt="License: MIT"></a>
16
+ <a href="https://mcp-tool-shop-org.github.io/venvkit/"><img src="https://img.shields.io/badge/Landing_Page-live-blue?style=flat-square" alt="Landing Page"></a>
17
+ <a href="https://www.npmjs.com/package/@mcptoolshop/venvkit"><img src="https://img.shields.io/npm/v/@mcptoolshop/venvkit?style=flat-square&color=cb3837" alt="npm version"></a>
18
+ </p>
19
+
20
+ **विंडोज एमएल वर्कफ़्लो के लिए पायथन वर्चुअल एनवायरनमेंट डायग्नोस्टिक टूलकिट।**
21
+
22
+ यह आपके सिस्टम में पायथन एनवायरनमेंट की जांच करता है, स्वास्थ्य संबंधी समस्याओं (एसएसएल, डीएलएल, एबीआई मिसमैच, पाथ लीकेज) का निदान करता है, टास्क निष्पादन इतिहास को ट्रैक करता है, अस्थिर टास्क का पता लगाता है, और एक इकोसिस्टम मैप प्रदर्शित करता है।
23
+
24
+ ## 30 सेकंड में शुरुआत
25
+
26
+ ```bash
27
+ git clone https://github.com/mcp-tool-shop-org/venvkit && cd venvkit
28
+ npm install && npm run build
29
+ node dist/map_cli.js --root C:\projects --httpsProbe
30
+ # Open .venvkit/venv-map.html in your browser
31
+ ```
32
+
33
+ ## विशेषताएं
34
+
35
+ - **doctorLite** - किसी भी पायथन इंटरप्रेटर के लिए त्वरित स्वास्थ्य जांच
36
+ - एसएसएल/टीएलएस सत्यापन
37
+ - डीएलएल लोड विफलता (पायटॉर्च/CUDA के साथ आम)
38
+ - एबीआई मिसमैच (एआरएम बनाम x86)
39
+ - पिप की जांच
40
+ - यूजर-साइट और PYTHONPATH का पता लगाना
41
+
42
+ - **scanEnvPaths** - आपके सिस्टम में सभी पायथन एनवायरनमेंट खोजें
43
+ - वर्चुअल एनवायरनमेंट, कोंडा एनवायरनमेंट, पायएनव संस्करण, बेस इंटरप्रेटर खोजता है
44
+ - कॉन्फ़िगर करने योग्य गहराई और फ़िल्टरिंग
45
+
46
+ - **mapRender** - अपने पायथन इकोसिस्टम को विज़ुअलाइज करें
47
+ - प्रोग्रामेटिक उपयोग के लिए ग्राफ JSON आउटपुट
48
+ - दस्तावेज़ों के लिए मर्मेड आरेख
49
+ - बेस इंटरप्रेटर का समूहीकरण और ब्लास्ट रेडियस विश्लेषण
50
+ - टास्क रूटिंग विज़ुअलाइज़ेशन
51
+
52
+ - **runLog** - टास्क निष्पादन इतिहास को ट्रैक करें
53
+ - केवल अपेंड करने योग्य JSONL प्रारूप
54
+ - रिकॉर्ड करता है कि कौन सा एनवायरनमेंट कौन सा टास्क चला रहा था
55
+ - सफलता/विफलता को त्रुटि वर्गीकरण के साथ रिकॉर्ड करता है
56
+
57
+ - **taskCluster** - हस्ताक्षर द्वारा टास्क रन को एकत्रित करें
58
+ - अस्थिर टास्क का पता लगाना (असंगत पास/फेल)
59
+ - एनवायरनमेंट-निर्भर अस्थिरता का पता लगाना
60
+ - विफलता हॉटस्पॉट की पहचान
61
+ - संचरण विश्लेषण (साझा मूल कारण)
62
+
63
+ ## स्थापना
64
+
65
+ ```bash
66
+ npm install
67
+ npm run build
68
+ ```
69
+
70
+ ## सीएलआई उपयोग
71
+
72
+ ```bash
73
+ # Scan current directory and generate ecosystem map
74
+ node dist/map_cli.js
75
+
76
+ # Scan specific directories
77
+ node dist/map_cli.js --root C:\projects --root D:\ml-experiments
78
+
79
+ # Include task run history
80
+ node dist/map_cli.js --runlog .venvkit/runs.jsonl
81
+
82
+ # Output options
83
+ node dist/map_cli.js --out ./output --minScore 50 --strict --httpsProbe
84
+ ```
85
+
86
+ ### सीएलआई विकल्प
87
+
88
+ | फ्लैग | विवरण |
89
+ |------|-------------|
90
+ | `--root, -r` | स्कैन करने के लिए डायरेक्टरी (एक से अधिक निर्दिष्ट कर सकते हैं) |
91
+ | `--out` | आउटपुट डायरेक्टरी (डिफ़ॉल्ट: `.venvkit`) |
92
+ | `--maxDepth` | स्कैन करने के लिए अधिकतम डायरेक्टरी गहराई (डिफ़ॉल्ट: 5) |
93
+ | `--strict` | सख्त मोड जांच सक्षम करें |
94
+ | `--httpsProbe` | एचटीटीपीएस कनेक्टिविटी का परीक्षण करें |
95
+ | `--minScore` | इस स्वास्थ्य स्कोर से नीचे के एनवायरनमेंट को फ़िल्टर करें |
96
+ | `--concurrency` | समानांतर जांच (डिफ़ॉल्ट: सीपीयू गणना) |
97
+ | `--runlog` | टास्क रन लॉग (JSONL) का पथ |
98
+ | `--no-tasks` | टास्क विज़ुअलाइज़ेशन को छोड़ें |
99
+
100
+ ### आउटपुट
101
+
102
+ | फ़ाइल | विवरण |
103
+ |------|-------------|
104
+ | `venv-map.json` | पूरा ग्राफ डेटा (नोड्स, एज, सारांश) |
105
+ | `venv-map.mmd` | मर्मेड आरेख स्रोत |
106
+ | `venv-map.html` | इंटरैक्टिव दर्शक |
107
+ | `reports.json` | कच्चे doctorLite रिपोर्ट |
108
+ | `insights.json` | कार्रवाई योग्य सिफारिशें |
109
+
110
+ ## प्रोग्रामेटिक उपयोग
111
+
112
+ ```typescript
113
+ import { doctorLite, scanEnvPaths, mapRender, readRunLog } from 'venvkit';
114
+
115
+ // Check a specific Python
116
+ const report = await doctorLite({
117
+ pythonPath: 'C:\\project\\.venv\\Scripts\\python.exe',
118
+ requiredModules: ['torch', 'transformers'],
119
+ httpsProbe: true,
120
+ });
121
+
122
+ console.log(report.status); // 'good' | 'warn' | 'bad'
123
+ console.log(report.score); // 0-100
124
+ console.log(report.findings); // Array of issues
125
+
126
+ // Scan for all Python environments
127
+ const scan = await scanEnvPaths({
128
+ roots: ['C:\\projects'],
129
+ maxDepth: 5,
130
+ });
131
+
132
+ // Run doctorLite on all found environments
133
+ const reports = await Promise.all(
134
+ scan.pythonPaths.map(p => doctorLite({ pythonPath: p }))
135
+ );
136
+
137
+ // Load task execution history
138
+ const runs = await readRunLog('.venvkit/runs.jsonl');
139
+
140
+ // Generate ecosystem visualization
141
+ const { graph, mermaid, insights } = mapRender(reports, runs, {
142
+ taskMode: 'clustered', // 'none' | 'runs' | 'clustered'
143
+ includeHotEdgeLabels: true,
144
+ });
145
+ ```
146
+
147
+ ## रन लॉग स्कीमा
148
+
149
+ JSONL फ़ाइल में घटनाओं को जोड़कर टास्क निष्पादन को ट्रैक करें:
150
+
151
+ ```typescript
152
+ import { appendRunLog, newRunId } from 'venvkit';
153
+
154
+ await appendRunLog('.venvkit/runs.jsonl', {
155
+ version: '1.0',
156
+ runId: newRunId(),
157
+ at: new Date().toISOString(),
158
+ task: {
159
+ name: 'train',
160
+ command: 'python train.py --epochs 10',
161
+ requirements: { packages: ['torch', 'transformers'] },
162
+ },
163
+ selected: {
164
+ pythonPath: 'C:\\project\\.venv\\Scripts\\python.exe',
165
+ score: 95,
166
+ status: 'good',
167
+ },
168
+ outcome: {
169
+ ok: true,
170
+ exitCode: 0,
171
+ durationMs: 45000,
172
+ },
173
+ });
174
+ ```
175
+
176
+ ## टास्क क्लस्टरिंग
177
+
178
+ जब आपके पास कई टास्क रन होते हैं, तो venvkit उन्हें हस्ताक्षर द्वारा समूहीकृत करता है:
179
+
180
+ ```typescript
181
+ import { clusterRuns, isFlaky, getFailingEnvs } from 'venvkit';
182
+
183
+ const clusters = clusterRuns(runs);
184
+
185
+ for (const c of clusters) {
186
+ console.log(`${c.sig.name}: ${c.ok}/${c.runs} (${(c.successRate * 100).toFixed(0)}%)`);
187
+
188
+ if (isFlaky(c)) {
189
+ console.log(` WARNING: Flaky task!`);
190
+ const badEnvs = getFailingEnvs(c, 3);
191
+ console.log(` Failing most on: ${badEnvs.map(e => e.pythonPath).join(', ')}`);
192
+ }
193
+ }
194
+ ```
195
+
196
+ ## ग्राफ स्कीमा
197
+
198
+ `mapRender` आउटपुट एक स्थिर JSON स्कीमा का पालन करता है:
199
+
200
+ ```typescript
201
+ type GraphJSONv1 = {
202
+ version: '1.0';
203
+ generatedAt: string;
204
+ host: { os: string; arch: string; hostname: string };
205
+ summary: {
206
+ envCount: number;
207
+ baseCount: number;
208
+ taskCount: number;
209
+ healthy: number;
210
+ warning: number;
211
+ broken: number;
212
+ runsPassed: number;
213
+ runsFailed: number;
214
+ topIssues: Array<{ code: string; count: number; hint: string }>;
215
+ };
216
+ nodes: GraphNode[];
217
+ edges: GraphEdge[];
218
+ };
219
+ ```
220
+
221
+ ### नोड प्रकार
222
+
223
+ | प्रकार | विवरण |
224
+ |------|-------------|
225
+ | `base` | बेस पायथन इंटरप्रेटर (जैसे, `C:\Python311`) |
226
+ | `venv` | वर्चुअल एनवायरनमेंट |
227
+ | `task` | टास्क हस्ताक्षर (समूहीकृत रन) |
228
+
229
+ ### एज प्रकार
230
+
231
+ | प्रकार | विवरण |
232
+ |------|-------------|
233
+ | `USES_BASE` | venv → बेस संबंध |
234
+ | `ROUTES_TASK_TO` | टास्क → एनवायरनमेंट रूटिंग |
235
+ | `FAILED_RUN` | टास्क → एनवायरनमेंट विफलता (मर्मेड में डैश) |
236
+
237
+ ## खोज कोड
238
+
239
+ | कोड | गंभीरता | विवरण |
240
+ |------|----------|-------------|
241
+ | `SSL_BROKEN` | खराब | एसएसएल मॉड्यूल आयात करने में विफल रहता है |
242
+ | `CERT_STORE_FAIL` | चेतावनी | एचटीटीपीएस प्रमाणपत्र सत्यापन विफल रहता है |
243
+ | `DLL_LOAD_FAIL` | खराब | नेटिव एक्सटेंशन डीएलएल लोड करने में विफल रहता है |
244
+ | `ABI_MISMATCH` | खराब | बाइनरी असंगति (एआरएम/x86) |
245
+ | `PIP_MISSING` | चेतावनी | पिप उपलब्ध नहीं है |
246
+ | `PIP_CHECK_FAIL` | चेतावनी | निर्भरता संघर्ष का पता चला |
247
+ | `USER_SITE_LEAK` | चेतावनी | वर्चुअल एनवायरनमेंट में यूजर-साइट पैकेज सक्षम हैं |
248
+ | `PYTHONPATH_INJECTED` | चेतावनी | PYTHONPATH पर्यावरण चर सेट है |
249
+ | `ARCH_MISMATCH` | खराब | 64-बिट की आवश्यकता होने पर 32-बिट पायथन |
250
+ | `PYVENV_CFG_INVALID` | चेतावनी | टूटा हुआ या गुम pyvenv.cfg |
251
+
252
+ ## विकास
253
+
254
+ ```bash
255
+ npm install
256
+ npm run typecheck # Type check
257
+ npm run test # Run tests
258
+ npm run build # Build to dist/
259
+ ```
260
+
261
+ ## सुरक्षा और डेटा स्कोप
262
+
263
+ - **केवल पढ़ने की सुविधा वाला स्कैनिंग:** पायथन एग्जीक्यूटेबल फाइलें और pyvenv.cfg फाइलें पढ़ी जाती हैं, लेकिन उनमें कभी भी बदलाव नहीं किया जाता।
264
+ - **उप-प्रक्रियाएं:** यह `python` को नियंत्रित तर्कों के साथ चलाता है — कोई भी शेल निष्पादन नहीं होता।
265
+ - **नेटवर्क:** वैकल्पिक `--httpsProbe` विकल्प एसएसएल प्रमाणपत्रों का परीक्षण करता है — कोई अन्य आउटगोइंग अनुरोध नहीं होते।
266
+ - कोई भी डेटा एकत्र या भेजा नहीं जाता — पूर्ण नीति के लिए [SECURITY.md](SECURITY.md) देखें।
267
+
268
+ ## लाइसेंस
269
+
270
+ एमआईटी
271
+
272
+ ---
273
+
274
+ [MCP Tool Shop](https://mcp-tool-shop.github.io/) द्वारा निर्मित।
package/README.it.md ADDED
@@ -0,0 +1,274 @@
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
+ <p align="center">
6
+ <img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/venvkit/readme.png" alt="venvkit" width="400">
7
+ </p>
8
+
9
+ # venvkit
10
+
11
+ > Parte di [MCP Tool Shop](https://mcptoolshop.com)
12
+
13
+ <p align="center">
14
+ <a href="https://github.com/mcp-tool-shop-org/venvkit/actions/workflows/ci.yml"><img src="https://github.com/mcp-tool-shop-org/venvkit/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
15
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square" alt="License: MIT"></a>
16
+ <a href="https://mcp-tool-shop-org.github.io/venvkit/"><img src="https://img.shields.io/badge/Landing_Page-live-blue?style=flat-square" alt="Landing Page"></a>
17
+ <a href="https://www.npmjs.com/package/@mcptoolshop/venvkit"><img src="https://img.shields.io/npm/v/@mcptoolshop/venvkit?style=flat-square&color=cb3837" alt="npm version"></a>
18
+ </p>
19
+
20
+ **Kit di strumenti diagnostici per ambienti virtuali Python per i flussi di lavoro di machine learning su Windows.**
21
+
22
+ Scansiona il sistema alla ricerca di ambienti Python, diagnostica problemi di salute (SSL, DLL, incompatibilità ABI, perdite di percorsi), tiene traccia della cronologia di esecuzione delle attività, rileva attività instabili e genera una mappa dell'ecosistema.
23
+
24
+ ## Guida rapida
25
+
26
+ ```bash
27
+ git clone https://github.com/mcp-tool-shop-org/venvkit && cd venvkit
28
+ npm install && npm run build
29
+ node dist/map_cli.js --root C:\projects --httpsProbe
30
+ # Open .venvkit/venv-map.html in your browser
31
+ ```
32
+
33
+ ## Funzionalità
34
+
35
+ - **doctorLite** - Controllo rapido dello stato di salute per qualsiasi interprete Python
36
+ - Verifica SSL/TLS
37
+ - Errori di caricamento delle DLL (comuni con PyTorch/CUDA)
38
+ - Incompatibilità ABI (ARM vs x86)
39
+ - Controlli di sanità di pip
40
+ - Rilevamento di perdite di user-site e PYTHONPATH
41
+
42
+ - **scanEnvPaths** - Scopri tutti gli ambienti Python presenti nel tuo sistema
43
+ - Trova venv, ambienti conda, versioni pyenv, interpreti di base
44
+ - Profondità e filtri configurabili
45
+
46
+ - **mapRender** - Visualizza il tuo ecosistema Python
47
+ - Output JSON per l'uso programmatico
48
+ - Diagrammi Mermaid per la documentazione
49
+ - Raggruppamento degli interpreti di base con analisi del raggio di impatto
50
+ - Visualizzazione del routing delle attività
51
+
52
+ - **runLog** - Tieni traccia della cronologia di esecuzione delle attività
53
+ - Formato JSONL solo per l'aggiunta
54
+ - Registra quale ambiente ha eseguito quale attività
55
+ - Cattura successo/fallimento con classificazione degli errori
56
+
57
+ - **taskCluster** - Aggrega le esecuzioni delle attività per firma
58
+ - Rilevamento di attività instabili (pass/fail inconsistenti)
59
+ - Rilevamento di instabilità dipendente dall'ambiente
60
+ - Identificazione dei punti critici di errore
61
+ - Analisi della contaminazione (cause radice condivise)
62
+
63
+ ## Installazione
64
+
65
+ ```bash
66
+ npm install
67
+ npm run build
68
+ ```
69
+
70
+ ## Utilizzo della CLI
71
+
72
+ ```bash
73
+ # Scan current directory and generate ecosystem map
74
+ node dist/map_cli.js
75
+
76
+ # Scan specific directories
77
+ node dist/map_cli.js --root C:\projects --root D:\ml-experiments
78
+
79
+ # Include task run history
80
+ node dist/map_cli.js --runlog .venvkit/runs.jsonl
81
+
82
+ # Output options
83
+ node dist/map_cli.js --out ./output --minScore 50 --strict --httpsProbe
84
+ ```
85
+
86
+ ### Opzioni della CLI
87
+
88
+ | Flag | Descrizione |
89
+ |------|-------------|
90
+ | `--root, -r` | Directory da scansionare (è possibile specificarne più di una) |
91
+ | `--out` | Directory di output (predefinito: `.venvkit`) |
92
+ | `--maxDepth` | Profondità massima della directory da scansionare (predefinito: 5) |
93
+ | `--strict` | Abilita i controlli in modalità rigorosa |
94
+ | `--httpsProbe` | Testa la connettività HTTPS |
95
+ | `--minScore` | Filtra gli ambienti con un punteggio di salute inferiore a questo valore |
96
+ | `--concurrency` | Controlli paralleli (predefinito: numero di core della CPU) |
97
+ | `--runlog` | Percorso del file di log delle esecuzioni delle attività (JSONL) |
98
+ | `--no-tasks` | Salta la visualizzazione delle attività |
99
+
100
+ ### Output
101
+
102
+ | File | Descrizione |
103
+ |------|-------------|
104
+ | `venv-map.json` | Dati completi del grafico (nodi, archi, riepilogo) |
105
+ | `venv-map.mmd` | Codice sorgente del diagramma Mermaid |
106
+ | `venv-map.html` | Visualizzatore interattivo |
107
+ | `reports.json` | Report dettagliati di doctorLite |
108
+ | `insights.json` | Raccomandazioni attuabili |
109
+
110
+ ## Utilizzo programmatico
111
+
112
+ ```typescript
113
+ import { doctorLite, scanEnvPaths, mapRender, readRunLog } from 'venvkit';
114
+
115
+ // Check a specific Python
116
+ const report = await doctorLite({
117
+ pythonPath: 'C:\\project\\.venv\\Scripts\\python.exe',
118
+ requiredModules: ['torch', 'transformers'],
119
+ httpsProbe: true,
120
+ });
121
+
122
+ console.log(report.status); // 'good' | 'warn' | 'bad'
123
+ console.log(report.score); // 0-100
124
+ console.log(report.findings); // Array of issues
125
+
126
+ // Scan for all Python environments
127
+ const scan = await scanEnvPaths({
128
+ roots: ['C:\\projects'],
129
+ maxDepth: 5,
130
+ });
131
+
132
+ // Run doctorLite on all found environments
133
+ const reports = await Promise.all(
134
+ scan.pythonPaths.map(p => doctorLite({ pythonPath: p }))
135
+ );
136
+
137
+ // Load task execution history
138
+ const runs = await readRunLog('.venvkit/runs.jsonl');
139
+
140
+ // Generate ecosystem visualization
141
+ const { graph, mermaid, insights } = mapRender(reports, runs, {
142
+ taskMode: 'clustered', // 'none' | 'runs' | 'clustered'
143
+ includeHotEdgeLabels: true,
144
+ });
145
+ ```
146
+
147
+ ## Schema del file di log
148
+
149
+ Tieni traccia delle esecuzioni delle attività aggiungendo eventi a un file JSONL:
150
+
151
+ ```typescript
152
+ import { appendRunLog, newRunId } from 'venvkit';
153
+
154
+ await appendRunLog('.venvkit/runs.jsonl', {
155
+ version: '1.0',
156
+ runId: newRunId(),
157
+ at: new Date().toISOString(),
158
+ task: {
159
+ name: 'train',
160
+ command: 'python train.py --epochs 10',
161
+ requirements: { packages: ['torch', 'transformers'] },
162
+ },
163
+ selected: {
164
+ pythonPath: 'C:\\project\\.venv\\Scripts\\python.exe',
165
+ score: 95,
166
+ status: 'good',
167
+ },
168
+ outcome: {
169
+ ok: true,
170
+ exitCode: 0,
171
+ durationMs: 45000,
172
+ },
173
+ });
174
+ ```
175
+
176
+ ## Raggruppamento delle attività
177
+
178
+ Quando si hanno molte esecuzioni di attività, venvkit le raggruppa per firma:
179
+
180
+ ```typescript
181
+ import { clusterRuns, isFlaky, getFailingEnvs } from 'venvkit';
182
+
183
+ const clusters = clusterRuns(runs);
184
+
185
+ for (const c of clusters) {
186
+ console.log(`${c.sig.name}: ${c.ok}/${c.runs} (${(c.successRate * 100).toFixed(0)}%)`);
187
+
188
+ if (isFlaky(c)) {
189
+ console.log(` WARNING: Flaky task!`);
190
+ const badEnvs = getFailingEnvs(c, 3);
191
+ console.log(` Failing most on: ${badEnvs.map(e => e.pythonPath).join(', ')}`);
192
+ }
193
+ }
194
+ ```
195
+
196
+ ## Schema del grafico
197
+
198
+ L'output di `mapRender` segue uno schema JSON stabile:
199
+
200
+ ```typescript
201
+ type GraphJSONv1 = {
202
+ version: '1.0';
203
+ generatedAt: string;
204
+ host: { os: string; arch: string; hostname: string };
205
+ summary: {
206
+ envCount: number;
207
+ baseCount: number;
208
+ taskCount: number;
209
+ healthy: number;
210
+ warning: number;
211
+ broken: number;
212
+ runsPassed: number;
213
+ runsFailed: number;
214
+ topIssues: Array<{ code: string; count: number; hint: string }>;
215
+ };
216
+ nodes: GraphNode[];
217
+ edges: GraphEdge[];
218
+ };
219
+ ```
220
+
221
+ ### Tipi di nodo
222
+
223
+ | Tipo | Descrizione |
224
+ |------|-------------|
225
+ | `base` | Interprete Python di base (es. `C:\Python311`) |
226
+ | `venv` | Ambiente virtuale |
227
+ | `task` | Firma dell'attività (esecuzioni raggruppate) |
228
+
229
+ ### Tipi di arco
230
+
231
+ | Tipo | Descrizione |
232
+ |------|-------------|
233
+ | `USES_BASE` | Relazione venv → interprete di base |
234
+ | `ROUTES_TASK_TO` | Routing attività → ambiente |
235
+ | `FAILED_RUN` | Errore attività → ambiente (tratteggiato in Mermaid) |
236
+
237
+ ## Codici di errore
238
+
239
+ | Codice | Gravità | Descrizione |
240
+ |------|----------|-------------|
241
+ | `SSL_BROKEN` | bad | Il modulo SSL non riesce a essere importato |
242
+ | `CERT_STORE_FAIL` | warn | La verifica del certificato HTTPS non riesce |
243
+ | `DLL_LOAD_FAIL` | bad | Caricamento della DLL dell'estensione nativa non riesce |
244
+ | `ABI_MISMATCH` | bad | Incompatibilità binaria (ARM/x86) |
245
+ | `PIP_MISSING` | warn | pip non disponibile |
246
+ | `PIP_CHECK_FAIL` | warn | Conflitti di dipendenze rilevati |
247
+ | `USER_SITE_LEAK` | warn | user-site-packages abilitato nell'ambiente virtuale |
248
+ | `PYTHONPATH_INJECTED` | warn | Variabile d'ambiente PYTHONPATH impostata |
249
+ | `ARCH_MISMATCH` | bad | Python a 32 bit quando è richiesto a 64 bit |
250
+ | `PYVENV_CFG_INVALID` | warn | pyvenv.cfg danneggiato o mancante |
251
+
252
+ ## Sviluppo
253
+
254
+ ```bash
255
+ npm install
256
+ npm run typecheck # Type check
257
+ npm run test # Run tests
258
+ npm run build # Build to dist/
259
+ ```
260
+
261
+ ## Sicurezza e ambito dei dati
262
+
263
+ - **Scansolo in lettura:** I file eseguibili Python e il file pyvenv.cfg vengono letti, ma mai modificati.
264
+ - **Sottoprocessi:** avvia `python` con argomenti controllati, senza l'esecuzione tramite shell.
265
+ - **Rete:** l'opzione `--httpsProbe` (facoltativa) verifica i certificati SSL, ma non vengono effettuate altre richieste in uscita.
266
+ - **Nessun dato di telemetria** viene raccolto o trasmesso; consultare il file [SECURITY.md](SECURITY.md) per la politica completa.
267
+
268
+ ## Licenza
269
+
270
+ MIT
271
+
272
+ ---
273
+
274
+ Creato da [MCP Tool Shop](https://mcp-tool-shop.github.io/)