@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.
- package/README.es.md +143 -132
- package/README.fr.md +143 -132
- package/README.hi.md +143 -136
- package/README.it.md +143 -132
- package/README.ja.md +143 -132
- package/README.md +15 -4
- package/README.pt-BR.md +143 -132
- package/README.zh.md +143 -132
- package/dist/doctorLite.d.ts +75 -0
- package/dist/doctorLite.d.ts.map +1 -0
- package/dist/doctorLite.js +705 -0
- package/dist/doctorLite.js.map +1 -0
- package/dist/doctorLite.test.d.ts +2 -0
- package/dist/doctorLite.test.d.ts.map +1 -0
- package/dist/doctorLite.test.js +268 -0
- package/dist/doctorLite.test.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/integration.test.d.ts +2 -0
- package/dist/integration.test.d.ts.map +1 -0
- package/dist/integration.test.js +245 -0
- package/dist/integration.test.js.map +1 -0
- package/dist/mapRender.d.ts +105 -0
- package/dist/mapRender.d.ts.map +1 -0
- package/dist/mapRender.js +718 -0
- package/dist/mapRender.js.map +1 -0
- package/dist/mapRender.test.d.ts +2 -0
- package/dist/mapRender.test.d.ts.map +1 -0
- package/dist/mapRender.test.js +571 -0
- package/dist/mapRender.test.js.map +1 -0
- package/dist/map_cli.d.ts +3 -0
- package/dist/map_cli.d.ts.map +1 -0
- package/dist/map_cli.js +278 -0
- package/dist/map_cli.js.map +1 -0
- package/dist/map_cli.test.d.ts +2 -0
- package/dist/map_cli.test.d.ts.map +1 -0
- package/dist/map_cli.test.js +320 -0
- package/dist/map_cli.test.js.map +1 -0
- package/dist/runLog.d.ts +71 -0
- package/dist/runLog.d.ts.map +1 -0
- package/dist/runLog.js +98 -0
- package/dist/runLog.js.map +1 -0
- package/dist/runLog.test.d.ts +2 -0
- package/dist/runLog.test.d.ts.map +1 -0
- package/dist/runLog.test.js +327 -0
- package/dist/runLog.test.js.map +1 -0
- package/dist/scanEnvPaths.d.ts +18 -0
- package/dist/scanEnvPaths.d.ts.map +1 -0
- package/dist/scanEnvPaths.js +177 -0
- package/dist/scanEnvPaths.js.map +1 -0
- package/dist/scanEnvPaths.test.d.ts +2 -0
- package/dist/scanEnvPaths.test.d.ts.map +1 -0
- package/dist/scanEnvPaths.test.js +250 -0
- package/dist/scanEnvPaths.test.js.map +1 -0
- package/dist/taskCluster.d.ts +62 -0
- package/dist/taskCluster.d.ts.map +1 -0
- package/dist/taskCluster.js +180 -0
- package/dist/taskCluster.js.map +1 -0
- package/dist/taskCluster.test.d.ts +2 -0
- package/dist/taskCluster.test.d.ts.map +1 -0
- package/dist/taskCluster.test.js +375 -0
- package/dist/taskCluster.test.js.map +1 -0
- package/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/dist/vitest.config.js +26 -0
- package/dist/vitest.config.js.map +1 -0
- package/dist/windows.test.d.ts +6 -0
- package/dist/windows.test.d.ts.map +1 -0
- package/dist/windows.test.js +121 -0
- package/dist/windows.test.js.map +1 -0
- package/package.json +6 -2
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
<p align="center">
|
|
2
|
-
<a href="README.
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
|
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
|
|
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
|
-
|
|
|
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
|
-
|
|
|
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
|
-
|
|
|
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 |
|
|
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 |
|
|
248
|
-
| `PYTHONPATH_INJECTED` | warn | Variável de ambiente PYTHONPATH definida
|
|
249
|
-
| `ARCH_MISMATCH` | bad |
|
|
250
|
-
| `PYVENV_CFG_INVALID` | warn |
|
|
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
|
-
##
|
|
262
|
-
|
|
263
|
-
|
|
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/)
|