#!/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