GritAI-ComicPipeline / spine_agent.py
BonusLockSMith's picture
Upload spine_agent.py with huggingface_hub
906220b verified
# D:\AI-Hub\ComicPipeline\spine_agent.py
# CLI entry point — imports SpineAgent from the spine/ package.
import json
import argparse
from spine import SpineAgent
def main():
parser = argparse.ArgumentParser(description="Spine Agent - Multi-tool AI orchestrator")
parser.add_argument("prompt", help="Command prompt")
parser.add_argument("--server", choices=["rig1", "spark", "rig1_network"], default="rig1")
args = parser.parse_args()
agent = SpineAgent()
result = agent.run(args.prompt, args.server)
if result["status"] == "success":
op = result.get("operation", "")
if op == "generate_image":
print(f"Image generated: {result['filepath']}")
print(f"Model: {result['model']}, Seed: {result['seed']}")
elif op == "generate_characters":
print(f"Characters generated: {result['success_count']}/{result['total_characters']}")
print(f"Output: {result['characters_dir']}")
for r in result['results']:
if r['status'] == 'success':
print(f" {r['character_id']}: {r['filepath']}")
elif op == "generate_scene":
print(f"Scene generated: {result['filepath']}")
print(f"Story: {result['story']}, Page: {result['page_number']}")
print(f"Characters: {result['characters']}, Seed: {result['seed']}")
elif op == "create_story":
print(f"Story created: {result['title']}")
print(f"Format: {result['format']}, ID: {result['story_id']}")
print(f"Characters: {result['characters']}, Pages: {result['pages']}")
print(f"Saved: {result['filepath']}")
print(f"Duration: {result['duration_seconds']}s")
elif op == "render_comic":
print(f"Comic rendered: {result['story']}")
print(f"Pages: {result['pages']}")
print(f"Output: {result['filepath']}")
elif op == "render_coloring_book":
print(f"Coloring book rendered: {result['story']}")
print(f"Pages: {result['pages']}")
print(f"Output: {result['filepath']}")
elif op == "render_children_book":
print(f"Children's book rendered: {result['story']}")
print(f"Output: {result['filepath']}")
elif op == "render_story":
print(f"Story rendered: {result['story_id']}")
print(f"Duration: {result['duration_seconds']}s")
elif op == "retry_failures":
print(f"Retry complete: {result['recovered']}/{result['retried']} recovered")
if result['still_failed'] > 0:
print(f"Still failing: {result['still_failed']}")
elif op == "batch_generate":
print(f"Batch generated: {result['success_count']}/{result['count']} images")
print(f"Output: {result['output_dir']}")
if result['seeds']:
print(f"Seeds: {result['seeds']}")
elif op == "memory_stats":
print(f"Memory stats: {json.dumps(result['data'], indent=2)}")
elif op == "recall":
print(f"Recall results: {json.dumps(result['data'], indent=2)}")
elif op == "rag_query":
print(f"Answer: {result['answer']}")
elif op == "read_json":
print(f"Read: {result['filepath']}")
print(json.dumps(result['data'], indent=2)[:500])
else:
print(json.dumps(result, indent=2))
else:
print(f"Error: {result.get('error', 'unknown')}")
if __name__ == "__main__":
main()