import subprocess
import re

def nar_batch(statements, query=None, cycles=5, timeout=8):
    """Run a batch of Narsese through NAR and return output.
    Uses subprocess.run which sends EOF after input, forcing flush."""
    nar_path = './OpenNARS-for-Applications/NAR'
    lines = []
    for s in statements:
        lines.append(s)
    if query:
        lines.append(query)
    lines.append(str(cycles))
    input_text = '\n'.join(lines) + '\n'
    try:
        r = subprocess.run(
            [nar_path, 'shell'],
            input=input_text,
            capture_output=True,
            text=True,
            timeout=timeout
        )
        answers = re.findall(r'Answer:.*', r.stdout)
        return {'ok': True, 'answers': answers, 'raw': r.stdout, 'rc': r.returncode}
    except subprocess.TimeoutExpired:
        return {'ok': False, 'answers': [], 'raw': 'TIMEOUT', 'rc': -1}

if __name__ == '__main__':
    result = nar_batch(['<cat --> animal>.', '<animal --> living>.'], '<cat --> living>?', cycles=10)
    print('Answers:', result['answers'])
    print('OK:', result['ok'])
