File size: 3,471 Bytes
4d393e8 20d28dd 4d393e8 a8391ca 4d393e8 a46398e 4d393e8 a46398e 4d393e8 a8391ca 4d393e8 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | """
Main entry point for DiffWeave CLI (`dw`).
A Git-like developer interface for DocWeave document intelligence.
"""
from __future__ import annotations
import sys
if hasattr(sys.stdout, 'reconfigure'):
try:
sys.stdout.reconfigure(encoding='utf-8', errors='replace')
sys.stderr.reconfigure(encoding='utf-8', errors='replace')
except Exception:
pass
import typer
from rich.console import Console
from diffweave import __version__
from diffweave.cli.commands.init_cmd import init_command
from diffweave.cli.commands.add_cmd import add_command
from diffweave.cli.commands.status_cmd import status_command
from diffweave.cli.commands.proposals_cmd import proposals_command
from diffweave.cli.commands.diff_cmd import diff_command
from diffweave.cli.commands.validate_cmd import validate_command
from diffweave.cli.commands.review_cmd import review_command
from diffweave.cli.commands.commit_cmd import commit_command
from diffweave.cli.commands.push_cmd import push_command
from diffweave.cli.commands.log_cmd import log_command
from diffweave.cli.commands.search_cmd import search_command
from diffweave.cli.commands.doctor_cmd import doctor_command
from diffweave.cli.commands.rules_cmd import rules_app
from diffweave.cli.commands.auth_cmd import login_command, logout_command, whoami_command
console = Console()
app = typer.Typer(
name="dw",
help="DiffWeave (dw) — A Git-like developer platform for DocWeave document intelligence.",
add_completion=False,
no_args_is_help=True,
)
# Register top-level commands
app.command(name="init", help="Initialize a DiffWeave workspace (.diffweave/)")(init_command)
app.command(name="login", help="Authenticate with DocWeave via email/password, demo, or API token")(login_command)
app.command(name="logout", help="Log out and remove stored credentials")(logout_command)
app.command(name="whoami", help="Display current authenticated user identity and workspace")(whoami_command)
app.command(name="add", help="Stage and ingest documents into workspace")(add_command)
app.command(name="status", help="Show workspace state, document staging, and pending reviews")(status_command)
app.command(name="proposals", help="List and inspect extracted knowledge proposals (PRs)")(proposals_command)
app.command(name="diff", help="Semantic fact diff comparing proposals against committed truth")(diff_command)
app.command(name="validate", help="Run policy validation lint checks on proposals")(validate_command)
app.command(name="review", help="Interactive review wizard for pending proposals (approve/reject/archive)")(review_command)
app.command(name="commit", help="Commit approved knowledge to the Master Knowledge Register")(commit_command)
app.command(name="push", help="Push and publish staged document proposals to Master Knowledge Truth")(push_command)
app.command(name="log", help="Display chronological knowledge audit trail and timeline")(log_command)
app.command(name="search", help="Search committed knowledge using hybrid lexical + vector search")(search_command)
app.command(name="doctor", help="Run diagnostic health checks on MCP and workspace")(doctor_command)
# Register subcommands
app.add_typer(rules_app, name="rules")
@app.command(name="version", help="Print DiffWeave version")
def version_cmd():
console.print(f"[bold cyan]DiffWeave[/bold cyan] version [bold white]{__version__}[/bold white]")
def main():
app()
if __name__ == "__main__":
main()
|