Loading...
No commits yet
Not committed History
Blame
prompts.py • 2.1 KB
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Timestamp: 2026-01-27
# File: src/scitex_writer/_cli/prompts.py

"""Prompts CLI commands."""

import argparse
import sys
from pathlib import Path


def cmd_asta(args: argparse.Namespace) -> int:
    """Generate AI2 Asta prompt from manuscript."""
    from ..prompts import generate_asta

    project_path = Path(args.project).resolve()

    if not project_path.exists():
        print(f"Error: Project path not found: {project_path}", file=sys.stderr)
        return 1

    result = generate_asta(project_path, search_type=args.type)

    if not result["success"]:
        print(f"Error: {result['error']}", file=sys.stderr)
        if result["next_steps"]:
            print("\nSuggested next steps:", file=sys.stderr)
            for step in result["next_steps"]:
                print(f"  - {step}", file=sys.stderr)
        return 1

    if args.info:
        print(f"Search type: {result['search_type']}\n")
        print("Next steps:")
        for step in result["next_steps"]:
            print(f"  - {step}")
        print("\n--- Generated Prompt ---\n")

    print(result["prompt"])
    return 0


def register_parser(subparsers) -> argparse.ArgumentParser:
    """Register prompts subcommand parser."""
    prompts_help = """Action prompts for manuscript workflows.

Quick start:
  scitex-writer prompts asta                 # Generate AI2 Asta prompt
  scitex-writer prompts asta -t coauthors    # Find collaborators
"""
    parser = subparsers.add_parser(
        "prompts",
        help="Action prompts (Asta)",
        description=prompts_help,
        formatter_class=argparse.RawDescriptionHelpFormatter,
    )
    sub = parser.add_subparsers(dest="prompts_command", title="Commands")

    asta = sub.add_parser("asta", help="Generate AI2 Asta prompt from manuscript")
    asta.add_argument(
        "-t", "--type", choices=["related", "coauthors"], default="related"
    )
    asta.add_argument("-p", "--project", default=".", help="Project path")
    asta.add_argument("-i", "--info", action="store_true", help="Show search info")
    asta.set_defaults(func=cmd_asta)

    return parser


# EOF