diff options
Diffstat (limited to 'agents/todo-py')
| l--------- | agents/todo-py/index.yaml | 1 | ||||
| -rw-r--r-- | agents/todo-py/tools.py | 62 |
2 files changed, 63 insertions, 0 deletions
diff --git a/agents/todo-py/index.yaml b/agents/todo-py/index.yaml new file mode 120000 index 0000000..0d19c11 --- /dev/null +++ b/agents/todo-py/index.yaml @@ -0,0 +1 @@ +../todo-sh/index.yaml
\ No newline at end of file diff --git a/agents/todo-py/tools.py b/agents/todo-py/tools.py new file mode 100644 index 0000000..0aa5f4b --- /dev/null +++ b/agents/todo-py/tools.py @@ -0,0 +1,62 @@ +import json +import sys +import os +from json import JSONDecodeError + + +def add_todo(desc: str): + """Add a new todo item + Args: + desc: The task description + """ + todos_file = _get_todos_file() + try: + with open(todos_file, "r") as f: + data = json.load(f) + except (FileNotFoundError, JSONDecodeError): + data = [] + num = max([item["id"] for item in data] + [0]) + 1 + data.append({"id": num, "desc": desc}) + with open(todos_file, "w") as f: + json.dump(data, f) + print(f"Successfully added todo id={num}") + + +def del_todo(id: int): + """Delete an existing todo item + Args: + id: The task id + """ + todos_file = _get_todos_file() + try: + with open(todos_file, "r") as f: + data = json.load(f) + except (FileNotFoundError, JSONDecodeError): + print("Empty todo list") + return + data = [item for item in data if item["id"] != id] + with open(todos_file, "w") as f: + json.dump(data, f) + print(f"Successfully deleted todo id={id}") + + +def list_todos(): + """Display the current todo list in json format.""" + todos_file = _get_todos_file() + try: + with open(todos_file, "r") as f: + print(f.read()) + except FileNotFoundError: + print("[]") + + +def clear_todos(): + """Delete the entire todo list.""" + os.remove(_get_todos_file()) + + +def _get_todos_file() -> str: + cache_dir=os.environ.get("LLM_AGENT_CACHE_DIR", "/tmp") + if not os.path.exists(cache_dir): + os.makedirs(cache_dir, exist_ok=True) + return os.path.join(cache_dir, "todos.json") |
