DiffWeave / diffweave /cli /commands /diff_cmd.py
shak3008's picture
feat: initial commit for DiffWeave platform
4d393e8
Raw History Blame Contribute Delete
1.6 kB
"""
`dw diff` command.
Semantic Knowledge Diff comparing proposed document claims against committed truth.
"""
from __future__ import annotations
from typing import Optional
import typer
from diffweave.cli.config import get_active_workspace
from diffweave.cli.output import render_diff, print_error, print_json
from diffweave.mcp.client import DiffWeaveMCPClient
def diff_command(
workspace_id: Optional[str] = typer.Option(None, "--workspace", "-w", help="Workspace UUID override"),
proposal_id: Optional[str] = typer.Option(None, "--proposal", "-p", help="Diff a specific proposal only"),
document_id: Optional[str] = typer.Option(None, "--document", "-d", help="Filter diff to proposals from document"),
as_json: bool = typer.Option(False, "--json", help="Output machine-readable JSON"),
):
"""
Inspect semantic differences, updates, and contradictions between documents and baseline knowledge.
"""
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:
diff_data = client.call_tool_sync(
"get_semantic_diff",
{
"workspace_id": active_ws_id,
"proposal_id": proposal_id,
"document_version_id": document_id,
},
)
except Exception as e:
print_error(f"Failed to generate semantic diff: {e}")
raise typer.Exit(code=1)
if as_json:
print_json(diff_data)
else:
render_diff(diff_data)