feat: add indexer CLI with index, sync, reindex, status commands
This commit is contained in:
0
src/companion/indexer_daemon/__init__.py
Normal file
0
src/companion/indexer_daemon/__init__.py
Normal file
57
src/companion/indexer_daemon/cli.py
Normal file
57
src/companion/indexer_daemon/cli.py
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
import typer
|
||||||
|
|
||||||
|
from companion.config import load_config
|
||||||
|
from companion.rag.indexer import Indexer
|
||||||
|
from companion.rag.vector_store import VectorStore
|
||||||
|
|
||||||
|
app = typer.Typer(help="Companion vault indexer")
|
||||||
|
|
||||||
|
|
||||||
|
def _get_indexer() -> Indexer:
|
||||||
|
config = load_config("config.json")
|
||||||
|
store = VectorStore(
|
||||||
|
uri=config.rag.vector_store.path, dimensions=config.rag.embedding.dimensions
|
||||||
|
)
|
||||||
|
return Indexer(config, store)
|
||||||
|
|
||||||
|
|
||||||
|
@app.command()
|
||||||
|
def index() -> None:
|
||||||
|
"""Run a full index of the vault."""
|
||||||
|
indexer = _get_indexer()
|
||||||
|
typer.echo("Running full index...")
|
||||||
|
indexer.full_index()
|
||||||
|
typer.echo(f"Done. Total chunks: {indexer.status()['total_chunks']}")
|
||||||
|
|
||||||
|
|
||||||
|
@app.command()
|
||||||
|
def sync() -> None:
|
||||||
|
"""Run an incremental sync."""
|
||||||
|
indexer = _get_indexer()
|
||||||
|
typer.echo("Running incremental sync...")
|
||||||
|
indexer.sync()
|
||||||
|
typer.echo(f"Done. Total chunks: {indexer.status()['total_chunks']}")
|
||||||
|
|
||||||
|
|
||||||
|
@app.command()
|
||||||
|
def reindex() -> None:
|
||||||
|
"""Force a full reindex (same as index)."""
|
||||||
|
index()
|
||||||
|
|
||||||
|
|
||||||
|
@app.command()
|
||||||
|
def status() -> None:
|
||||||
|
"""Show indexer status."""
|
||||||
|
indexer = _get_indexer()
|
||||||
|
s = indexer.status()
|
||||||
|
typer.echo(f"Total chunks: {s['total_chunks']}")
|
||||||
|
typer.echo(f"Indexed files: {s['indexed_files']}")
|
||||||
|
typer.echo(f"Unindexed files: {s['unindexed_files']}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
app()
|
||||||
Reference in New Issue
Block a user