Sobre o projeto

mq é uma ferramenta de linha de comando para processar Markdown com uma sintaxe de consulta inspirada no jq. Escrita em Rust, permite fatiar, filtrar, mapear e transformar documentos Markdown, e também aceita muitos outros formatos de entrada e saída. Os usos típicos descritos pelo projeto incluem preparar e manipular Markdown para prompts e saídas de LLM, gerar Markdown estruturado para consumo por LLM, gerenciar documentação entre arquivos, extrair seções ou padrões de documentos e aplicar transformações em lote consistentes. Capacidades principais: - Seletores e funções internas para fatiar, filtrar, mapear e transformar conteúdo Markdown. - CLI com opções para agregação, streaming de arquivos grandes, monitoramento de alterações em arquivos, avaliação em todas as entradas e controle da saída. - Formatos de entrada incluem markdown, mdx, html, text, null, raw, bytes, cbor, csv, gron, json, psv, toml, toon, tsv, xml e yaml; formatos de saída incluem markdown, html, text, json, table, grep, gron, raw, csv, toml, toon, xml, yaml, shell e none. - Modo de atualização que grava nós Markdown transformados em stdout, além de um modo diff que imprime um diff unificado e sai com código 1 quando haveria alterações. - REPL para execução interativa de consultas, um formatador, um linter de análise estática, um verificador de tipos e um depurador experimental (mq-dbg) com suporte ao Debug Adapter Protocol. - Implementação do Language Server Protocol e integrações com editores para VS Code, Neovim, Zed, IDEs JetBrains, Obsidian, Helix e Chrome, além de uma GitHub Action para CI. - Subcomandos externos por meio de executáveis chamados mq- colocados em ~/.local/bin/. - Permissões em sandbox: rede, leitura/escrita no sistema de arquivos, execução de comandos e acesso ao ambiente ficam desabilitados por padrão e podem ser concedidos individualmente ou por presets (strict, read-only, networked, unsafe). Importações de módulos HTTP também são opt-in, com listas de domínios permitidos, cache, verificação de integridade por lockfile e um modo congelado para CI. Distribuição e empacotamento: - Script de instalação, Homebrew, Arch (yay), Cargo (mq-run), imagem Docker, binstall e binários pré-compilados para macOS, Linux e Windows. - Um monorepo Rust e TypeScript com crates como mq-run, mq-lang, mq-markdown, mq-lsp, mq-repl, mq-formatter, mq-lint, mq-check, mq-hir, mq-dap, mq-crawler, mq-web-api, mq-macros, mq-test, mq-ffi e mq-wasm, além dos pacotes npm mq-web e mq-nodejs. - Uma REST API hospedada e um playground no navegador; bindings de linguagem para Elixir, Python, Ruby, Java e Go. A documentação é fornecida por meio de um site, um livro online, um cookbook de receitas orientadas a tarefas e um guia de exemplos. O projeto afirma estar em desenvolvimento ativo e é licenciado sob MIT.