SimpleChatTC: More generic tooljs, SimpCalc, some main skeleton

Make tooljs structure and flow more generic

Add a simple_calculator tool/function call logic

Add initial skeleton wrt the main tools.mjs file.
This commit is contained in:
hanishkvc 2025-10-11 00:02:32 +05:30
parent f1aa0ee778
commit 46f0304105
2 changed files with 84 additions and 19 deletions

View File

@ -1,15 +1,17 @@
//@ts-check //@ts-check
// Helpers to handle tools/functions calling // DANGER DANGER DANGER - Simple and Stupid - Use from a discardable VM only
// Helpers to handle tools/functions calling wrt
// * javascript interpreter
// * simple arithmatic calculator
// by Humans for All // by Humans for All
// //
let metas = [ let js_meta = {
{
"type": "function", "type": "function",
"function": { "function": {
"name": "javascript", "name": "javascript",
"description":"Runs code in an javascript interpreter and returns the result of the execution after 60 seconds.", "description": "Runs code in an javascript interpreter and returns the result of the execution after few seconds",
"parameters": { "parameters": {
"type": "object", "type": "object",
"properties": { "properties": {
@ -22,19 +24,60 @@ let metas = [
} }
} }
} }
]
/** /**
* Implementation of the javascript interpretor logic. Minimal skeleton for now. * Implementation of the javascript interpretor logic. Minimal skeleton for now.
* ALERT: Has access to the javascript environment and can mess with it and beyond
* @param {any} obj * @param {any} obj
*/ */
function tool_run(obj) { function js_run(obj) {
let func = new Function(obj["code"]) let func = new Function(obj["code"])
func() func()
} }
let tswitch = {
"javascript": tool_run, let calc_meta = {
"type": "function",
"function": {
"name": "simple_calculator",
"description": "Calculates the provided arithmatic expression using javascript interpreter and returns the result of the execution after few seconds",
"parameters": {
"type": "object",
"properties": {
"arithexpr":{
"type":"string",
"description":"The arithmatic expression that will be calculated using javascript interpreter."
}
},
"required": ["arithexpr"]
}
}
}
/**
* Implementation of the simple calculator logic. Minimal skeleton for now.
* ALERT: Has access to the javascript environment and can mess with it and beyond
* @param {any} obj
*/
function calc_run(obj) {
let func = new Function(obj["arithexpr"])
func()
}
/**
* @type {Object<string, Object>}
*/
export let tc_switch = {
"javascript": {
"handler": js_run,
"meta": js_meta
},
"simple_calculator": {
"handler": calc_run,
"meta": calc_meta
}
} }

View File

@ -1,7 +1,29 @@
//@ts-check //@ts-check
// Helpers to handle tools/functions calling // DANGER DANGER DANGER - Simple and Stupid - Use from a discardable VM only
// Helpers to handle tools/functions calling in a direct and dangerous way
// by Humans for All // by Humans for All
// //
import * as tjs from './tooljs.mjs' import * as tjs from './tooljs.mjs'
/**
* @type {Object<string,Object>}
*/
let tc_switch = {}
export function setup() {
for (const key in tjs.tc_switch) {
tc_switch[key] = tjs.tc_switch[key]
}
}
export function meta() {
let tools = []
for (const key in tc_switch) {
tools.push(tc_switch[key]["meta"])
}
return tools
}