import requests

class TinoClient:
    def __init__(self, api_key, base_url="https://app.spinarditech.com/api/v1/public"):
        self.base_url=base_url
        self.headers={"Authorization":f"Bearer {api_key}","Content-Type":"application/json"}
    def request(self, method, path, **kwargs):
        response=requests.request(method,f"{self.base_url}{path}",headers=self.headers,**kwargs)
        response.raise_for_status()
        return response.json()
    def agents(self): return self.request("GET","/agents")
    def workflows(self): return self.request("GET","/workflows")
    def executions(self): return self.request("GET","/executions")
    def execute(self, workflow_id, input_data=None, idempotency_key=None):
        headers=dict(self.headers)
        if idempotency_key: headers["Idempotency-Key"]=idempotency_key
        return self.request("POST","/executions",headers=headers,json={"workflow_id":workflow_id,"input":input_data or {}})
    def execution(self, execution_id): return self.request("GET",f"/executions/{execution_id}")
    def knowledge(self): return self.request("GET","/knowledge")
