from setuptools import find_packages, setup
import os
from glob import glob

package_name = 'saltybot_social'

setup(
    name=package_name,
    version='0.1.0',
    packages=find_packages(exclude=['test']),
    data_files=[
        ('share/ament_index/resource_index/packages',
            ['resource/' + package_name]),
        ('share/' + package_name, ['package.xml']),
        (os.path.join('share', package_name, 'launch'),
            glob(os.path.join('launch', '*launch.[pxy][yma]*'))),
        (os.path.join('share', package_name, 'config'),
            glob(os.path.join('config', '*.yaml'))),
    ],
    install_requires=['setuptools'],
    zip_safe=True,
    maintainer='seb',
    maintainer_email='seb@vayrette.com',
    description='Social interaction layer — person tracking, speech, LLM, TTS, orchestrator',
    license='MIT',
    tests_require=['pytest'],
    entry_points={
        'console_scripts': [
            'person_state_tracker = saltybot_social.person_state_tracker_node:main',
            'expression_node = saltybot_social.expression_node:main',
            'attention_node = saltybot_social.attention_node:main',
            'speech_pipeline_node = saltybot_social.speech_pipeline_node:main',
            'conversation_node = saltybot_social.conversation_node:main',
            'tts_node = saltybot_social.tts_node:main',
            'orchestrator_node = saltybot_social.orchestrator_node:main',
            # Voice command NLU bridge (Issue #137)
            'voice_command_node = saltybot_social.voice_command_node:main',
            # Multi-camera gesture recognition (Issue #140)
            'gesture_node = saltybot_social.gesture_node:main',
            # Hand gesture pointing direction (Issue #221)
            'pointing_node = saltybot_social.pointing_node:main',
            # Facial expression recognition (Issue #161)
            'emotion_node = saltybot_social.emotion_node:main',
            # Robot mesh communication (Issue #171)
            'mesh_comms_node = saltybot_social.mesh_comms_node:main',
            # Energy+ZCR voice activity detection (Issue #242)
            'vad_node = saltybot_social.vad_node:main',
            # Ambient sound classifier — mel-spectrogram (Issue #252)
            'ambient_sound_node = saltybot_social.ambient_sound_node:main',
            # Proximity-based greeting trigger (Issue #270)
            'greeting_trigger_node = saltybot_social.greeting_trigger_node:main',
            # Face-tracking head servo controller (Issue #279)
            'face_track_servo_node = saltybot_social.face_track_servo_node:main',
            # Speech volume auto-adjuster (Issue #289)
            'volume_adjust_node = saltybot_social.volume_adjust_node:main',
            # Conversation topic memory (Issue #299)
            'topic_memory_node = saltybot_social.topic_memory_node:main',
            # Personal space respector (Issue #310)
            'personal_space_node = saltybot_social.personal_space_node:main',
            # Audio wake-word detector — 'hey salty'
            'wake_word_node = saltybot_social.wake_word_node:main',
            # USB camera hot-plug monitor (Issue #320)
            'camera_hotplug_node = saltybot_social.camera_hotplug_node:main',
            # Trigger-based ROS2 bag recorder (Issue #332)
            'rosbag_recorder_node = saltybot_social.rosbag_recorder_node:main',
            # System resource monitor for Jetson Orin (Issue #355)
            'sysmon_node = saltybot_social.sysmon_node:main',
        ],
    },
)
