Skip to content

IshankumarP/nion-orchestration-engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NION Orchestration Engine

A simplified implementation of Nion's three-tier orchestration architecture (L1→L2→L3) for AI-powered project management and communication analysis.

🎯 Overview

This system analyzes incoming messages (emails, Slack, meetings) and orchestrates a hierarchy of AI agents to extract action items, risks, issues, and decisions while maintaining proper visibility boundaries.

🏗️ Architecture

Three-Tier System

L1 Orchestrator (Strategic Layer)
    ↓ delegates to
L2 Coordinators (Domain Layer)
    ↓ coordinates
L3 Agents (Execution Layer)

Components

L1 Orchestrator

  • Ingests and parses messages
  • Classifies intent
  • Creates execution plan
  • Manages dependencies

L2 Coordinators (Domain-specific)

  • TRACKING_EXECUTION: Action items, risks, issues, decisions
  • COMMUNICATION_COLLABORATION: Q&A, reporting, message delivery
  • LEARNING_IMPROVEMENT: Instruction-based learning

L3 Agents (Task-specific)

  • Extraction agents (action items, risks, issues, decisions)
  • Tracking agents (status monitoring)
  • Communication agents (Q&A, reporting, delivery)
  • Cross-cutting agents (knowledge retrieval, evaluation)

Visibility Rules

  • L1 sees only L2 domains + Cross-Cutting agents
  • L2 sees only its own L3 agents + Cross-Cutting agents
  • L1 never directly calls L3 agents (except Cross-Cutting)

🚀 Quick Start

Prerequisites

  • Python 3.8 or higher
  • No external dependencies required (pure Python implementation)

Installation

# Clone the repository
git clone https://github.com/YOUR-USERNAME/nion-orchestration.git
cd nion-orchestration

# No additional dependencies needed!

Running the Program

Interactive Mode:

python main.py

Run All Test Cases:

python tests/run_all_tests.py

Single Test Case:

python main.py --test tests/test_case_1.json

📋 Test Cases

# Test Case Description
1 Simple Status Question Basic status inquiry with context retrieval
2 Feasibility Question New feature evaluation with risk assessment
3 Decision Request Strategic decision with gap-aware response
4 Meeting Transcript Multi-item extraction from meeting notes
5 Urgent Escalation Crisis handling with priority routing
6 Ambiguous Request Graceful handling of unclear input

📊 Sample Output

===========================================================================
NION ORCHESTRATION MAP
===========================================================================

USER REQUEST:
What's the status of the authentication feature?

===========================================================================
L1 PLAN
===========================================================================
[TASK-001] → L3:knowledge_retrieval (Cross-Cutting)
    Purpose: Retrieve project context and current status

[TASK-002] → L2:TRACKING_EXECUTION
    Purpose: Extract action items from status request

[TASK-003] → L2:TRACKING_EXECUTION
    Purpose: Extract and assess risks

[TASK-004] → L2:COMMUNICATION_COLLABORATION
    Purpose: Formulate status response
    Depends On: TASK-001, TASK-002, TASK-003

===========================================================================
L2/L3 EXECUTION
===========================================================================

[TASK-001] L3:knowledge_retrieval (Cross-Cutting)
    Status: COMPLETED
    Output:
    • Current Milestone: Sprint 14
    • Progress: ~68% complete

[TASK-002] L2:TRACKING_EXECUTION
└─▶ [TASK-002-A] L3:action_item_extraction
    Status: COMPLETED
    Output:
    • Action: Review security implications — Owner: ? (Gaps: Owner Missing)

===========================================================================

📁 Project Structure

nion-orchestration/
├── README.md                 # This file
├── main.py                   # Entry point
├── l1_orchestrator.py        # L1 strategic planning
├── l2_coordinator.py         # L2 domain coordination
├── formatter.py              # Output formatting
│
├── l3_agents/                # L3 agent implementations
│   ├── TRACKING_EXECUTION/
│   │   ├── action_item_extraction.py
│   │   ├── risk_extraction.py
│   │   ├── decision_extraction.py
│   │   └── ...
│   ├── COMMUNICATION_COLLABORATION/
│   │   ├── qna.py
│   │   ├── message_delivery.py
│   │   └── ...
│   ├── LEARNING_IMPROVEMENT/
│   │   └── instruction_led_learning.py
│   └── CROSS_CUTTING/
│       ├── knowledge_retrieval.py
│       └── evaluation.py
│
├── tests/
│   ├── test_case_1.json
│   ├── test_case_2.json
│   ├── ...
│   └── run_all_tests.py
│
└── outputs/                  # Generated test outputs
    ├── test_case_1_output.txt
    └── ...

🎨 Design Decisions

Intent Classification

Uses keyword-based pattern matching for simplicity:

  • "status", "what's the" → STATUS_REQUEST
  • "can we", "feasible" → FEASIBILITY_REQUEST
  • "should we", "prioritize" → DECISION_REQUEST
  • "meeting", "blocked" → MEETING_SUMMARY
  • Fallback → AMBIGUOUS

L3 Agent Outputs

Agents generate realistic dummy data since there's no actual database integration. This demonstrates the orchestration flow while keeping the implementation self-contained.

Dependency Management

Tasks are executed sequentially, respecting the dependency graph defined in L1 planning. Future enhancement could add parallel execution for independent tasks.

Error Handling

Current implementation assumes successful execution. Production system would need comprehensive error handling and retry logic.

🛠️ Tools Used

  • Python 3.11: Core implementation
  • Claude (Anthropic): Development assistance
  • Pure Python: No external dependencies for simplicity

🔮 Future Enhancements

  • LLM-based intent classification (replace keyword matching)
  • Actual database integration for knowledge retrieval
  • Parallel execution of independent tasks
  • Error handling and retry mechanisms
  • Persistent state management
  • Real-time streaming output
  • Web UI for visualization

📝 Limitations

  • No Persistence: All data is in-memory, no database
  • Simulated Outputs: L3 agents generate dummy data
  • Sequential Execution: No parallel task processing
  • Rule-based Classification: Intent detection uses keywords, not ML
  • No Real Integration: No actual Slack/email API calls

🧪 Testing

Run the complete test suite:

python tests/run_all_tests.py

This will:

  1. Execute all 6 test cases
  2. Generate formatted outputs
  3. Save results to outputs/ directory

Verify outputs match expected format with proper:

  • Task ID sequencing
  • L2→L3 hierarchy display
  • Dependency tracking
  • Cross-cutting agent marking

👤 Author

[Ishan]
Internship Assessment - December 2024
Contact: [ishankumar657@gmail.com]

📄 License

MIT License - see LICENSE file for details

🙏 Acknowledgments

This implementation was created as part of the Nion Orchestration Internship Assessment.


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages