diff --git a/tools/server/public_simplechat/simplechat.js b/tools/server/public_simplechat/simplechat.js
index 8c9fa56698..f0156e007f 100644
--- a/tools/server/public_simplechat/simplechat.js
+++ b/tools/server/public_simplechat/simplechat.js
@@ -190,6 +190,7 @@ class SimpleChat {
/**
* Add an entry into xchat
+ * Also update iLastSys system prompt index tracker
* @param {string} role
* @param {string|undefined|null} content
*/
@@ -398,6 +399,7 @@ class SimpleChat {
/**
* Allow setting of system prompt, at any time.
+ * Updates the system prompt, if one was never set or if the newly passed is different from the last set system prompt.
* @param {string} sysPrompt
* @param {string} msgTag
*/
@@ -523,6 +525,24 @@ class SimpleChat {
return theResp;
}
+ /**
+ * Call the requested tool/function and get its response
+ * @param {AssistantResponse} ar
+ */
+ async handle_toolcall(ar) {
+ let toolname = ar.response.toolname.trim();
+ if (toolname === "") {
+ return undefined
+ }
+ for (const fn in tools.tc_switch) {
+ if (fn == toolname) {
+ tools.tc_switch[fn]["handler"](JSON.parse(ar.response.toolargs))
+ return tools.tc_switch[fn]["result"]
+ }
+ }
+ return `Unknown Tool/Function Call:${toolname}`
+ }
+
}
@@ -694,6 +714,10 @@ class MultiChatUI {
} else {
console.debug(`DBUG:SimpleChat:MCUI:HandleUserSubmit:ChatId has changed:[${chatId}] [${this.curChatId}]`);
}
+ let toolResult = await chat.handle_toolcall(theResp)
+ if (toolResult !== undefined) {
+ this.elInUser.value = `${toolResult}`
+ }
this.ui_reset_userinput();
}
diff --git a/tools/server/public_simplechat/tools.mjs b/tools/server/public_simplechat/tools.mjs
index d249a3f543..adf87fbdf4 100644
--- a/tools/server/public_simplechat/tools.mjs
+++ b/tools/server/public_simplechat/tools.mjs
@@ -11,7 +11,7 @@ import * as tjs from './tooljs.mjs'
/**
* @type {Object>}
*/
-let tc_switch = {}
+export let tc_switch = {}
export function setup() {
for (const key in tjs.tc_switch) {