|
5 | 5 | import rich_click as click |
6 | 6 |
|
7 | 7 | import skore_cli._style # noqa: F401 (applies the CLI palette and rich-click config) |
| 8 | +from skore_cli._agents import ( |
| 9 | + Agent, |
| 10 | + detect_agent, |
| 11 | + is_non_interactive, |
| 12 | + resolve_skill_agent, |
| 13 | +) |
8 | 14 | from skore_cli._plugins import load_plugins |
9 | 15 |
|
10 | 16 | # These command modules defer their heavy `skore` imports into the callbacks, so |
|
21 | 27 | ], |
22 | 28 | } |
23 | 29 |
|
| 30 | +_COMMANDS = [ |
| 31 | + ("agent", "Authenticate, configure and launch a Skore Hub agent harness."), |
| 32 | + ("skills", "Install and manage Agent Skills from the probabl-ai/skills release."), |
| 33 | +] |
| 34 | + |
| 35 | + |
| 36 | +def _render_help(detected: Agent | None) -> str: |
| 37 | + """Build a plain-text help page, agent-flavored when ``detected`` is set.""" |
| 38 | + lines = ["Skore command-line interface.", ""] |
| 39 | + |
| 40 | + if detected is not None: |
| 41 | + lines.append(f"Detected: {detected.label}") |
| 42 | + target = resolve_skill_agent(detected).project_skills_dir |
| 43 | + lines.append(f"Skills target: {target}") |
| 44 | + if detected.harness_name: |
| 45 | + lines.append(f"Harness: {detected.harness_display_name}") |
| 46 | + lines.append("") |
| 47 | + |
| 48 | + lines.append("Quick start:") |
| 49 | + |
| 50 | + if detected is not None: |
| 51 | + skill_target = resolve_skill_agent(detected).project_skills_dir |
| 52 | + lines.append( |
| 53 | + f" skore skills install all Install all skills to {skill_target}" |
| 54 | + ) |
| 55 | + else: |
| 56 | + lines.append(" skore skills install all Install all skills") |
| 57 | + lines.append(" skore skills install <ids> Install specific skills by id") |
| 58 | + |
| 59 | + if detected is not None and detected.harness_name: |
| 60 | + label = detected.harness_display_name |
| 61 | + lines.append( |
| 62 | + f" skore agent " |
| 63 | + f"Configure {label} with the Skore Hub provider" |
| 64 | + ) |
| 65 | + else: |
| 66 | + lines.append( |
| 67 | + " skore agent " |
| 68 | + "Configure and launch a Skore Hub agent harness" |
| 69 | + ) |
| 70 | + |
| 71 | + lines.append("") |
| 72 | + lines.append("Commands:") |
| 73 | + for name, desc in _COMMANDS: |
| 74 | + lines.append(f" {name:<7} {desc}") |
| 75 | + |
| 76 | + return "\n".join(lines) |
| 77 | + |
24 | 78 |
|
25 | 79 | @click.group(invoke_without_command=True) |
26 | 80 | @click.pass_context |
27 | 81 | @click.version_option(package_name="skore-cli") |
28 | 82 | def cli(ctx) -> None: |
29 | | - """Skore command-line interface. |
30 | | -
|
31 | | - Use ``skore agent`` to connect a project to the Skore Hub agent, and |
32 | | - ``skore skills`` to install probabl-skills locally. |
33 | | - """ |
| 83 | + """Skore command-line interface.""" |
34 | 84 | if ctx.invoked_subcommand is None: |
35 | | - click.echo(ctx.get_help()) |
| 85 | + if is_non_interactive(): |
| 86 | + click.echo(_render_help(detect_agent())) |
| 87 | + else: |
| 88 | + click.echo(ctx.get_help()) |
36 | 89 |
|
37 | 90 |
|
38 | 91 | cli.add_command(skills) |
|
0 commit comments