aboutsummaryrefslogtreecommitdiffstats
path: root/agents/todo-py
diff options
context:
space:
mode:
Diffstat (limited to 'agents/todo-py')
l---------agents/todo-py/index.yaml1
-rw-r--r--agents/todo-py/tools.py62
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")