"""Quick test of LLM runner initialization"""
import sys
from pathlib import Path

sys.path.insert(0, str(Path(__file__).parent.parent))

from optimization_engine.future.llm_optimization_runner import LLMOptimizationRunner

# Example LLM workflow
llm_workflow = {
    'engineering_features': [
        {
            'action': 'extract_displacement',
            'domain': 'result_extraction',
            'description': 'Extract displacement from OP2',
            'params': {'result_type': 'displacement'}
        }
    ],
    'inline_calculations': [
        {
            'action': 'normalize',
            'params': {
                'input': 'max_displacement',
                'reference': 'max_allowed_disp',
                'value': 5.0
            },
            'code_hint': 'norm_disp = max_displacement / 5.0'
        }
    ],
    'post_processing_hooks': [
        {
            'action': 'weighted_objective',
            'params': {
                'inputs': ['norm_disp'],
                'weights': [1.0],
                'objective': 'minimize'
            }
        }
    ],
    'optimization': {
        'algorithm': 'TPE',
        'direction': 'minimize',
        'design_variables': [
            {
                'parameter': 'wall_thickness',
                'min': 3.0,
                'max': 8.0
            }
        ]
    }
}

def dummy_updater(dv):
    pass

def dummy_runner():
    return Path('tests/bracket_sim1-solution_1.op2')

print("Initializing LLM runner...")
runner = LLMOptimizationRunner(
    llm_workflow=llm_workflow,
    model_updater=dummy_updater,
    simulation_runner=dummy_runner,
    study_name='test'
)

print(f"\nSuccess!")
print(f"Extractors: {len(runner.extractors)}")
print(f"Inline code: {len(runner.inline_code)}")
print(f"Hooks: {runner.hook_manager.get_summary()['enabled_hooks']}")
