Files
Atomizer/optimization_engine/devloop/__init__.py
Anto01 3193831340 feat: Add DevLoop automation and HTML Reports
## DevLoop - Closed-Loop Development System
- Orchestrator for plan → build → test → analyze cycle
- Gemini planning via OpenCode CLI
- Claude implementation via CLI bridge
- Playwright browser testing integration
- Test runner with API, filesystem, and browser tests
- Persistent state in .devloop/ directory
- CLI tool: tools/devloop_cli.py

Usage:
  python tools/devloop_cli.py start 'Create new feature'
  python tools/devloop_cli.py plan 'Fix bug in X'
  python tools/devloop_cli.py test --study support_arm
  python tools/devloop_cli.py browser --level full

## HTML Reports (optimization_engine/reporting/)
- Interactive Plotly-based reports
- Convergence plot, Pareto front, parallel coordinates
- Parameter importance analysis
- Self-contained HTML (offline-capable)
- Tailwind CSS styling

## Playwright E2E Tests
- Home page tests
- Test results in test-results/

## LAC Knowledge Base Updates
- Session insights (failures, workarounds, patterns)
- Optimization memory for arm support study
2026-01-24 21:18:18 -05:00

69 lines
1.9 KiB
Python

"""
Atomizer DevLoop - Closed-Loop Development System
This module provides autonomous development cycle capabilities:
1. Gemini Pro for strategic planning and analysis
2. Claude Code (Opus 4.5) for implementation
3. Dashboard testing for verification
4. LAC integration for persistent learning
The DevLoop orchestrates the full cycle:
PLAN (Gemini) -> BUILD (Claude) -> TEST (Dashboard) -> ANALYZE (Gemini) -> FIX (Claude) -> VERIFY
Example usage:
from optimization_engine.devloop import DevLoopOrchestrator
orchestrator = DevLoopOrchestrator()
result = await orchestrator.run_development_cycle(
objective="Create support_arm optimization study"
)
"""
# Lazy imports to avoid circular dependencies
def __getattr__(name):
if name == "DevLoopOrchestrator":
from .orchestrator import DevLoopOrchestrator
return DevLoopOrchestrator
elif name == "LoopPhase":
from .orchestrator import LoopPhase
return LoopPhase
elif name == "LoopState":
from .orchestrator import LoopState
return LoopState
elif name == "DashboardTestRunner":
from .test_runner import DashboardTestRunner
return DashboardTestRunner
elif name == "TestScenario":
from .test_runner import TestScenario
return TestScenario
elif name == "GeminiPlanner":
from .planning import GeminiPlanner
return GeminiPlanner
elif name == "ProblemAnalyzer":
from .analyzer import ProblemAnalyzer
return ProblemAnalyzer
elif name == "ClaudeCodeBridge":
from .claude_bridge import ClaudeCodeBridge
return ClaudeCodeBridge
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
__all__ = [
"DevLoopOrchestrator",
"LoopPhase",
"LoopState",
"DashboardTestRunner",
"TestScenario",
"GeminiPlanner",
"ProblemAnalyzer",
]