#!/usr/bin/env python3 """Sync local prompt files to Langfuse Prompt Management.""" import argparse import json import sys from pathlib import Path PROJECT_ROOT = Path(__file__).resolve().parents[1] sys.path.insert(0, str(PROJECT_ROOT)) from src.prompts.character_prompts import ( # noqa: E402 get_available_api_types, get_available_characters, sync_available_prompts_to_langfuse, sync_prompt_to_langfuse, ) def parse_args(): parser = argparse.ArgumentParser( description="Sync repo prompt files to Langfuse Prompts." ) parser.add_argument( "--message", default=None, help="Commit message/memo to attach to the Langfuse prompt version.", ) parser.add_argument( "--character", choices=get_available_characters(), default=None, help="Sync only one character.", ) parser.add_argument( "--provider", choices=get_available_api_types(), default=None, help="Sync only one provider prompt.", ) return parser.parse_args() def main(): args = parse_args() if args.character or args.provider: characters = [args.character] if args.character else get_available_characters() providers = [args.provider] if args.provider else get_available_api_types() results = [ sync_prompt_to_langfuse( character, provider, commit_message=args.message, ) for character in characters for provider in providers ] else: results = sync_available_prompts_to_langfuse(commit_message=args.message) print(json.dumps(results, ensure_ascii=False, indent=2)) if __name__ == "__main__": main()