{"_id":"@darkm3tter/codeprovenance","name":"@darkm3tter/codeprovenance","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@darkm3tter/codeprovenance","version":"0.1.0","description":"AI-blame: trace which agent, session and prompt generated each file change. Reads opencode and Claude Code session logs, stores locally in SQLite, stamps commits.","type":"module","module":"src/index.ts","types":"src/index.ts","exports":{".":"./src/index.ts"},"bin":{"provenance":"dist/cli.js"},"scripts":{"build":"bun run scripts/build.ts","test":"bun test","test:coverage":"bun test --coverage","typecheck":"tsc --noEmit","prepublishOnly":"bun run build"},"keywords":["ai","provenance","traceability","agents","claude-code","opencode","git"],"license":"MIT","engines":{"bun":">=1.1"},"devDependencies":{"@types/bun":"^1.3.14","typescript":"^7.0.2"},"dependencies":{"@modelcontextprotocol/sdk":"^1.30.0","zod":"^4.4.3"},"_id":"@darkm3tter/codeprovenance@0.1.0","gitHead":"1b0f7a60cb0e9e91d577d7aa8cf9b8e4b155546c","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-WiuwF+r/fSJE5uBB89Tep+yeQA2lCJ7zyMJ3qAgGQuJax8HEkPf7aBGQ4DBxq3KtychBMKsbhHIMwGBW2xuiyQ==","shasum":"6a8c6ba29fbd3cc34d3e278c071154adc73c1e84","tarball":"https://registry.npmjs.org/@darkm3tter/codeprovenance/-/codeprovenance-0.1.0.tgz","fileCount":15,"unpackedSize":1173278,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGaZfDxW9CbYYcInbMQHSSofQqzKeVX+seJwD9SwNLbKAiB3owStzCBktcI5bT33qMGVdnW6wB5b6rNi7AkJvz2g9g=="}]},"_npmUser":{"name":"darkm3tter","email":"mygcubas123@gmail.com"},"directories":{},"maintainers":[{"name":"darkm3tter","email":"mygcubas123@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/codeprovenance_0.1.0_1786149710291_0.390645511401124"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-08T00:41:50.101Z","0.1.0":"2026-08-08T00:41:50.488Z","modified":"2026-08-08T00:41:50.690Z"},"maintainers":[{"name":"darkm3tter","email":"mygcubas123@gmail.com"}],"description":"AI-blame: trace which agent, session and prompt generated each file change. Reads opencode and Claude Code session logs, stores locally in SQLite, stamps commits.","keywords":["ai","provenance","traceability","agents","claude-code","opencode","git"],"license":"MIT","readme":"# codeprovenance\n\n> **AI-blame: qué agente, sesión y prompt generaron cada cambio de tu código.**\n\n`git blame` te dice quién escribió cada línea. `codeprovenance` te dice **qué IA la escribió y con qué prompt**. Lee los logs de sesión de opencode y Claude Code, los indexa en una base SQLite local, y responde:\n\n- `provenance blame --file src/x.ts` → qué agente/sesión/prompt tocó ese archivo\n- `provenance stamp` → añade el trailer `Generated-by:` a tus commits\n- `provenance report` → cuánto de tu código lo generó la IA esta semana\n\n## Instalación\n\n```bash\nnpm install -g @darkm3tter/codeprovenance\n```\n\n## Uso\n\n```bash\n# 1. Indexa tus sesiones de agente (claude-code + opencode)\nprovenance capture\n# → capturados 1005 eventos nuevos (claude-code + opencode)\n\n# 2. Reporte\nprovenance report --since 7\n# edits por IA: 669\n# prompts: 75\n# archivos tocados: 241\n# sesiones: 27\n# agentes: claude-code, opencode\n\n# 3. AI-blame de un archivo\nprovenance blame --file src/auth.ts\n# 2026-07-01T10:00:05Z  claude-code · sesión s1 · 3 edits (Write, Edit) · prompt \"add an auth flow\"\n\n# 4. Sellar tus commits\nprovenance stamp\n# Generated-by: claude-code · session s1 · prompt \"add an auth flow\" (f52b4493)\n```\n\n## Estampado automático de commits (hook opcional)\n\nInstala el hook `prepare-commit-msg` (ejemplo en `examples/prepare-commit-msg`):\n\n```bash\nmkdir -p .githooks && cp node_modules/codeprovenance/examples/prepare-commit-msg .githooks/\ngit config core.hooksPath .githooks\n```\n\nCada commit con archivos que tienen provenance recibe automáticamente:\n\n```\nfeat: auth flow\n\nGenerated-by: claude-code · session 4fd7fc50-... · prompt \"add an auth flow\" (f52b4493)\n```\n\n## Como MCP server\n\n`provenance mcp` expone:\n\n- `ai_blame` — trazabilidad de un archivo (agente, sesión, prompt)\n- `provenance_report` — resumen de actividad IA (con ventana en días)\n\n```json\n{ \"mcpServers\": { \"codeprovenance\": { \"command\": \"provenance\", \"args\": [\"mcp\"] } } }\n```\n\n## Cómo funciona\n\n| Fuente | Formato | Qué extrae |\n|---|---|---|\n| Claude Code | `~/.claude/projects/**/*.jsonl` | prompts de usuario + `tool_use` (Write/Edit/MultiEdit/Bash) con `file_path` |\n| opencode | `~/.local/share/opencode/storage/session_diff/*.json` | diffs por sesión (`{file, patch}`) |\n\nCada edit queda vinculado al **último prompt de usuario** que lo precedió (con hash). Todo se guarda en `~/.local/share/codeprovenance/db.sqlite` (SQLite vía `bun:sqlite` o `node:sqlite` — cero deps extra). Re-capturar es idempotente (dedupe NULL-safe).\n\n## Transparencia y privacidad\n\n- Todo es **local**: no sale nada de tu máquina\n- Los prompts se guardan completos para que el blame sea útil — la DB vive solo en tu `~/.local/share`\n- `--json` en todos los comandos para scripting\n\n## Desarrollo\n\n```bash\nbun install\nbun test                 # 22+ tests\nbun run typecheck        # TS estricto\nbun run build            # binario Node único\n```\n\n## Licencia\n\nMIT\n","readmeFilename":"README.md","_rev":"1-6bd92e65c0f241ed2ca3d38133e68ff6"}