diff options
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/js/may_execute_js_code.js | 22 | ||||
| -rw-r--r-- | tools/py/may_execute_py_code.py | 21 | ||||
| -rw-r--r-- | tools/rb/may_execute_rb_code.rb | 22 | ||||
| -rwxr-xr-x | tools/sh/get_current_time.sh | 11 | ||||
| -rwxr-xr-x | tools/sh/get_current_weather.sh | 11 | ||||
| -rwxr-xr-x | tools/sh/get_web_page.sh | 14 | ||||
| -rwxr-xr-x | tools/sh/may_execute_command.sh | 11 | ||||
| -rwxr-xr-x | tools/sh/search_duckduckgo.sh | 16 | ||||
| -rwxr-xr-x | tools/sh/search_wolframalpha.sh | 24 |
9 files changed, 152 insertions, 0 deletions
diff --git a/tools/js/may_execute_js_code.js b/tools/js/may_execute_js_code.js new file mode 100644 index 0000000..9575582 --- /dev/null +++ b/tools/js/may_execute_js_code.js @@ -0,0 +1,22 @@ +exports.declarate = function declarate() { + return { + "name": "may_execute_js_code", + "description": "Runs the javascript code in node.js.", + "parameters": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Javascript code to execute, such as `console.log(\"hello world\")`" + } + }, + "required": [ + "code" + ] + } + } +} + +exports.execute = function execute(data) { + eval(data.code) +} diff --git a/tools/py/may_execute_py_code.py b/tools/py/may_execute_py_code.py new file mode 100644 index 0000000..01a59b9 --- /dev/null +++ b/tools/py/may_execute_py_code.py @@ -0,0 +1,21 @@ +def declarate(): + return { + "name": "may_execute_py_code", + "description": "Runs the python code.", + "parameters": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Python code to execute, such as `print(\"hello world\")`" + } + }, + "required": [ + "code" + ] + } + } + + +def execute(data): + exec(data["code"]) diff --git a/tools/rb/may_execute_rb_code.rb b/tools/rb/may_execute_rb_code.rb new file mode 100644 index 0000000..a1f9821 --- /dev/null +++ b/tools/rb/may_execute_rb_code.rb @@ -0,0 +1,22 @@ +def declarate + { + "name": "may_execute_rb_code", + "description": "Runs the ruby code.", + "parameters": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Ruby code to execute, such as `puts \"hello world\"`" + } + }, + "required": [ + "code" + ] + } + } +end + +def execute(data) + eval(data["code"]) +end diff --git a/tools/sh/get_current_time.sh b/tools/sh/get_current_time.sh new file mode 100755 index 0000000..26a25d8 --- /dev/null +++ b/tools/sh/get_current_time.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +set -e + +# @describe Get the current time. + +main() { + date +} + +eval "$(argc --argc-eval "$0" "$@")" + diff --git a/tools/sh/get_current_weather.sh b/tools/sh/get_current_weather.sh new file mode 100755 index 0000000..47102e0 --- /dev/null +++ b/tools/sh/get_current_weather.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +set -e + +# @describe Get the current weather in a given location. +# @option --location! The city and optionally the state or country, e.g., "London", "San Francisco, CA". + +main() { + curl -fsSL "https://wttr.in/$(echo "$argc_location" | sed 's/ /+/g')?format=4&M" +} + +eval "$(argc --argc-eval "$0" "$@")" diff --git a/tools/sh/get_web_page.sh b/tools/sh/get_web_page.sh new file mode 100755 index 0000000..65e6d2a --- /dev/null +++ b/tools/sh/get_web_page.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +set -e + +# @describe Fetches the HTML content from a specified webpage URL and converts it to Markdown format. +# Use it to answer user questions that require up-to-date content from web pages. +# @meta require-tools curl,pandoc,sed +# @option --url! The URL to scrape. + +main() { + # span and div tags are dropped from the HTML https://pandoc.org/MANUAL.html#raw-htmltex and sed removes any inline SVG images in image tags from the Markdown content. + curl -fsSL "$argc_url" | pandoc -f html-native_divs-native_spans -t gfm-raw_html | sed -E 's/!\[.*?\]\((data:image\/svg\+xml[^)]+)\)//g' +} + +eval "$(argc --argc-eval "$0" "$@")" diff --git a/tools/sh/may_execute_command.sh b/tools/sh/may_execute_command.sh new file mode 100755 index 0000000..5aad4a3 --- /dev/null +++ b/tools/sh/may_execute_command.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +set -e + +# @describe Executes a shell command. +# @option --command! Command to execute, such as `ls -la` + +main() { + eval "$argc_command" +} + +eval "$(argc --argc-eval "$0" "$@")"
\ No newline at end of file diff --git a/tools/sh/search_duckduckgo.sh b/tools/sh/search_duckduckgo.sh new file mode 100755 index 0000000..c5ab565 --- /dev/null +++ b/tools/sh/search_duckduckgo.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +set -e + +# @describe Takes in a query string and returns search result from DuckDuckGo. +# Use it to answer user questions that require dates, facts, real-time information, or news. +# This ensures accurate and up-to-date answers. + +# @meta require-tools ddgr +# @env DDG_MAX_RESULTS=5 The max results to return. +# @option --query! The query to search for. + +main() { + ddgr -n $DDG_MAX_RESULTS --json "$argc_query" +} + +eval "$(argc --argc-eval "$0" "$@")" diff --git a/tools/sh/search_wolframalpha.sh b/tools/sh/search_wolframalpha.sh new file mode 100755 index 0000000..a2dfdc7 --- /dev/null +++ b/tools/sh/search_wolframalpha.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash +set -e + +# @describe Get an answer to a question using Wolfram Alpha. Input should the query in English. +# Use it to answer user questions that require computation, detailed facts, data analysis, or complex queries. +# This ensures accurate and precise answers. + +# @option --query! The query to search for. +# @env WOLFRAM_API_ID! + +main() { + local curl_args=( + -sSf -G + --data-urlencode "output=JSON" + --data-urlencode "format=plaintext" + --data-urlencode "input=$argc_query" + --data-urlencode "appid=$WOLFRAM_API_ID" + "https://api.wolframalpha.com/v2/query" + ) + curl "${curl_args[@]}" | \ + jq -r '.queryresult.pods[] | select(.subpods[0].plaintext != "")' +} + +eval "$(argc --argc-eval "$0" "$@")" |
