#!/usr/bin/env python3 """ Task Execution Script: Generate module1_foundations Content - Advanced Level Project: Module 1 Foundations - Priority 1 Content Generation Task ID: TASK_007 """
import sys import json import logging from pathlib import Path from datetime import datetime from typing import Dict, Any
============================================================================
CUSTOM EXCEPTIONS
============================================================================
class TaskExecutionError(Exception): """Base exception for task execution errors""" pass
class TaskFileError(TaskExecutionError): """Error accessing project file""" pass
class TaskStatusError(TaskExecutionError): """Error updating task status""" pass
============================================================================
LOGGING CONFIGURATION
============================================================================
logging.basicConfig( level=logging.INFO, format='%(levelname)s: %(message)s', stream=sys.stdout ) logger = logging.getLogger(name)
============================================================================
CORE FUNCTIONS
============================================================================
def execute_task() -> str: """Execute TASK_007 using ai-curriculum-specialist"""
task_prompt = """
Task: Generate module1_foundations Content - Advanced Level
Description: Create comprehensive advanced level educational content for module1_foundations
Deliverables Required:
- module1_foundations_advanced_content.md
Context:
- Project: Module 1 Foundations - Priority 1 Content Generation
- Phase: development
- Dependencies: TASK_002
Instructions:
1. Execute the task according to the description
2. Ensure all deliverables are created
3. Follow educational content development best practices
4. Include proper metadata for NotebookLM optimization
5. Report progress and any blockers
Expected Output:
- Completed deliverables
- Progress report with completion status
- Recommendations for next steps
- Any identified issues or dependencies
"""
# Task execution using Claude Code Task protocol
task_call = (
"Task(\n"
" subagent_type=\"general-purpose\",\n"
" description=\"Generate module1_foundations Content - Advanced Level\",\n"
" prompt=\"Use ai-curriculum-specialist subagent to execute the task requirements above\"\n"
")"
)
logger.info("Executing Task Call:")
logger.info(task_call)
return task_call
def update_task_status(task_id: str, status: str) -> None: """Update task status in project file""" project_file = Path("module1_foundations_priority_project.json")
try:
# Validate project file exists
if not project_file.exists():
raise TaskFileError(f"Project file not found: {project_file}")
# Read project data
try:
with open(project_file, "r", encoding='utf-8') as f:
project_data = json.load(f)
except json.JSONDecodeError as e:
raise TaskFileError(f"Invalid JSON in project file: {e}")
except Exception as e:
raise TaskFileError(f"Failed to read project file: {e}")
# Update task status
if task_id not in project_data.get("tasks", {}):
logger.warning(f"Task {task_id} not found in project file")
return
project_data["tasks"][task_id]["status"] = status
if status == "completed":
project_data["tasks"][task_id]["completion_date"] = datetime.now().isoformat()
# Write updated data
try:
with open(project_file, "w", encoding='utf-8') as f:
json.dump(project_data, f, indent=2)
logger.info(f"Task {task_id} status updated to: {status}")
except Exception as e:
raise TaskStatusError(f"Failed to write project file: {e}")
except (TaskFileError, TaskStatusError):
raise
except Exception as e:
raise TaskExecutionError(f"Unexpected error updating task status: {e}")
============================================================================
MAIN FUNCTION
============================================================================
def main() -> int: """Main execution function""" try: logger.info("Starting task execution...")
# Update task status
try:
update_task_status("TASK_007", "in_progress")
except TaskExecutionError as e:
logger.warning(f"Failed to update task status: {e}")
# Continue execution even if status update fails
# Execute task
result = execute_task()
logger.info("Task execution initiated.")
return 0
except Exception as e:
logger.error(f"Task execution failed: {e}")
return 1
if name == "main": sys.exit(main())