�
�,Zh;I � �H � d dl Z d dlmZmZmZmZ d dlZd dlZ G d� d� Zy)� N)�List�Dict�Any�Optionalc �4 � e Zd ZdZededefd�� Zededefd�� Zededeee f fd�� Z
edeeee f fd �� Zedeeee f fd
�� Z
edeeeef fd�� Zedefd�� Zed
edefd�� Zededeeee f fd�� Zy)�AppleScriptHandlerz9Handles AppleScript execution for Things3 data retrieval.�script�returnc �� � t j dd| gddd�� }|j j � S # t j $ r}t d|� �� �d}~ww xY w)zA
Executes an AppleScript and returns its output.
� osascriptz-eT)�check�capture_output�textzFailed to execute AppleScript: N)�
subprocess�run�stdout�strip�CalledProcessError�RuntimeError)r �result�es �V/Users/drjforrest/dev/github/mcp-things3/src/mcp_server_things3/applescript_handler.py�
run_scriptzAppleScriptHandler.run_script si � �
F��^�^��d�F�+��#�� �F� �=�=�&�&�(�(���,�,� F��!@���D�E�E�� F�s �58 �A�A�Ar c � � | sy| j dd� } | j dd� } | j dd� } | j dd � } | S )
zj
Safely escape a string for use in AppleScript by handling quotes and special characters.
� �\z\\�"z\"�
z\n�
z\r)�replace)r s r �safe_string_for_applescriptz.AppleScriptHandler.safe_string_for_applescript sQ � �
�� �|�|�D�&�)���|�|�C��'���|�|�D�%�(���|�|�D�%�(���� �
record_strc �F � i }| j � } | j d� r| j d� r| dd } g }d}d}| D ]I }|dk( r|dz
}n7|dk( r|dz }n,|dk( r'|dk( r"|j |j � � d}�E||z
}�K |j � r|j |j � � |D ]_ }d|v s�|j dd� \ }}|j � j d � }|j � j d � }|||<