diff options
Diffstat (limited to 'bots')
| l--------- | bots/todo-js/index.yaml | 1 | ||||
| -rw-r--r-- | bots/todo-js/tools.js | 68 | ||||
| l--------- | bots/todo-py/index.yaml | 1 | ||||
| -rw-r--r-- | bots/todo-py/tools.py | 62 | ||||
| -rw-r--r-- | bots/todo-sh/index.yaml | 19 | ||||
| -rwxr-xr-x | bots/todo-sh/tools.sh | 67 |
6 files changed, 0 insertions, 218 deletions
diff --git a/bots/todo-js/index.yaml b/bots/todo-js/index.yaml deleted file mode 120000 index 0d19c11..0000000 --- a/bots/todo-js/index.yaml +++ /dev/null @@ -1 +0,0 @@ -../todo-sh/index.yaml
\ No newline at end of file diff --git a/bots/todo-js/tools.js b/bots/todo-js/tools.js deleted file mode 100644 index 0c9db49..0000000 --- a/bots/todo-js/tools.js +++ /dev/null @@ -1,68 +0,0 @@ -const fs = require('fs'); -const path = require('path'); - -/** - * Add a new todo item - * @typedef {Object} AddTodoArgs - * @property {string} desc - The task description - * @param {AddTodoArgs} args - */ -exports.add_todo = function addTodo(args) { - const todosFile = _getTodosFile(); - if (fs.existsSync(todosFile)) { - const num = JSON.parse(fs.readFileSync(todosFile)).reduce((max, item) => Math.max(max, item.id), 0) + 1; - const data = fs.readFileSync(todosFile); - fs.writeFileSync(todosFile, JSON.stringify([...JSON.parse(data), { id: num, desc: args.desc }])); - console.log(`Successfully added todo id=${num}`); - } else { - fs.writeFileSync(todosFile, JSON.stringify([{ id: 1, desc: args.desc }])); - console.log('Successfully added todo id=1'); - } -} - -/** - * Delete an existing todo item - * @typedef {Object} DelTodoArgs - * @property {number} id - The task id - * @param {DelTodoArgs} args - */ -exports.del_todo = function delTodo(args) { - const todosFile = _getTodosFile(); - if (fs.existsSync(todosFile)) { - const data = fs.readFileSync(todosFile); - const newData = JSON.parse(data).filter(item => item.id !== args.id); - fs.writeFileSync(todosFile, JSON.stringify(newData)); - console.log(`Successfully deleted todo id=${args.id}`); - } else { - console.log('Empty todo list'); - } -} - -/** - * Display the current todo list in json format. - */ -exports.list_todos = function listTodos() { - const todosFile = _getTodosFile(); - if (fs.existsSync(todosFile)) { - console.log(fs.readFileSync(todosFile, "utf8")); - } else { - console.log("[]"); - } -} - -/** - * Delete the entire todo list. - */ -exports.clear_todos = function clearTodos() { - const todosFile = _getTodosFile(); - fs.unlinkSync(todosFile) - console.log("Successfully deleted entry todo list"); -} - -function _getTodosFile() { - const cacheDir = process.env.LLM_BOT_CACHE_DIR || '/tmp'; - if (!fs.existsSync(cacheDir)) { - fs.mkdirSync(cacheDir, { recursive: true }); - } - return path.join(cacheDir, 'todos.json'); -} diff --git a/bots/todo-py/index.yaml b/bots/todo-py/index.yaml deleted file mode 120000 index 0d19c11..0000000 --- a/bots/todo-py/index.yaml +++ /dev/null @@ -1 +0,0 @@ -../todo-sh/index.yaml
\ No newline at end of file diff --git a/bots/todo-py/tools.py b/bots/todo-py/tools.py deleted file mode 100644 index a531b51..0000000 --- a/bots/todo-py/tools.py +++ /dev/null @@ -1,62 +0,0 @@ -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_BOT_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") diff --git a/bots/todo-sh/index.yaml b/bots/todo-sh/index.yaml deleted file mode 100644 index a3c8eb1..0000000 --- a/bots/todo-sh/index.yaml +++ /dev/null @@ -1,19 +0,0 @@ -name: TodoBot -description: Your name is TodoBot and you are a helpful chatbot that manages a todo list. -instructions: | - You will be provided with a list of todos. - Users can interact with you using the following commands: - * add_todo: Add a todo to the list. - * rm_todo: Remove a todo from the list. - * list_todos: Display the current todo list. - * clear_todos: Delete the entire todo list. - Based on the interaction, ensure that you provide appropriate confirmations or errors for the requested operation. For example: - - Confirmations: "Todo item added successfully!", "Todo item removed successfully!", "All todo items deleted!" - - Errors: "Cannot add todo item, missing description.", "Todo item with id {id} not found.", "No todo items to delete." - Make sure you understand the user request properly before performing any action. If unsure, ask clarifying questions like "Do you want to remove all todos or just a specific one?" -conversation_starters: - - "Add a new todo item 'Finish report'." - - "Remove the todo item with id=2." - - "Delete all my todos." - - "What todos do I have pending?" - - "How can I remove a specific todo item?"
\ No newline at end of file diff --git a/bots/todo-sh/tools.sh b/bots/todo-sh/tools.sh deleted file mode 100755 index e387d75..0000000 --- a/bots/todo-sh/tools.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/usr/bin/env bash -set -e - -# @cmd Add a new todo item -# @option --desc! The task description -add_todo() { - todos_file="$(_get_todos_file)" - if [[ -f "$todos_file" ]]; then - num="$(cat "$todos_file" | jq '[.[].id] | max + 1')" - data="$(cat "$todos_file")" - else - num=1 - data="[]" - fi - echo "$data" | \ - jq --arg new_id $num \ - --arg new_desc "$argc_desc" \ - '. += [{"id": $new_id | tonumber, "desc": $new_desc}]' \ - > "$todos_file" - echo "Successfully added todo id=$num" -} - -# @cmd Delete an existing todo item -# @option --id! <INT> The task id -del_todo() { - todos_file="$(_get_todos_file)" - if [[ -f "$todos_file" ]]; then - data="$(cat "$todos_file")" - echo "$data" | \ - jq --arg id $argc_id '[.[] | select(.id != ($id | tonumber))]' \ - > "$todos_file" - echo "Successfully deleted todo id=$argc_id" - else - echo "Empty todo list" - fi -} - -# @cmd Display the current todo list in json format. -list_todos() { - todos_file="$(_get_todos_file)" - if [[ -f "$todos_file" ]]; then - cat "$todos_file" - else - echo '[]' - fi -} - -# @cmd Delete the entire todo list. -clear_todos() { - todos_file="$(_get_todos_file)" - if [[ -f "$todos_file" ]]; then - rm -rf "$todos_file" - fi - echo "Successfully deleted entry todo list" -} - -_argc_before() { - todos_file="$(_get_todos_file)" - mkdir -p "$(dirname "$todos_file")" -} - -_get_todos_file() { - echo "${LLM_BOT_CACHE_DIR:-/tmp}/todos.json" -} - -# See more details at https://github.com/sigoden/argc -eval "$(argc --argc-eval "$0" "$@")" |
