@mcptoolshop/venvkit 0.2.0 → 0.2.5

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 (69) hide show
  1. package/README.es.md +263 -0
  2. package/README.fr.md +263 -0
  3. package/README.hi.md +267 -0
  4. package/README.it.md +263 -0
  5. package/README.ja.md +263 -0
  6. package/README.md +17 -3
  7. package/README.pt-BR.md +263 -0
  8. package/README.zh.md +263 -0
  9. package/package.json +69 -58
  10. package/dist/doctorLite.d.ts +0 -75
  11. package/dist/doctorLite.d.ts.map +0 -1
  12. package/dist/doctorLite.js +0 -705
  13. package/dist/doctorLite.js.map +0 -1
  14. package/dist/doctorLite.test.d.ts +0 -2
  15. package/dist/doctorLite.test.d.ts.map +0 -1
  16. package/dist/doctorLite.test.js +0 -268
  17. package/dist/doctorLite.test.js.map +0 -1
  18. package/dist/index.d.ts +0 -6
  19. package/dist/index.d.ts.map +0 -1
  20. package/dist/index.js +0 -6
  21. package/dist/index.js.map +0 -1
  22. package/dist/integration.test.d.ts +0 -2
  23. package/dist/integration.test.d.ts.map +0 -1
  24. package/dist/integration.test.js +0 -245
  25. package/dist/integration.test.js.map +0 -1
  26. package/dist/mapRender.d.ts +0 -105
  27. package/dist/mapRender.d.ts.map +0 -1
  28. package/dist/mapRender.js +0 -718
  29. package/dist/mapRender.js.map +0 -1
  30. package/dist/mapRender.test.d.ts +0 -2
  31. package/dist/mapRender.test.d.ts.map +0 -1
  32. package/dist/mapRender.test.js +0 -571
  33. package/dist/mapRender.test.js.map +0 -1
  34. package/dist/map_cli.d.ts +0 -3
  35. package/dist/map_cli.d.ts.map +0 -1
  36. package/dist/map_cli.js +0 -278
  37. package/dist/map_cli.js.map +0 -1
  38. package/dist/map_cli.test.d.ts +0 -2
  39. package/dist/map_cli.test.d.ts.map +0 -1
  40. package/dist/map_cli.test.js +0 -276
  41. package/dist/map_cli.test.js.map +0 -1
  42. package/dist/runLog.d.ts +0 -71
  43. package/dist/runLog.d.ts.map +0 -1
  44. package/dist/runLog.js +0 -98
  45. package/dist/runLog.js.map +0 -1
  46. package/dist/runLog.test.d.ts +0 -2
  47. package/dist/runLog.test.d.ts.map +0 -1
  48. package/dist/runLog.test.js +0 -327
  49. package/dist/runLog.test.js.map +0 -1
  50. package/dist/scanEnvPaths.d.ts +0 -18
  51. package/dist/scanEnvPaths.d.ts.map +0 -1
  52. package/dist/scanEnvPaths.js +0 -174
  53. package/dist/scanEnvPaths.js.map +0 -1
  54. package/dist/scanEnvPaths.test.d.ts +0 -2
  55. package/dist/scanEnvPaths.test.d.ts.map +0 -1
  56. package/dist/scanEnvPaths.test.js +0 -250
  57. package/dist/scanEnvPaths.test.js.map +0 -1
  58. package/dist/taskCluster.d.ts +0 -62
  59. package/dist/taskCluster.d.ts.map +0 -1
  60. package/dist/taskCluster.js +0 -180
  61. package/dist/taskCluster.js.map +0 -1
  62. package/dist/taskCluster.test.d.ts +0 -2
  63. package/dist/taskCluster.test.d.ts.map +0 -1
  64. package/dist/taskCluster.test.js +0 -375
  65. package/dist/taskCluster.test.js.map +0 -1
  66. package/dist/vitest.config.d.ts +0 -3
  67. package/dist/vitest.config.d.ts.map +0 -1
  68. package/dist/vitest.config.js +0 -8
  69. package/dist/vitest.config.js.map +0 -1
package/README.hi.md ADDED
@@ -0,0 +1,267 @@
1
+ <p align="center">
2
+ <a href="README.md">English</a> | <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.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 टूल शॉप](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
+ - **डॉक्टरलाइट** - किसी भी पायथन इंटरप्रेटर के लिए त्वरित स्वास्थ्य जांच।
36
+ - एसएसएल/टीएलएस सत्यापन।
37
+ - डीएलएल लोड होने में विफलता (पायटॉर्च/CUDA के साथ आम)।
38
+ - एबीआई (एप्लिकेशन बाइनरी इंटरफेस) में असंगति (एआरएम बनाम एक्स86)।
39
+ - पिप की बुनियादी जांच।
40
+ - उपयोगकर्ता साइट और PYTHONPATH से संबंधित समस्याओं का पता लगाना।
41
+
42
+ - **scanEnvPaths** - आपके सिस्टम पर मौजूद सभी पाइथन वातावरणों की खोज करें।
43
+ - यह वर्चुअल एनवायरनमेंट (venv), कोंडा एनवायरनमेंट, पायएनव संस्करण और बेस इंटरप्रेटर को ढूंढता है।
44
+ - इसकी गहराई और फ़िल्टरिंग को अनुकूलित किया जा सकता है।
45
+
46
+ - **मैप रेंडर (mapRender)** - अपने पाइथन इकोसिस्टम को दृश्यमान बनाएं।
47
+ - प्रोग्रामेटिक उपयोग के लिए ग्राफ जेएसओएन आउटपुट।
48
+ - दस्तावेज़ों के लिए मर्मेड आरेख।
49
+ - बेस इंटरप्रेटर समूहों का वर्गीकरण और संभावित प्रभाव विश्लेषण।
50
+ - कार्य रूटिंग का दृश्य प्रदर्शन।
51
+
52
+ - **रन लॉग (runLog)** - कार्यों के निष्पादन इतिहास को ट्रैक करता है।
53
+ - यह केवल डेटा जोड़ने की अनुमति देने वाले JSONL प्रारूप में होता है।
54
+ - यह रिकॉर्ड करता है कि किस वातावरण में कौन सा कार्य चलाया गया था।
55
+ - यह सफलता/विफलता को त्रुटि वर्गीकरण के साथ दर्ज करता है।
56
+
57
+ - **टास्कक्लस्टर:** हस्ताक्षर के आधार पर कार्यों के परिणामों का एकत्रीकरण।
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
+ | Flag | विवरण। |
89
+ | "Please provide the English text you would like me to translate into Hindi." | कृपया वह अंग्रेजी पाठ प्रदान करें जिसका आप हिंदी में अनुवाद करवाना चाहते हैं। |
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
+ | File | विवरण। |
103
+ | "Please provide the English text you would like me to translate into Hindi." | कृपया वह अंग्रेजी पाठ प्रदान करें जिसका आप हिंदी में अनुवाद करवाना चाहते हैं। |
104
+ | `venv-map.json` | पूरा ग्राफ डेटा (नोड, किनारे, सारांश)। |
105
+ | `venv-map.mmd` | मर्मेड आरेख का स्रोत। |
106
+ | `venv-map.html` | इंटरैक्टिव दर्शक। |
107
+ | `reports.json` | अद्यतित डॉक्टरलाइट रिपोर्ट (बिना किसी प्रसंस्करण के)। |
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
+ | Type | विवरण। |
224
+ | "The quick brown fox jumps over the lazy dog."
225
+
226
+ "तेज़ भूरी लोमड़ी आलसी कुत्ते के ऊपर से कूदती है।" | कृपया वह अंग्रेजी पाठ प्रदान करें जिसका आप हिंदी में अनुवाद करवाना चाहते हैं। मैं उसका सटीक और उचित अनुवाद करने के लिए तैयार हूं। |
227
+ | `base` | पायथन इंटरप्रेटर का मूल संस्करण (उदाहरण के लिए, `C:\Python311`)। |
228
+ | `venv` | वर्चुअल वातावरण। |
229
+ | `task` | कार्य हस्ताक्षर (समूहीकृत रन)। |
230
+
231
+ ### किनारों के प्रकार।
232
+
233
+ | Type | विवरण। |
234
+ | "The quick brown fox jumps over the lazy dog."
235
+
236
+ "तेज़ भूरी लोमड़ी आलसी कुत्ते के ऊपर से कूदती है।" | कृपया वह अंग्रेजी पाठ प्रदान करें जिसका आप हिंदी में अनुवाद करवाना चाहते हैं। |
237
+ | `USES_BASE` | "venv" और "बेस" के बीच का संबंध। |
238
+ | `ROUTES_TASK_TO` | कार्य → पर्यावरण रूटिंग |
239
+ | `FAILED_RUN` | कार्य → पर्यावरण विफलता (मर्मेड आरेख में डैश के साथ दर्शाया गया) |
240
+
241
+ ## कोड्स खोजना।
242
+
243
+ | Code | गंभीरता। | विवरण। |
244
+ | "Please provide the English text you would like me to translate into Hindi." | ज़रूर, मैं आपकी मदद कर सकता हूँ। कृपया वह अंग्रेजी पाठ प्रदान करें जिसका आप हिंदी में अनुवाद करवाना चाहते हैं। | कृपया वह अंग्रेजी पाठ प्रदान करें जिसका आप हिंदी में अनुवाद करवाना चाहते हैं। |
245
+ | `SSL_BROKEN` | bad | एसएसएल मॉड्यूल आयात करने में विफल हो रहा है। |
246
+ | `CERT_STORE_FAIL` | warn | एचटीटीपीएस प्रमाणपत्र की जांच में त्रुटि हुई। |
247
+ | `DLL_LOAD_FAIL` | bad | मूल एक्सटेंशन डीएलएल (DLL) को लोड करने में विफलता। |
248
+ | `ABI_MISMATCH` | bad | बाइनरी असंगति (एआरएम/एक्स86) |
249
+ | `PIP_MISSING` | warn | "पिप" उपलब्ध नहीं है। |
250
+ | `PIP_CHECK_FAIL` | warn | निर्भरता संबंधी टकराव पाए गए। |
251
+ | `USER_SITE_LEAK` | warn | उपयोगकर्ता साइट-पैकेजों को वर्चुअल एनवायरनमेंट में सक्षम किया गया है। |
252
+ | `PYTHONPATH_INJECTED` | warn | PYTHONPATH पर्यावरण चर सेट है। |
253
+ | `ARCH_MISMATCH` | bad | 64-बिट सिस्टम पर 32-बिट पाइथन का उपयोग किया जा रहा है, जबकि 64-बिट की आवश्यकता है। |
254
+ | `PYVENV_CFG_INVALID` | warn | pyvenv.cfg फ़ाइल क्षतिग्रस्त है या गायब है। |
255
+
256
+ ## विकास।
257
+
258
+ ```bash
259
+ npm install
260
+ npm run typecheck # Type check
261
+ npm run test # Run tests
262
+ npm run build # Build to dist/
263
+ ```
264
+
265
+ ## लाइसेंस।
266
+
267
+ एमआईटी।
package/README.it.md ADDED
@@ -0,0 +1,263 @@
1
+ <p align="center">
2
+ <a href="README.md">English</a> | <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.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
+ > 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 ambienti virtuali (venv), ambienti conda, versioni pyenv, interpreti di base
44
+ - Profondità e filtri configurabili
45
+
46
+ - **mapRender** - Visualizza l'ecosistema Python
47
+ - Output in formato 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 di dati
54
+ - Registra quale ambiente ha eseguito quale attività
55
+ - Cattura successo/fallimento con classificazione degli errori
56
+
57
+ - **taskCluster** - Aggrega le esecuzioni delle attività in base alla firma
58
+ - Rilevamento di attività instabili (passaggi/fallimenti 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 delle 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 registro 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 raw 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 registro delle attività
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 in base alla 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
+ | Type | Descrizione |
224
+ | ------ | ------------- |
225
+ | `base` | Interprete Python di base (ad esempio, `C:\Python311`) |
226
+ | `venv` | Ambiente virtuale |
227
+ | `task` | Firma dell'attività (esecuzioni raggruppate) |
228
+
229
+ ### Tipi di arco
230
+
231
+ | Type | Descrizione |
232
+ | ------ | ------------- |
233
+ | `USES_BASE` | Relazione venv → base |
234
+ | `ROUTES_TASK_TO` | Routing attività → ambiente |
235
+ | `FAILED_RUN` | Errore attività → ambiente (tratteggiato nei diagrammi Mermaid) |
236
+
237
+ ## Codici di errore
238
+
239
+ | Code | Gravità | Descrizione |
240
+ | ------ | ---------- | ------------- |
241
+ | `SSL_BROKEN` | bad | Impossibile importare il modulo SSL |
242
+ | `CERT_STORE_FAIL` | warn | La verifica del certificato HTTPS non riesce |
243
+ | `DLL_LOAD_FAIL` | bad | Impossibile caricare la DLL dell'estensione nativa |
244
+ | `ABI_MISMATCH` | bad | Incompatibilità binaria (ARM/x86) |
245
+ | `PIP_MISSING` | warn | pip non disponibile |
246
+ | `PIP_CHECK_FAIL` | warn | Rilevati conflitti di dipendenze |
247
+ | `USER_SITE_LEAK` | warn | I pacchetti utente sono abilitati nell'ambiente virtuale. |
248
+ | `PYTHONPATH_INJECTED` | warn | Variabile d'ambiente PYTHONPATH impostata. |
249
+ | `ARCH_MISMATCH` | bad | Versione a 32 bit di Python quando è richiesta la versione a 64 bit. |
250
+ | `PYVENV_CFG_INVALID` | warn | File pyvenv.cfg corrotto 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
+ ## Licenza
262
+
263
+ MIT.