File size: 2,219 Bytes
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 | """
`dw log` command.
Chronological knowledge audit history and telemetry timeline.
"""
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 log_command(
limit: int = typer.Option(20, "--limit", "-n", help="Number of history events to display"),
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"),
):
"""
View chronological knowledge audit log (commits, reviews, workflows).
"""
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:
feed = client.call_tool_sync("get_activity_feed", {"workspace_id": active_ws_id, "limit": limit})
except Exception as e:
print_error(f"Failed to fetch activity log: {e}")
raise typer.Exit(code=1)
if as_json:
print_json(feed)
return
events = feed.get("events", [])
if not events:
console.print("[dim]No activity events recorded in this workspace yet.[/dim]")
return
table = Table(title=f"Knowledge Audit History (Last {len(events)} events)", header_style="bold blue")
table.add_column("Timestamp", style="dim")
table.add_column("Event Type", style="cyan")
table.add_column("Details", style="white")
for ev in events:
ev_type = ev.get("type", "event")
if "approved" in ev_type or "completed" in ev_type:
badge = f"[green]{ev_type}[/green]"
elif "rejected" in ev_type:
badge = f"[red]{ev_type}[/red]"
elif "archived" in ev_type:
badge = f"[yellow]{ev_type}[/yellow]"
else:
badge = f"[cyan]{ev_type}[/cyan]"
table.add_row(
str(ev.get("timestamp", ""))[:19],
badge,
ev.get("message", ""),
)
console.print(table)
|