forked from Rockachopa/Timmy-time-dashboard
## Summary Complete refactoring of Timmy Time from monolithic architecture to microservices using Test-Driven Development (TDD) and optimized Docker builds. ## Changes ### Core Improvements - Optimized dashboard startup: moved blocking tasks to async background processes - Fixed model fallback logic in agent configuration - Enhanced test fixtures with comprehensive conftest.py ### Microservices Architecture - Created separate Dockerfiles for dashboard, Ollama, and agent services - Implemented docker-compose.microservices.yml for service orchestration - Added health checks and non-root user execution for security - Multi-stage Docker builds for lean, fast images ### Testing - Added E2E tests for dashboard responsiveness - Added E2E tests for Ollama integration - Added E2E tests for microservices architecture validation - All 36 tests passing, 8 skipped (environment-specific) ### Documentation - Created comprehensive final report - Generated issue resolution plan - Added interview transcript demonstrating core agent functionality ### New Modules - skill_absorption.py: Dynamic skill loading and integration system for Timmy ## Test Results ✅ 36 passed, 8 skipped, 6 warnings ✅ All microservices tests passing ✅ Dashboard responsiveness verified ✅ Ollama integration validated ## Files Added/Modified - docker/: Multi-stage Dockerfiles for all services - tests/e2e/: Comprehensive E2E test suite - src/timmy/skill_absorption.py: Skill absorption system - src/dashboard/app.py: Optimized startup logic - tests/conftest.py: Enhanced test fixtures - docker-compose.microservices.yml: Service orchestration ## Breaking Changes None - all changes are backward compatible ## Next Steps - Integrate skill absorption system into agent workflow - Test with microservices-tdd-refactor skill - Deploy to production with docker-compose orchestration
44 lines
1.1 KiB
Python
44 lines
1.1 KiB
Python
#!/usr/bin/env python3
|
|
"""Direct Timmy interview — bypasses dashboard, tests core agent."""
|
|
|
|
import sys
|
|
import os
|
|
|
|
# Add src to path
|
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'src'))
|
|
|
|
def main():
|
|
print("\n" + "=" * 75)
|
|
print(" TIMMY TIME — DIRECT INTERVIEW")
|
|
print("=" * 75 + "\n")
|
|
|
|
try:
|
|
# Import after path setup
|
|
from timmy.interview import run_interview, format_transcript
|
|
from timmy.session import chat
|
|
|
|
print("🚀 Initializing Timmy agent...\n")
|
|
|
|
# Run the interview
|
|
transcript = run_interview(chat)
|
|
|
|
# Format and display
|
|
formatted = format_transcript(transcript)
|
|
print(formatted)
|
|
|
|
# Save to file
|
|
with open("interview_transcript.txt", "w") as f:
|
|
f.write(formatted)
|
|
print("\n✅ Transcript saved to interview_transcript.txt\n")
|
|
|
|
return 0
|
|
|
|
except Exception as e:
|
|
print(f"\n❌ ERROR: {e}\n")
|
|
import traceback
|
|
traceback.print_exc()
|
|
return 1
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|