| | """ |
| | Main Entry Point |
| | Demonstrates orchestrator usage with example workflows. |
| | No business logic - just a thin interface layer. |
| | """ |
| | from dotenv import load_dotenv |
| | load_dotenv() |
| |
|
| | from core.orchestrator import Orchestrator |
| |
|
| |
|
| | print(">>> MAIN FILE LOADED <<<") |
| |
|
| |
|
| | def example_text_proof(): |
| | """Example: Create proof from text content.""" |
| | print("\n=== Example 1: Text Proof Creation ===") |
| | |
| | orchestrator = Orchestrator() |
| | |
| | |
| | result = orchestrator.create_proof({ |
| | "type": "text", |
| | "content": "This is a confidential document that needs timestamping." |
| | }) |
| | |
| | if result["success"]: |
| | print(f"β Proof created: {result['proof_id']}") |
| | print(f" Hash: {result['proof'].content_hash}") |
| | print(f" Timestamp: {result['proof'].timestamp}") |
| | |
| | |
| | if "assistant" in result: |
| | print(f"\n π€ AI Explanation:") |
| | print(f" {result['assistant']['response']}") |
| | else: |
| | print(f"β Failed: {result['message']}") |
| | |
| | return result |
| |
|
| |
|
| | def example_file_proof(): |
| | """Example: Create proof from file content.""" |
| | print("\n=== Example 2: File Proof Creation ===") |
| | |
| | orchestrator = Orchestrator() |
| | |
| | |
| | file_content = b"Binary file content here" |
| | |
| | result = orchestrator.create_proof({ |
| | "type": "file", |
| | "content": file_content, |
| | "filename": "document.pdf" |
| | }) |
| | |
| | if result["success"]: |
| | print(f"β Proof created: {result['proof_id']}") |
| | print(f" Hash: {result['proof'].content_hash}") |
| | print(f" File: {result['proof'].metadata['filename']}") |
| | print(f" OCR Status: {result['proof'].ocr_status}") |
| | if result['proof'].extracted_text: |
| | print(f" Extracted Text: {result['proof'].extracted_text[:100]}...") |
| | else: |
| | print(f"β Failed: {result['message']}") |
| | |
| | return result |
| |
|
| |
|
| | def example_image_ocr(): |
| | """Example: Create proof from image with OCR.""" |
| | print("\n=== Example 5: Image Proof with OCR ===") |
| | |
| | orchestrator = Orchestrator() |
| | |
| | |
| | |
| | print("Note: This example requires actual image bytes with text.") |
| | print("Skipping OCR demo - install Tesseract and provide real image to test.") |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | print("β OCR integration ready for image inputs") |
| |
|
| |
|
| | def example_ai_assistant(): |
| | """Example: Ask AI assistant about proofs.""" |
| | print("\n=== Example 6: AI Assistant Q&A ===") |
| | |
| | orchestrator = Orchestrator() |
| | |
| | if not orchestrator.ai_sidecar.enabled: |
| | print("β οΈ AI assistant is disabled") |
| | print(" Enable with: AI_ENABLED=true GEMINI_API_KEY=your-key") |
| | return |
| | |
| | |
| | create_result = orchestrator.create_proof({ |
| | "type": "text", |
| | "content": "Important contract signed on December 24, 2024" |
| | }) |
| | |
| | if not create_result["success"]: |
| | print("Failed to create proof for demo") |
| | return |
| | |
| | proof_id = create_result["proof_id"] |
| | |
| | |
| | questions = [ |
| | "What does this proof guarantee?", |
| | "How can I verify this proof later?", |
| | "What should I do with this proof ID?" |
| | ] |
| | |
| | for question in questions: |
| | print(f"\n Q: {question}") |
| | result = orchestrator.ask_assistant(question, proof_id) |
| | |
| | if result["success"]: |
| | print(f" π€ A: {result['assistant']['response']}") |
| | else: |
| | print(f" β {result['message']}") |
| |
|
| |
|
| | def example_verification(): |
| | """Example: Verify an existing proof.""" |
| | print("\n=== Example 3: Proof Verification ===") |
| | |
| | orchestrator = Orchestrator() |
| | |
| | |
| | original_content = "Verify this content" |
| | create_result = orchestrator.create_proof({ |
| | "type": "text", |
| | "content": original_content |
| | }) |
| | |
| | if not create_result["success"]: |
| | print("Failed to create proof for verification") |
| | return |
| | |
| | proof_id = create_result["proof_id"] |
| | print(f"Created proof: {proof_id}") |
| | |
| | |
| | verify_result = orchestrator.verify_proof( |
| | proof_id, |
| | original_content.encode('utf-8') |
| | ) |
| | |
| | if verify_result["success"]: |
| | vr = verify_result["verification_result"] |
| | status = "β VALID" if vr.is_valid else "β INVALID" |
| | print(f"{status}: {vr.message}") |
| | |
| | |
| | if "assistant" in verify_result: |
| | print(f"\n π€ AI Explanation:") |
| | print(f" {verify_result['assistant']['response']}") |
| | else: |
| | print(f"β Verification failed: {verify_result['message']}") |
| | |
| | |
| | print("\nAttempting verification with tampered content:") |
| | tampered_result = orchestrator.verify_proof( |
| | proof_id, |
| | b"Tampered content" |
| | ) |
| | |
| | if tampered_result["success"]: |
| | vr = tampered_result["verification_result"] |
| | status = "β VALID" if vr.is_valid else "β INVALID" |
| | print(f"{status}: {vr.message}") |
| |
|
| |
|
| | def example_retrieval(): |
| | """Example: Retrieve a stored proof.""" |
| | print("\n=== Example 4: Proof Retrieval ===") |
| | |
| | orchestrator = Orchestrator() |
| | |
| | |
| | create_result = orchestrator.create_proof({ |
| | "type": "text", |
| | "content": "Retrieve this later" |
| | }) |
| | |
| | if not create_result["success"]: |
| | print("Failed to create proof") |
| | return |
| | |
| | proof_id = create_result["proof_id"] |
| | |
| | |
| | get_result = orchestrator.get_proof(proof_id) |
| | |
| | if get_result["success"]: |
| | proof = get_result["proof"] |
| | print(f"β Retrieved proof: {proof.proof_id}") |
| | print(f" Hash: {proof.content_hash}") |
| | print(f" Size: {proof.content_size} bytes") |
| | print(f" Created: {proof.timestamp}") |
| | else: |
| | print(f"β Failed: {get_result['message']}") |
| |
|
| |
|
| | def main(): |
| | """Run all examples.""" |
| | print("=" * 60) |
| | print("PROOF-OF-EXISTENCE SYSTEM - Priority-3 MVP") |
| | print("Deterministic Core + OCR + AI Sidecar") |
| | print("=" * 60) |
| | |
| | try: |
| | example_text_proof() |
| | example_file_proof() |
| | example_verification() |
| | example_retrieval() |
| | example_image_ocr() |
| | example_ai_assistant() |
| | |
| | print("\n" + "=" * 60) |
| | print("All examples completed successfully!") |
| | print("=" * 60) |
| | |
| | except Exception as e: |
| | print(f"\nβ Error running examples: {str(e)}") |
| |
|
| |
|
| | if __name__ == "__main__": |
| | main() |