Download diffweave/cli/commands/search_cmd.py from shak3008/DiffWeave: direct link, hf CLI and curl.
- Browser
- Download file 2.15 kB
-
https://huggingface.co/spaces/shak3008/DiffWeave/resolve/main/diffweave/cli/commands/search_cmd.py
- Command line
-
hf download hf://spaces/shak3008/DiffWeave/diffweave/cli/commands/search_cmd.py
-
curl -L -o search_cmd.py https://huggingface.co/spaces/shak3008/DiffWeave/resolve/main/diffweave/cli/commands/search_cmd.py
2.15 kB
| """ | |
| `dw search` command. | |
| Queries DocWeave's hybrid search engine over committed knowledge. | |
| """ | |
| from __future__ import annotations | |
| from typing import Optional | |
| import typer | |
| from rich.table import Table | |
| from diffweave.cli.config import get_active_workspace | |
| from diffweave.cli.output import print_error, print_json, console | |
| from diffweave.mcp.client import DiffWeaveMCPClient | |
| def search_command( | |
| query: str = typer.Argument(..., help="Search text query across knowledge items"), | |
| top_k: int = typer.Option(10, "--top-k", "-k", help="Maximum results to return"), | |
| workspace_id: Optional[str] = typer.Option(None, "--workspace", "-w", help="Workspace UUID override"), | |
| as_json: bool = typer.Option(False, "--json", help="Output machine-readable JSON"), | |
| ): | |
| """ | |
| Search the Knowledge Register using hybrid lexical + semantic search. | |
| """ | |
| try: | |
| active_ws_id = get_active_workspace(workspace_id) | |
| except Exception as e: | |
| print_error(str(e)) | |
| raise typer.Exit(code=1) | |
| client = DiffWeaveMCPClient() | |
| try: | |
| results = client.call_tool_sync("search_knowledge", {"workspace_id": active_ws_id, "query": query}) | |
| except Exception as e: | |
| print_error(f"Search failed: {e}") | |
| raise typer.Exit(code=1) | |
| results = results[:top_k] | |
| if as_json: | |
| print_json(results) | |
| return | |
| if not results: | |
| console.print(f"[dim]No matching knowledge items found for '{query}'.[/dim]") | |
| return | |
| table = Table(title=f"Knowledge Search: \"{query}\" ({len(results)} matches)", header_style="bold green") | |
| table.add_column("Type", style="cyan") | |
| table.add_column("Title", style="bold white") | |
| table.add_column("Value", style="white") | |
| table.add_column("Confidence", style="yellow") | |
| table.add_column("Source File", style="dim") | |
| for r in results: | |
| table.add_row( | |
| r.get("type", "CLAIM"), | |
| r.get("title", ""), | |
| r.get("value", "")[:50] + ("..." if len(r.get("value", "")) > 50 else ""), | |
| str(r.get("confidence", 1.0)), | |
| r.get("filename") or "n/a", | |
| ) | |
| console.print(table) | |