orchestrata_ultimate.session.cli.achievements
Reference › orchestrata_ultimate › session › cli › achievements
The achievement command group. list shows the achievements of the latest session and add appends one to it. The achievements feed the changelog entry and session summary when the session ends (see lifecycle).
At a glance
| Source | src/orchestrata_ultimate/session/cli/achievements.py |
| Lines of code | 67 |
| Classes | 0 |
| Functions | 3 |
| Imports (internal) | orchestrata_ultimate.core.base.traces, orchestrata_ultimate.session.cli._manager |
| Imported by | orchestrata_ultimate.session.cli.main |
| Tests that import it | none |
Class diagram
No classes; see Functions.
Dependency diagram
API
Functions
| Function | Signature | Summary |
|---|---|---|
achievement click.group, traces |
achievement() -> None |
Manage session achievements. |
achievement_list click.command, click.pass_context, traces |
achievement_list(ctx: click.Context) -> None |
List achievements from the latest session. |
achievement_add click.command, click.argument, click.pass_context, traces |
achievement_add(ctx: click.Context, text: str) -> None |
Add an achievement to the latest session. |
Source
# mypy: ignore-errors
"""Achievement commands (achievement group) for the session CLI."""
import sys
import click
from orchestrata_ultimate.core.base.traces import traces
from orchestrata_ultimate.session.cli._manager import _get_manager
@click.group()
@traces(spec="006", story="FR-018", reqs=["REQ-006-FR18-006"])
def achievement() -> None:
"""Manage session achievements."""
@click.command(name="list")
@click.pass_context
@traces(spec="006", story="FR-18", reqs=["REQ-006-FR18-006", "REQ-006-FR10-004"])
def achievement_list(ctx: click.Context) -> None:
"""List achievements from the latest session."""
root = ctx.obj["root"]
mgr = _get_manager(root)
if not mgr.file_exists():
click.echo(f"No context files found in {root}", err=True)
sys.exit(1)
ctx_data = mgr.read()
latest = ctx_data.latest_session()
if not latest:
click.echo("No sessions found.")
return
achievements = latest.achievements
if not achievements:
click.echo(f"No achievements recorded for session {latest.session_id}.")
return
click.echo(f"Achievements for Session {latest.session_id}:")
click.echo("-" * 50)
for i, ach in enumerate(achievements, 1):
click.echo(f" {i}. {ach}")
click.echo(f"\nTotal: {len(achievements)} achievements")
@click.command(name="add")
@click.argument("text")
@click.pass_context
@traces(spec="006", story="FR-18", reqs=["REQ-006-FR18-006", "REQ-006-FR10-004"])
def achievement_add(ctx: click.Context, text: str) -> None:
"""Add an achievement to the latest session."""
root = ctx.obj["root"]
mgr = _get_manager(root)
ctx_data = mgr.read()
latest = ctx_data.latest_session()
if not latest:
click.echo("No sessions found. Create a session first.", err=True)
sys.exit(1)
latest.achievements.append(text)
mgr.write(ctx_data)
click.echo(f"Added achievement to session {latest.session_id}: {text}")