@mcptoolshop/venvkit 0.2.5 → 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.
Files changed (73) hide show
  1. package/README.es.md +143 -132
  2. package/README.fr.md +143 -132
  3. package/README.hi.md +143 -136
  4. package/README.it.md +143 -132
  5. package/README.ja.md +143 -132
  6. package/README.md +15 -4
  7. package/README.pt-BR.md +143 -132
  8. package/README.zh.md +143 -132
  9. package/dist/doctorLite.d.ts +75 -0
  10. package/dist/doctorLite.d.ts.map +1 -0
  11. package/dist/doctorLite.js +705 -0
  12. package/dist/doctorLite.js.map +1 -0
  13. package/dist/doctorLite.test.d.ts +2 -0
  14. package/dist/doctorLite.test.d.ts.map +1 -0
  15. package/dist/doctorLite.test.js +268 -0
  16. package/dist/doctorLite.test.js.map +1 -0
  17. package/dist/index.d.ts +6 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +6 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/integration.test.d.ts +2 -0
  22. package/dist/integration.test.d.ts.map +1 -0
  23. package/dist/integration.test.js +245 -0
  24. package/dist/integration.test.js.map +1 -0
  25. package/dist/mapRender.d.ts +105 -0
  26. package/dist/mapRender.d.ts.map +1 -0
  27. package/dist/mapRender.js +718 -0
  28. package/dist/mapRender.js.map +1 -0
  29. package/dist/mapRender.test.d.ts +2 -0
  30. package/dist/mapRender.test.d.ts.map +1 -0
  31. package/dist/mapRender.test.js +571 -0
  32. package/dist/mapRender.test.js.map +1 -0
  33. package/dist/map_cli.d.ts +3 -0
  34. package/dist/map_cli.d.ts.map +1 -0
  35. package/dist/map_cli.js +278 -0
  36. package/dist/map_cli.js.map +1 -0
  37. package/dist/map_cli.test.d.ts +2 -0
  38. package/dist/map_cli.test.d.ts.map +1 -0
  39. package/dist/map_cli.test.js +320 -0
  40. package/dist/map_cli.test.js.map +1 -0
  41. package/dist/runLog.d.ts +71 -0
  42. package/dist/runLog.d.ts.map +1 -0
  43. package/dist/runLog.js +98 -0
  44. package/dist/runLog.js.map +1 -0
  45. package/dist/runLog.test.d.ts +2 -0
  46. package/dist/runLog.test.d.ts.map +1 -0
  47. package/dist/runLog.test.js +327 -0
  48. package/dist/runLog.test.js.map +1 -0
  49. package/dist/scanEnvPaths.d.ts +18 -0
  50. package/dist/scanEnvPaths.d.ts.map +1 -0
  51. package/dist/scanEnvPaths.js +177 -0
  52. package/dist/scanEnvPaths.js.map +1 -0
  53. package/dist/scanEnvPaths.test.d.ts +2 -0
  54. package/dist/scanEnvPaths.test.d.ts.map +1 -0
  55. package/dist/scanEnvPaths.test.js +250 -0
  56. package/dist/scanEnvPaths.test.js.map +1 -0
  57. package/dist/taskCluster.d.ts +62 -0
  58. package/dist/taskCluster.d.ts.map +1 -0
  59. package/dist/taskCluster.js +180 -0
  60. package/dist/taskCluster.js.map +1 -0
  61. package/dist/taskCluster.test.d.ts +2 -0
  62. package/dist/taskCluster.test.d.ts.map +1 -0
  63. package/dist/taskCluster.test.js +375 -0
  64. package/dist/taskCluster.test.js.map +1 -0
  65. package/dist/vitest.config.d.ts +3 -0
  66. package/dist/vitest.config.d.ts.map +1 -0
  67. package/dist/vitest.config.js +26 -0
  68. package/dist/vitest.config.js.map +1 -0
  69. package/dist/windows.test.d.ts +6 -0
  70. package/dist/windows.test.d.ts.map +1 -0
  71. package/dist/windows.test.js +121 -0
  72. package/dist/windows.test.js.map +1 -0
  73. package/package.json +6 -2
package/README.md CHANGED
@@ -1,7 +1,7 @@
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
-
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.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/venvkit/readme.png" alt="venvkit" width="400">
7
7
  </p>
@@ -258,6 +258,17 @@ npm run test # Run tests
258
258
  npm run build # Build to dist/
259
259
  ```
260
260
 
261
+ ## Security & Data Scope
262
+
263
+ - **Read-only scanning:** Python executables and pyvenv.cfg are read but never modified
264
+ - **Subprocesses:** spawns `python` with controlled arguments — no shell execution
265
+ - **Network:** optional `--httpsProbe` tests SSL certificates — no other outbound requests
266
+ - **No telemetry** is collected or sent — see [SECURITY.md](SECURITY.md) for the full policy
267
+
261
268
  ## License
262
269
 
263
270
  MIT
271
+
272
+ ---
273
+
274
+ Built by [MCP Tool Shop](https://mcp-tool-shop.github.io/)
package/README.pt-BR.md CHANGED
@@ -1,74 +1,74 @@
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
-
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.it.md">Italiano</a> | <a href="README.md">English</a>
3
+ </p>
4
+
5
5
  <p align="center">
6
6
  <img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/venvkit/readme.png" alt="venvkit" width="400">
7
7
  </p>
8
-
9
- # venvkit
10
-
11
- > Parte de [MCP Tool Shop](https://mcptoolshop.com)
12
-
8
+
9
+ # venvkit
10
+
11
+ > Parte de [MCP Tool Shop](https://mcptoolshop.com)
12
+
13
13
  <p align="center">
14
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
15
  <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square" alt="License: MIT"></a>
16
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
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
18
  </p>
19
-
20
- **Kit de ferramentas de diagnóstico para ambientes virtuais Python em fluxos de trabalho de aprendizado de máquina (ML) para Windows.**
21
-
22
- Analisa seu sistema em busca de ambientes Python, diagnostica problemas de saúde (SSL, DLLs, incompatibilidades de ABI, vazamentos de caminho), rastreia o histórico de execução de tarefas, detecta tarefas instáveis e gera um mapa do ecossistema.
23
-
24
- ## Início rápido em 30 segundos
25
-
19
+
20
+ **Kit de ferramentas de diagnóstico para ambientes virtuais Python em fluxos de trabalho de aprendizado de máquina (ML) para Windows.**
21
+
22
+ Analisa seu sistema em busca de ambientes Python, diagnostica problemas de saúde (SSL, DLLs, incompatibilidades de ABI, vazamentos de caminhos), rastreia o histórico de execução de tarefas, detecta tarefas instáveis e gera um mapa do ecossistema.
23
+
24
+ ## Início rápido em 30 segundos
25
+
26
26
  ```bash
27
27
  git clone https://github.com/mcp-tool-shop-org/venvkit && cd venvkit
28
28
  npm install && npm run build
29
29
  node dist/map_cli.js --root C:\projects --httpsProbe
30
30
  # Open .venvkit/venv-map.html in your browser
31
31
  ```
32
-
33
- ## Recursos
34
-
35
- - **doctorLite** - Verificação rápida de saúde para qualquer interpretador Python
36
- - Verificação SSL/TLS
37
- - Falhas ao carregar DLLs (comum com PyTorch/CUDA)
38
- - Incompatibilidades de ABI (ARM vs x86)
39
- - Verificações de sanidade do pip
40
- - Detecção de vazamentos de user-site e PYTHONPATH
41
-
42
- - **scanEnvPaths** - Descobre todos os ambientes Python no seu sistema
43
- - Encontra venvs, ambientes conda, versões pyenv, interpretadores base
44
- - Profundidade e filtragem configuráveis
45
-
46
- - **mapRender** - Visualize seu ecossistema Python
47
- - Saída JSON para uso programático
48
- - Diagramas Mermaid para documentação
49
- - Agrupamento de interpretadores base com análise de raio de impacto
50
- - Visualização de roteamento de tarefas
51
-
52
- - **runLog** - Rastreia o histórico de execução de tarefas
53
- - Formato JSONL somente para anexar
54
- - Registra qual ambiente executou qual tarefa
55
- - Captura sucesso/falha com classificação de erro
56
-
57
- - **taskCluster** - Agrupa execuções de tarefas por assinatura
58
- - Detecção de tarefas instáveis (passagem/falha inconsistente)
59
- - Detecção de instabilidade dependente do ambiente
60
- - Identificação de pontos críticos de falha
61
- - Análise de contágio (causas-raiz compartilhadas)
62
-
63
- ## Instalação
64
-
32
+
33
+ ## Recursos
34
+
35
+ - **doctorLite** - Verificação rápida de saúde para qualquer interpretador Python
36
+ - Verificação SSL/TLS
37
+ - Falhas ao carregar DLLs (comum com PyTorch/CUDA)
38
+ - Incompatibilidades de ABI (ARM vs x86)
39
+ - Verificações de integridade do pip
40
+ - Detecção de vazamentos de user-site e PYTHONPATH
41
+
42
+ - **scanEnvPaths** - Descobre todos os ambientes Python no seu sistema
43
+ - Encontra venvs, ambientes conda, versões pyenv, interpretadores base
44
+ - Profundidade e filtragem configuráveis
45
+
46
+ - **mapRender** - Visualize seu ecossistema Python
47
+ - Saída JSON para uso programático
48
+ - Diagramas Mermaid para documentação
49
+ - Agrupamento de interpretadores base com análise de raio de impacto
50
+ - Visualização de roteamento de tarefas
51
+
52
+ - **runLog** - Rastreia o histórico de execução de tarefas
53
+ - Formato JSONL somente para anexar
54
+ - Registra qual ambiente executou qual tarefa
55
+ - Captura sucesso/falha com classificação de erro
56
+
57
+ - **taskCluster** - Agrupa execuções de tarefas por assinatura
58
+ - Detecção de tarefas instáveis (passagem/falha inconsistente)
59
+ - Detecção de instabilidade dependente do ambiente
60
+ - Identificação de pontos críticos de falha
61
+ - Análise de contágio (causas-raiz compartilhadas)
62
+
63
+ ## Instalação
64
+
65
65
  ```bash
66
66
  npm install
67
67
  npm run build
68
68
  ```
69
-
70
- ## Uso da CLI
71
-
69
+
70
+ ## Uso da CLI
71
+
72
72
  ```bash
73
73
  # Scan current directory and generate ecosystem map
74
74
  node dist/map_cli.js
@@ -82,33 +82,33 @@ node dist/map_cli.js --runlog .venvkit/runs.jsonl
82
82
  # Output options
83
83
  node dist/map_cli.js --out ./output --minScore 50 --strict --httpsProbe
84
84
  ```
85
-
86
- ### Opções da CLI
87
-
88
- | Flag | Descrição |
89
- | ------ | ------------- |
90
- | `--root, -r` | Diretório a ser analisado (pode especificar vários) |
91
- | `--out` | Diretório de saída (padrão: `.venvkit`) |
92
- | `--maxDepth` | Profundidade máxima do diretório a ser analisado (padrão: 5) |
93
- | `--strict` | Habilita verificações de modo estrito |
94
- | `--httpsProbe` | Testa a conectividade HTTPS |
95
- | `--minScore` | Filtra ambientes abaixo desta pontuação de saúde |
96
- | `--concurrency` | Verificações paralelas (padrão: número de núcleos da CPU) |
97
- | `--runlog` | Caminho para o registro de execução da tarefa (JSONL) |
98
- | `--no-tasks` | Ignora a visualização da tarefa |
99
-
100
- ### Saídas
101
-
102
- | File | Descrição |
103
- | ------ | ------------- |
104
- | `venv-map.json` | Dados completos do gráfico (nós, arestas, resumo) |
105
- | `venv-map.mmd` | Fonte do diagrama Mermaid |
106
- | `venv-map.html` | Visualizador interativo |
107
- | `reports.json` | Relatórios raw do doctorLite |
108
- | `insights.json` | Recomendações acionáveis |
109
-
110
- ## Uso programático
111
-
85
+
86
+ ### Opções da CLI
87
+
88
+ | Flag | Descrição |
89
+ |------|-------------|
90
+ | `--root, -r` | Diretório a ser analisado (pode especificar vários) |
91
+ | `--out` | Diretório de saída (padrão: `.venvkit`) |
92
+ | `--maxDepth` | Profundidade máxima do diretório a ser analisado (padrão: 5) |
93
+ | `--strict` | Habilita verificações de modo estrito |
94
+ | `--httpsProbe` | Testa a conectividade HTTPS |
95
+ | `--minScore` | Filtra ambientes abaixo desta pontuação de saúde |
96
+ | `--concurrency` | Verificações paralelas (padrão: número de CPUs) |
97
+ | `--runlog` | Caminho para o registro de execução da tarefa (JSONL) |
98
+ | `--no-tasks` | Ignora a visualização da tarefa |
99
+
100
+ ### Saídas
101
+
102
+ | Arquivo | Descrição |
103
+ |------|-------------|
104
+ | `venv-map.json` | Dados completos do gráfico (nós, arestas, resumo) |
105
+ | `venv-map.mmd` | Fonte do diagrama Mermaid |
106
+ | `venv-map.html` | Visualizador interativo |
107
+ | `reports.json` | Relatórios raw do doctorLite |
108
+ | `insights.json` | Recomendações acionáveis |
109
+
110
+ ## Uso Programático
111
+
112
112
  ```typescript
113
113
  import { doctorLite, scanEnvPaths, mapRender, readRunLog } from 'venvkit';
114
114
 
@@ -143,11 +143,11 @@ const { graph, mermaid, insights } = mapRender(reports, runs, {
143
143
  includeHotEdgeLabels: true,
144
144
  });
145
145
  ```
146
-
147
- ## Esquema do Registro de Tarefas
148
-
149
- Rastreie as execuções de tarefas anexando eventos a um arquivo JSONL:
150
-
146
+
147
+ ## Esquema do Registro de Tarefas
148
+
149
+ Rastreie as execuções de tarefas anexando eventos a um arquivo JSONL:
150
+
151
151
  ```typescript
152
152
  import { appendRunLog, newRunId } from 'venvkit';
153
153
 
@@ -172,11 +172,11 @@ await appendRunLog('.venvkit/runs.jsonl', {
172
172
  },
173
173
  });
174
174
  ```
175
-
176
- ## Agrupamento de Tarefas
177
-
178
- Quando você tem muitas execuções de tarefas, o venvkit as agrupa por assinatura:
179
-
175
+
176
+ ## Agrupamento de Tarefas
177
+
178
+ Quando você tem muitas execuções de tarefas, o venvkit as agrupa por assinatura:
179
+
180
180
  ```typescript
181
181
  import { clusterRuns, isFlaky, getFailingEnvs } from 'venvkit';
182
182
 
@@ -192,11 +192,11 @@ for (const c of clusters) {
192
192
  }
193
193
  }
194
194
  ```
195
-
196
- ## Esquema do Gráfico
197
-
198
- A saída do `mapRender` segue um esquema JSON estável:
199
-
195
+
196
+ ## Esquema do Gráfico
197
+
198
+ A saída do `mapRender` segue um esquema JSON estável:
199
+
200
200
  ```typescript
201
201
  type GraphJSONv1 = {
202
202
  version: '1.0';
@@ -217,47 +217,58 @@ type GraphJSONv1 = {
217
217
  edges: GraphEdge[];
218
218
  };
219
219
  ```
220
-
221
- ### Tipos de Nós
222
-
223
- | Type | Descrição |
224
- | ------ | ------------- |
225
- | `base` | Interpretador Python base (por exemplo, `C:\Python311`) |
226
- | `venv` | Ambiente virtual |
227
- | `task` | Assinatura da tarefa (execuções agrupadas) |
228
-
229
- ### Tipos de Arestas
230
-
231
- | Type | Descrição |
232
- | ------ | ------------- |
233
- | `USES_BASE` | Relacionamento venv → base |
234
- | `ROUTES_TASK_TO` | Roteamento de tarefa → ambiente |
235
- | `FAILED_RUN` | Falha de tarefa → ambiente (tracejado em Mermaid) |
236
-
237
- ## Códigos de Erro
238
-
239
- | Code | Severidade | Descrição |
240
- | ------ | ---------- | ------------- |
241
- | `SSL_BROKEN` | bad | O módulo SSL falha ao importar |
242
- | `CERT_STORE_FAIL` | warn | A verificação do certificado HTTPS falha |
243
- | `DLL_LOAD_FAIL` | bad | A carga da DLL de extensão nativa falha |
244
- | `ABI_MISMATCH` | bad | Incompatibilidade binária (ARM/x86) |
245
- | `PIP_MISSING` | warn | pip não disponível |
246
- | `PIP_CHECK_FAIL` | warn | Conflitos de dependência detectados |
247
- | `USER_SITE_LEAK` | warn | Pacotes do usuário habilitados no ambiente virtual. |
248
- | `PYTHONPATH_INJECTED` | warn | Variável de ambiente PYTHONPATH definida. |
249
- | `ARCH_MISMATCH` | bad | Versão de 32 bits do Python quando a versão de 64 bits é necessária. |
250
- | `PYVENV_CFG_INVALID` | warn | Arquivo pyvenv.cfg corrompido ou ausente. |
251
-
252
- ## Desenvolvimento
253
-
220
+
221
+ ### Tipos de Nós
222
+
223
+ | Tipo | Descrição |
224
+ |------|-------------|
225
+ | `base` | Interpretador Python base (por exemplo, `C:\Python311`) |
226
+ | `venv` | Ambiente virtual |
227
+ | `task` | Assinatura da tarefa (execuções agrupadas) |
228
+
229
+ ### Tipos de Arestas
230
+
231
+ | Tipo | Descrição |
232
+ |------|-------------|
233
+ | `USES_BASE` | Relacionamento venv → base |
234
+ | `ROUTES_TASK_TO` | Roteamento de tarefa → ambiente |
235
+ | `FAILED_RUN` | Falha de tarefa → ambiente (tracejado em Mermaid) |
236
+
237
+ ## Códigos de Erro
238
+
239
+ | Código | Severidade | Descrição |
240
+ |------|----------|-------------|
241
+ | `SSL_BROKEN` | bad | O módulo SSL falha ao importar |
242
+ | `CERT_STORE_FAIL` | warn | A verificação do certificado HTTPS falha |
243
+ | `DLL_LOAD_FAIL` | bad | Falha ao carregar DLL de extensão nativa |
244
+ | `ABI_MISMATCH` | bad | Incompatibilidade binária (ARM/x86) |
245
+ | `PIP_MISSING` | warn | pip não disponível |
246
+ | `PIP_CHECK_FAIL` | warn | Conflitos de dependência detectados |
247
+ | `USER_SITE_LEAK` | warn | user-site-packages habilitado no venv |
248
+ | `PYTHONPATH_INJECTED` | warn | Variável de ambiente PYTHONPATH definida |
249
+ | `ARCH_MISMATCH` | bad | Python de 32 bits quando 64 bits são necessários |
250
+ | `PYVENV_CFG_INVALID` | warn | pyvenv.cfg corrompido ou ausente |
251
+
252
+ ## Desenvolvimento
253
+
254
254
  ```bash
255
255
  npm install
256
256
  npm run typecheck # Type check
257
257
  npm run test # Run tests
258
258
  npm run build # Build to dist/
259
259
  ```
260
-
261
- ## Licença
262
-
263
- MIT.
260
+
261
+ ## Segurança e Escopo de Dados
262
+
263
+ - **Leitura apenas:** Os executáveis Python e o arquivo pyvenv.cfg são lidos, mas nunca modificados.
264
+ - **Subprocessos:** Inicia o `python` com argumentos controlados — sem execução via shell.
265
+ - **Rede:** A opção `--httpsProbe` (opcional) testa certificados SSL — não são feitas outras requisições de saída.
266
+ - **Nenhuma telemetria** é coletada ou enviada — consulte o arquivo [SECURITY.md](SECURITY.md) para a política completa.
267
+
268
+ ## Licença
269
+
270
+ MIT
271
+
272
+ ---
273
+
274
+ Criado por [MCP Tool Shop](https://mcp-tool-shop.github.io/)