npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@pavani/obsidian-eval

v0.2.1

Published

Transforma vaults Obsidian em runtime de conhecimento programável — scan, grafo, queries

Readme

obsidian-eval

Transforma vaults Obsidian em runtime de conhecimento programável — scan, grafo, queries, escrita e cross-vault wikilinks. Zero dependência do app Obsidian.

npm install -g @pavani/obsidian-eval

O que faz

obsidian-eval opera sobre qualquer diretório com .obsidian/ (vault Obsidian). Ele varre todos os .md, faz parse de frontmatter YAML, resolve wikilinks ([[...]]), constrói um grafo direcionado em memória e expõe comandos para navegar e validar o grafo.

Funciona como runtime para o ecossistema de vaults do workspace: long-running-agents (77 canonical docs), mhc-knowledge-base (domínio KODA), raw-knowledge (fontes ingeridas) e sisyphus-runtime (vault privado de handoffs e estado).

Comandos

scan

Varre o vault e imprime estatísticas.

obsidian-eval ./long-running-agents scan
# Vault:          /mnt/c/Users/pavan/long-running-agents
# Notes:          386
# Edges:          1240
# Orphans:        23
# Broken Links:   5

obsidian-eval --json ./long-running-agents scan

query

Executa expressões de consulta contra o grafo do vault. A DSL é puramente pattern matching — sem eval(), sem Function().

# Filtrar notas por frontmatter
obsidian-eval ./long-running-agents query "filter(n => n.frontmatter.type === 'canonical')"
obsidian-eval ./long-running-agents query "filter(n => n.frontmatter.tags.includes('evaluation'))"
obsidian-eval ./long-running-agents query "filter(n => n.path.startsWith('docs/'))"

# Filtrar por ausência de campo
obsidian-eval ./long-running-agents query "filter(n => !n.frontmatter.status)"

# Busca por tag ou campo
obsidian-eval ./long-running-agents query "findByTag('architecture')"
obsidian-eval ./long-running-agents query "findByField('maturity', 'N3')"

# Análise de grafo
obsidian-eval ./long-running-agents query "orphans()"
obsidian-eval ./long-running-agents query "brokenLinks()"
obsidian-eval ./long-running-agents query "inbound('docs/canonical/evaluation-rubrics.md')"
obsidian-eval ./long-running-agents query "outbound('docs/canonical/evaluation-rubrics.md')"

# Filtros compostos
obsidian-eval ./long-running-agents query "filter(n => n.frontmatter.type === 'canonical' && n.frontmatter.tags.includes('memory'))"

check

Valida integridade do vault: links quebrados e notas órfãs. Com --checks, sai com código 1 se houver violações (útil para CI).

obsidian-eval ./long-running-agents check --checks

graph-stats

Estatísticas do grafo: nodes, edges, orphans, broken links, grau médio.

obsidian-eval --json ./long-running-agents graph-stats

write

Cria ou sobrescreve uma nota markdown com frontmatter YAML. Cria diretórios intermediários automaticamente.

obsidian-eval ~/sisyphus-runtime write sessions/test.md \
  '{"type":"session-handoff","date":"2026-06-15"}' \
  '# Test Handoff

Conteúdo de teste.'

append-fact

Apensa uma entrada a um arquivo de fatos duráveis, sob uma seção ## <category>. Se o arquivo não existir, cria com frontmatter mínimo. Atualiza last_updated automaticamente.

obsidian-eval ~/sisyphus-runtime append-fact \
  facts/_global/constraints.md constraints \
  '- "Nova constraint" (source: sessão X)'

list-vaults e resolve-vault

Gerencia o registro de vaults conhecidos (nome → path absoluto).

obsidian-eval list-vaults
# long-running-agents → /mnt/c/Users/pavan/long-running-agents
# mhc-knowledge-base  → /mnt/c/Users/pavan/mhc-knowledge-base
# obsidian-eval       → /mnt/c/Users/pavan/obsidian-eval
# raw-knowledge        → /mnt/c/Users/pavan/raw-knowledge
# sisyphus-runtime     → /home/pavanpavan/sisyphus-runtime

obsidian-eval resolve-vault long-running-agents
# /mnt/c/Users/pavan/long-running-agents

Para sobrescrever ou adicionar vaults, use a env var OBSIDIAN_EVAL_VAULTS (JSON):

export OBSIDIAN_EVAL_VAULTS='{"novo-vault":"/path/absoluto"}'

Cross-vault wikilinks

Wikilinks com prefixo vault:<name>/ resolvem contra o vault registry, permitindo referências entre vaults:

# Em uma nota no sisyphus-runtime:
Consulte [[vault:long-running-agents/docs/canonical/evaluation-rubrics]]
Estado anterior: [[vault:sisyphus-runtime/sessions/long-running-agents/2026-06-15-handoff]]

O scan detecta e resolve esses links, e o check reporta links quebrados cross-vault.

API programática

import { scan, query, writeNote, resolveVaultRoot } from "@pavani/obsidian-eval";

const vault = scan("/mnt/c/Users/pavan/long-running-agents");
console.log(vault.notes.size);          // número de notas
console.log(vault.graph.edges.length);  // número de arestas

// Navegação
const backlinks = vault.graph.inbound("docs/canonical/evaluation-rubrics.md");
const broken = vault.graph.brokenLinks();
const orphans = vault.graph.orphans();

// Filtro
const canonicals = vault.graph.filter(
  n => n.frontmatter.type === "canonical"
);
const byTag = vault.graph.findByTag("memory");

// Query DSL
const results = query(vault, "filter(n => n.frontmatter.maturity === 'N3')");

Ecossistema

obsidian-eval é o runtime que unifica os vaults do workspace:

| Vault | Path | Propósito | |---|---|---| | long-running-agents | /mnt/c/Users/pavan/long-running-agents | 77 canonical docs, currículo N1-N4, 8 core concepts | | mhc-knowledge-base | /mnt/c/Users/pavan/mhc-knowledge-base | Domínio KODA, templates, validação | | raw-knowledge | /mnt/c/Users/pavan/raw-knowledge | Fontes ingeridas (papers, talks) | | sisyphus-runtime | ~/sisyphus-runtime | Vault privado: handoffs, fatos, estado | | obsidian-eval | /mnt/c/Users/pavan/obsidian-eval | O próprio repositório (dogfooding) |

Planos ativos em .omo/plans/. Consulte o AGENTS.md do workspace para o mapa completo.

Licença

MIT