ASTOS — Abstract Syntax Tree Observer Service
Mapa vivo do seu código em 3D imersivo para você — e em Markdown compacto para a sua IA. Zero CDN. Puro WebGL Sci-Fi.
O ASTOS escaneia qualquer repositório poliglota (Python, C/C++, Dart, Rust,
JS/TS, Java, Go, C#, Kotlin), mapeia módulos, dependências, símbolos com
linha (funções, classes) e chamadas entre arquivos (Python), e gera três
artefatos em .astos/:
index.html— mapa 3D orbital (Three.js vendorizado, 100% offline) para olhos humanos;map.md— resumo compacto de uma linha por arquivo, desenhado para agentes de IA lerem antes de explorar;graph.json— o grafo completo em dados.
Na primeira execução ele também instala um bloco cirúrgico no AGENTS.md
ensinando a IA a consultar o mapa — sem tocar em nada do conteúdo original
(use --no-agents para pular).
Instalação
pip install astos
Uso
Dentro de qualquer repositório:
# primeira vez: cria .astos/, analisa, gera mapa + bloco AGENTS.md e abre no navegador
astos
# força varredura completa do zero
astos -a
astos --all
# não tocar no AGENTS.md
astos --no-agents
Isso gera .astos/index.html (arquivo único, offline), .astos/map.md e
.astos/graph.json, e abre a interface no navegador padrão. Pressione ESPAÇO
para congelar/descongelar o movimento, ESC para sair do fullscreen.
Navegação por teclado: WASD/setas movem a câmera sem rotacionar
(Shift = 3x mais rápido), Q/E aproximam/afastam.
O que você vê (3D)
- Somente 3D imersivo — esferas de neon, órbita contínua, zoom/pan/orbit.
- Teia de aranha visível de longe — links com feixe luminoso aditivo + opacidade alta.
- Fita RGB animada — fótons coloridos percorrem as arestas do nó selecionado
(toggle global
FLUXO RGBdisponível no HUD). - Card HUD por clique — nome do arquivo/módulo, caminho relativo, importações/dependências diretas e degree centrality.
❄ CONGELAR— para física + órbita + fluxo de uma vez (atalho: espaço).- Tema Sci-Fi/Chronos — HUD cyberpunk dark, neon cyan/magenta, painéis foscos, fonte monospace, scanlines + vinheta.
O que a sua IA ganha (tokens)
Cada astos deixa um AGENTS.md (bloco marcado ASTOS:START/END, idempotente)
com uma instrução simples: antes de explorar o código — e ao se perder no meio
de um debug — leia .astos/map.md. Na prática:
- Orientação barata: o mapa de um repo médio custa poucos milhares de tokens de uma vez, em vez de dezenas de milhares queimados em glob/grep/leituras exploratórias a cada sessão.
- Debug multi-turno: o mapa vira referência estável entre turnos — a IA se re-localiza lendo o mapa em vez de re-explorar arquivos.
- Escopo cirúrgico: hubs (degree alto) e vizinhança direta dizem o que ler e
o que ignorar; símbolos com linha (
helper():L1) apontam o lugar exato. - Fluxo Python:
caller.py --helper()--> callee.pymostra quem chama quem entre arquivos, antes de abrir qualquer código. - Camadas: se existir
graphify-out/graph.json(Graphify), o bloco orienta a preferi-lo em perguntas semânticas e o mapa ASTOS na estrutura — sem briga.
Limites honestos: fora Python o parsing é heurístico (regex, sem dependências);
call edges existem só para Python; o mapa é estático (rode astos -a se
desconfiar que envelheceu).
Como funciona
astos/parser.py— varre**/*.{py,c,h,cpp,dart,rs,js,jsx,ts,tsx,java,go,cs,kt,...}(Python via AST preciso, incluindo call edges conservadoras; demais linguagens via extratores regex sem dependências):import/#include/mod+use/require/using. Extrai defs com linha, resolve dependências locais e calcula o grau de cada módulo.astos/generator.py— injeta o grafo +three.min.js+OrbitControls.js(vendorizados emastos/vendor/) em um HTML único, sem nenhum fetch externo; e gera omap.mdcompacto para agentes.astos/cli.py— gerencia.astos/, cache incremental em.astos/graph.json, bloco cirúrgico noAGENTS.mde abertura automática no navegador.
Estrutura
astos/
__init__.py
cli.py # CLI `astos` / `astos -a` / `--no-agents` (click) + bloco AGENTS.md
parser.py # scan multilinguagem -> {nodes, links, call_edges}
generator.py # HTML 3D Sci-Fi offline (Three.js inline) + map.md p/ IAs
vendor/
three.min.js # r128 UMD (offline)
OrbitControls.js # UMD compatível com r128 (offline)
Licença
MIT — veja LICENSE.
Metadata
Release files for astos 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| astos-0.3.1.tar.gz | 183.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| astos-0.3.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 366.7 kB
Release files / astos-0.3.1.tar.gz
| Download URL | astos-0.3.1.tar.gz |
|---|---|
| Size | 183.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
701d33206296a03745c3ffe7bd64133d7d5b49e40b85a9f85a3f4ea2bef501d7
|
|
BLAKE2b-256 checksum How to use checksums |
ffa74a4d58bd548127a0b2a6fa63e608b5c33b584957465cdbe06cb97c54c3dd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Release files / astos-0.3.1-py3-none-any.whl
| Download URL | astos-0.3.1-py3-none-any.whl |
|---|---|
| Size | 182.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8dd4f06bb0a0f76c845e72ebfd5c8b642f54241257cae88fc883fb71bcc3c245
|
|
BLAKE2b-256 checksum How to use checksums |
02a38439c82993be0f3db582e6c852e9162502392e0ac999c0beb6ddf5e22718
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|