diff options
| author | sigoden <sigoden@gmail.com> | 2024-06-22 06:52:45 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-22 06:52:45 +0800 |
| commit | adfb7c2b49ba4ba691e89683afa700eabbb3388c (patch) | |
| tree | 730829361b85a15e5dd0d323ae185c00068ce053 /agents/todo-py/tools.py | |
| parent | a799428b397ac7789a91cf94a9c408ee8a2dd6e2 (diff) | |
| download | llm-functions-docker-adfb7c2b49ba4ba691e89683afa700eabbb3388c.tar.gz | |
refactor: rename bot to agent (#44)
Diffstat (limited to 'agents/todo-py/tools.py')
| -rw-r--r-- | agents/todo-py/tools.py | 62 |
1 files changed, 62 insertions, 0 deletions
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") |
