Metadata-Version: 2.1
Name: jam-tree
Version: 0.1.6
Summary: Ferramenta para gerar árvore de diretórios com análise de IA
Home-page: https://github.com/GitHubJordan/JAM-Tree
Author: Jordan Adelino
Author-email: jordanadelino.info@gmail.com
License: UNKNOWN
Project-URL: Documentation, https://jam-tree.readthedocs.io/
Project-URL: Bug Reports, https://github.com/GitHubJordan/JAM-Tree/issues
Project-URL: Funding, https://airtm.me/jordan_adelino
Project-URL: Say Thanks!, https://jordanadelino.info
Project-URL: Source, https://github.com/GitHubJordan/JAM-Tree/
Keywords: jam-tree,setuptools,development,ai,analyzer,tree,directory,framework
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Natural Language :: Portuguese (Brazilian)
Classifier: Intended Audience :: End Users/Desktop
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Build Tools
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: License :: OSI Approved :: MIT License
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: Jinja2==3.1.5
Requires-Dist: Markdown==3.7
Requires-Dist: MarkupSafe==3.0.2
Requires-Dist: PyYAML==6.0.2
Requires-Dist: Pygments==2.19.1
Requires-Dist: SecretStorage==3.3.3
Requires-Dist: annotated-types==0.7.0
Requires-Dist: anyio==4.8.0
Requires-Dist: backports.tarfile==1.2.0
Requires-Dist: cachetools==5.5.2
Requires-Dist: certifi==2025.1.31
Requires-Dist: cffi==1.17.1
Requires-Dist: charset-normalizer==3.4.1
Requires-Dist: click==8.1.8
Requires-Dist: cryptography==44.0.2
Requires-Dist: distro==1.9.0
Requires-Dist: docutils==0.21.2
Requires-Dist: dotenv==0.9.9
Requires-Dist: exceptiongroup==1.2.2
Requires-Dist: ghp-import==2.1.0
Requires-Dist: google-ai-generativelanguage==0.6.15
Requires-Dist: google-api-core==2.24.1
Requires-Dist: google-api-python-client==2.162.0
Requires-Dist: google-auth-httplib2==0.2.0
Requires-Dist: google-auth==2.38.0
Requires-Dist: google-genai==1.3.0
Requires-Dist: google-generativeai==0.8.4
Requires-Dist: googleapis-common-protos==1.68.0
Requires-Dist: grpcio-status==1.70.0
Requires-Dist: grpcio==1.70.0
Requires-Dist: h11==0.14.0
Requires-Dist: httpcore==1.0.7
Requires-Dist: httplib2==0.22.0
Requires-Dist: httpx==0.28.1
Requires-Dist: id==1.5.0
Requires-Dist: idna==3.10
Requires-Dist: importlib-metadata==8.6.1
Requires-Dist: iniconfig==2.0.0
Requires-Dist: jaraco.classes==3.4.0
Requires-Dist: jaraco.context==6.0.1
Requires-Dist: jaraco.functools==4.1.0
Requires-Dist: jeepney==0.9.0
Requires-Dist: jiter==0.8.2
Requires-Dist: keyring==25.6.0
Requires-Dist: markdown-it-py==3.0.0
Requires-Dist: mdurl==0.1.2
Requires-Dist: mergedeep==1.3.4
Requires-Dist: mkdocs-get-deps==0.2.0
Requires-Dist: mkdocs-material-extensions==1.3.1
Requires-Dist: mkdocs==1.6.1
Requires-Dist: more-itertools==10.6.0
Requires-Dist: nh3==0.2.21
Requires-Dist: openai==1.65.1
Requires-Dist: packaging==24.2
Requires-Dist: pathspec==0.12.1
Requires-Dist: platformdirs==4.3.6
Requires-Dist: pluggy==1.5.0
Requires-Dist: proto-plus==1.26.0
Requires-Dist: protobuf==5.29.3
Requires-Dist: pyasn1==0.6.1
Requires-Dist: pyasn1-modules==0.4.1
Requires-Dist: pycparser==2.22
Requires-Dist: pydantic==2.10.6
Requires-Dist: pydantic-core==2.27.2
Requires-Dist: pyparsing==3.2.1
Requires-Dist: pytest==8.3.4
Requires-Dist: python-dateutil==2.9.0.post0
Requires-Dist: python-dotenv==1.0.1
Requires-Dist: pyyaml-env-tag==0.1
Requires-Dist: readme-renderer==44.0
Requires-Dist: requests-toolbelt==1.0.0
Requires-Dist: requests==2.32.3
Requires-Dist: rfc3986==2.0.0
Requires-Dist: rich==13.9.4
Requires-Dist: rsa==4.9
Requires-Dist: six==1.17.0
Requires-Dist: sniffio==1.3.1
Requires-Dist: tomli==2.2.1
Requires-Dist: tqdm==4.67.1
Requires-Dist: twine==6.1.0
Requires-Dist: typing-extensions==4.12.2
Requires-Dist: uritemplate==4.1.1
Requires-Dist: urllib3==2.3.0
Requires-Dist: watchdog==6.0.0
Requires-Dist: websockets==14.2
Requires-Dist: zipp==3.21.0

<div classe="img_logo" style="background-color:#09152A">
<img src="https://jam-tree.readthedocs.io/pt-br/latest/img/jam-tree_logo_sem_fundo.png" width="400" style="display: block; margin-left: auto; margin-right: auto;" />
</div>

# JAM-Tree
![CI](https://github.com/GitHubJordan/JAM-Tree/actions/workflows/ci.yml/badge.svg)
[![Documentation Status](https://readthedocs.org/projects/jam-tree/badge/?version=latest&style=flat)](ttps://jam-tree.readthedocs.io/pt-br/latest/badge=latest)

**JAM-Tree** é uma ferramenta open-source que gera a árvore completa de diretórios de um projeto – da raiz até as subpastas e arquivos – e a exibe de forma organizada. Além disso, ela permite exportar a estrutura para diversos formatos, criar projetos a partir de um template JSON (bootstrapping) e realizar análises de código com IA para gerar resumos concisos.

A ferramenta foi projetada para atender tanto desenvolvedores finais que precisam documentar e entender a estrutura dos seus projetos, quanto para contribuidores que desejam aprimorar e expandir suas funcionalidades.

---

## Tabela de Conteúdos

- [Recursos](#recursos)
- [Instalação](#instalação)
- [Uso](#uso)
  - [Comandos e Opções](#comandos-e-opções)
  - [Exemplos de Uso](#exemplos-de-uso)
- [Configuração](#configuração)
- [Documentação Completa](#documentação-completa)
- [Contribuindo](#contribuindo)
- [Roadmap](#roadmap)
- [FAQ](#faq)
- [Licença](#licença)
- [Contato](#contato)

---

## Recursos

- **Árvore Completa de Diretórios:**  
  Escaneia recursivamente o diretório do projeto e exibe sua estrutura completa (pastas, subpastas e arquivos) com ordenação: pastas primeiro e, depois, arquivos – ambos em ordem alfabética.

- **Exportação:**  
  Permite exportar a árvore para os formatos TXT, Markdown (MD) e JSON.

- **Projeto Bootstrapping:**  
  Cria a estrutura de um novo projeto a partir de um template JSON, com a opção de usar o diretório atual ou criar uma nova pasta raiz.

- **Análise com IA:**  
  Utiliza a API Gemini para gerar resumos concisos (até 64 caracteres) para cada nó da árvore (arquivos e diretórios).  
  - **Modo Resumido:** (via opção `--ai-comments`) exibe os resumos junto à árvore.  
  - **Modo Detalhado:** (subcomando `analyze`) gera uma análise completa de um arquivo.

- **Feedback Visual:**  
  Mensagens de status interativas e barra de progresso (opção `--progress`) para informar o usuário durante o escaneamento e análise.

---

## Instalação

### Requisitos

- **Python 3.10+**
- Dependências listadas em `requirements.txt` (inclui `click`, `rich`, `google-generativeai`, etc.)

### Instalação via pip (Modo Desenvolvimento)

```bash
git clone https://github.com/GitHubJordan/JAM-Tree.git
cd JAM-Tree
pip install -e .
```

> **Nota:**  
> Configure a variável de ambiente para a API Gemini:
> ```bash
> export AI_ANALYZER_API_KEY_GEMINI="sua_chave_aqui"
> ```
> Opcionalmente, defina o modelo de IA com:
> ```bash
> export AI_ANALYZER_MODEL="gemini-1.5-flash"
> ```

---

## Uso

A sintaxe básica do JAM-Tree é:

```bash
jam-tree [PATH] [--export FORMAT] [--ignore DIRETÓRIOS] [--create ARQUIVO_JSON] [--no-root] [--ai-comments] [--progress]
```

### Comandos e Opções

- **PATH:**  
  Diretório a ser escaneado. Se omitido, o diretório atual é utilizado.

- **--export FORMAT:**  
  Exporta a árvore para um dos formatos: `txt`, `md` ou `json`.

- **--ignore DIRETÓRIOS:**  
  Lista de diretórios adicionais a ignorar, separados por vírgula.

- **--create ARQUIVO_JSON:**  
  Cria a estrutura do projeto a partir de um template JSON.

- **--no-root:**  
  Quando usado com `--create`, utiliza o diretório atual como raiz, sem criar uma nova pasta.

- **--ai-comments:**  
  Anexa resumos gerados por IA (até 64 caracteres) a cada nó da árvore.

- **--progress:**  
  Exibe uma barra de progresso durante a análise dos nós (deve ser usada junto com `--ai-comments`).

- **Subcomando `analyze`:**  
  ```bash
  jam-tree analyze caminho/do/arquivo.py [--export FORMAT]
  ```
  Gera uma análise detalhada do arquivo e, se a opção `--export` for utilizada, exporta o relatório (por padrão, para `resume_file.txt`).

---

## Exemplos de Uso

### Exibir a Árvore do Projeto

```bash
jam-tree .
```

### Exibir a Árvore com Resumos AI

```bash
jam-tree --ai-comments
```

### Exibir a Árvore com Resumos e Barra de Progresso

```bash
jam-tree --ai-comments --progress
```

### Exportar a Árvore para Markdown

```bash
jam-tree --ai-comments --export md
```

### Criar um Projeto a Partir de um Template

```bash
jam-tree --create template.json
```

### Analisar Detalhadamente um Arquivo e Exportar a Análise

```bash
jam-tree analyze jam_tree/cli.py --export md
```

---

## Configuração

Você pode personalizar opções importantes por meio de um arquivo de configuração (`config.json`). Por exemplo:

**config.json**

```json
{
  "ignore_dirs": [".git", "venv", "__pycache__"],
  "ai_model": "gemini-1.5-flash",
  "export_format": "txt"
}
```

E o módulo `config.py` permite acessar essas configurações:

**jam_tree/config.py**

```python
import json
import os

CONFIG_FILE = "config.json"
_config = {}

def load_config():
    global _config
    if os.path.exists(CONFIG_FILE):
        try:
            with open(CONFIG_FILE, "r", encoding="utf-8") as f:
                _config = json.load(f)
        except Exception:
            _config = {}

def get_config_option(key: str, default=None):
    return _config.get(key, default)

load_config()
```

Você pode integrar essas configurações no CLI e nos módulos de análise conforme necessário.

---

## Documentação Completa

Para uma documentação mais detalhada, consulte:

- **CLI_DOCUMENTATION.md** – Instruções detalhadas, exemplos de uso e explicação de cada comando.
- **Tutorial.md** – Um tutorial passo a passo que ensina como usar o JAM-Tree para:
  - Gerar a árvore do projeto.
  - Exportar a árvore.
  - Criar novos projetos via template JSON.
  - Analisar código com IA.
- **Developer_Docs.md** – Documentação voltada para contribuidores, com detalhes de arquitetura, instruções para rodar testes, diretrizes de contribuição, etc.

---

## Contribuindo

Contribuições são muito bem-vindas! Para colaborar:

1. Faça um fork do repositório.
2. Crie uma branch para sua funcionalidade ou correção.
3. Realize commits com mensagens claras e detalhadas.
4. Envie um pull request com uma descrição completa das mudanças.
5. Consulte [CONTRIBUTING.md](docs/CONTRIBUTING.md) para mais orientações.

---

## Roadmap

### Versão 0.1.x (Funcionalidades Atuais)
- Escaneamento e geração da árvore de diretórios.
- Exportação da árvore em TXT, MD e JSON.
- Projeto Bootstrapping a partir de um template JSON.
- Análise de código com IA (resumos concisos e análise detalhada).
- Feedback visual no CLI (status, barra de progresso).
- Cache persistente para análises com IA.

### Versão 0.2.0 (Funcionalidades Futuras)
- **Empacotamento e Transporte de Projetos:** Exportar o projeto inteiro para um arquivo compacto (.jtree ou .tree) e importar posteriormente.
- **StarBuild – JAM-Tree:** Criação assistida de projetos via IA, com templates dinâmicos gerados a partir de prompts.
- **Novos Formatos de Exportação:** Suporte a exportação para HTML e XML.
- **Configuração via Arquivo:** Permitir definir opções por meio de um arquivo de configuração.
- **Interface Gráfica (GUI):** Desenvolver uma GUI para facilitar a interação.
- **Testes Automatizados e CI/CD:** Ampliar a suíte de testes e configurar pipelines de integração contínua.

---

## FAQ

**Q: Preciso configurar algo antes de usar o JAM-Tree?**  
A: Sim. Configure a variável de ambiente `AI_ANALYZER_API_KEY_GEMINI` com sua chave de API. Opcionalmente, defina também `AI_ANALYZER_MODEL`.

**Q: Como posso exportar a análise detalhada de um arquivo?**  
A: Use o subcomando `analyze` com a opção `--export` para salvar a análise em um arquivo. Por exemplo:
```bash
jam-tree analyze caminho/do/arquivo.py --export md
```

**Q: O que fazer se a análise com IA falhar?**  
A: Se ocorrer um erro (por exemplo, "429 Resource has been exhausted"), o resumo será exibido como "N/A". O sistema não armazenará erros temporários, permitindo novas tentativas em execuções futuras.

---

## Licença

Este projeto está licenciado sob a [MIT License](LICENSE).

---

## Contato

Para dúvidas, sugestões ou contribuições, abra uma issue no repositório ou entre em contato via GitHub.

---

## Conclusão

O JAM-Tree é uma ferramenta robusta que já oferece funcionalidades essenciais para escanear, exportar, criar e analisar a estrutura de projetos, com integração de IA e feedback visual interativo. Com essa documentação atualizada, tanto os usuários finais quanto os contribuidores terão acesso a informações detalhadas e tutoriais que facilitam o uso e a manutenção do projeto.

Estamos comprometidos em seguir nosso ciclo de desenvolvimento em cascata e lançar novas funcionalidades na versão 0.2.0, como o empacotamento completo do projeto e o StarBuild – JAM-Tree.

---

