SimpleChatTC:ChatSessionID: Get all handlers to account for chatid

This should ensure that tool call responses can be mapped back to
the chat session for which it was triggered.
This commit is contained in:
hanishkvc 2025-10-28 02:50:28 +05:30
parent 734beb08f5
commit 25df32b553
4 changed files with 21 additions and 15 deletions

View File

@ -458,7 +458,7 @@ Provide a handler which
Update the tc_switch to include a object entry for the tool, which inturn includes
* the meta data wrt the tool call
* a reference to the handler - the handler should take toolCallId, toolName and toolArgs.
* a reference to the handler - handler should take chatSessionId, toolCallId, toolName and toolArgs.
It should pass these along to the tools web worker, if used.
* the result key (was used previously, may use in future, but for now left as is)

View File

@ -32,12 +32,13 @@ let js_meta = {
/**
* Implementation of the javascript interpretor logic. Minimal skeleton for now.
* ALERT: Has access to the javascript web worker environment and can mess with it and beyond
* @param {string} chatid
* @param {string} toolcallid
* @param {string} toolname
* @param {any} obj
*/
function js_run(toolcallid, toolname, obj) {
gToolsWorker.postMessage({ id: toolcallid, name: toolname, code: obj["code"]})
function js_run(chatid, toolcallid, toolname, obj) {
gToolsWorker.postMessage({ cid: chatid, tcid: toolcallid, name: toolname, code: obj["code"]})
}
@ -63,12 +64,13 @@ let calc_meta = {
/**
* Implementation of the simple calculator logic. Minimal skeleton for now.
* ALERT: Has access to the javascript web worker environment and can mess with it and beyond
* @param {string} chatid
* @param {string} toolcallid
* @param {string} toolname
* @param {any} obj
*/
function calc_run(toolcallid, toolname, obj) {
gToolsWorker.postMessage({ id: toolcallid, name: toolname, code: `console.log(${obj["arithexpr"]})`})
function calc_run(chatid, toolcallid, toolname, obj) {
gToolsWorker.postMessage({ cid: chatid, tcid: toolcallid, name: toolname, code: `console.log(${obj["arithexpr"]})`})
}

View File

@ -23,6 +23,6 @@ self.onmessage = async function (ev) {
console.log(`\n\nTool/Function call "${ev.data.name}" raised an exception:${error.name}:${error.message}\n\n`)
}
tconsole.console_revert()
self.postMessage({ id: ev.data.id, name: ev.data.name, data: tconsole.gConsoleStr})
self.postMessage({ cid: ev.data.cid, tcid: ev.data.tcid, name: ev.data.name, data: tconsole.gConsoleStr})
console.info("DBUG:WW:OnMessage done")
}

View File

@ -43,6 +43,7 @@ function bearer_transform() {
* * with a predefined query token and value wrt a predefined path
* NOTE: Initial go, handles textual data type.
* ALERT: Accesses a seperate/external web proxy/caching server, be aware and careful
* @param {string} chatid
* @param {string} toolcallid
* @param {string} toolname
* @param {any} obj
@ -50,7 +51,7 @@ function bearer_transform() {
* @param {string} qkey
* @param {string} qvalue
*/
async function proxyserver_get_1arg(toolcallid, toolname, obj, path, qkey, qvalue) {
async function proxyserver_get_1arg(chatid, toolcallid, toolname, obj, path, qkey, qvalue) {
if (gToolsWorker.onmessage != null) {
let newUrl = `${get_gme().tools.proxyUrl}/${path}?${qkey}=${qvalue}`
let btoken = await bearer_transform()
@ -60,9 +61,9 @@ async function proxyserver_get_1arg(toolcallid, toolname, obj, path, qkey, qvalu
}
return resp.text()
}).then(data => {
message_toolsworker(new MessageEvent('message', {data: {id: toolcallid, name: toolname, data: data}}))
message_toolsworker(new MessageEvent('message', {data: {cid: chatid, tcid: toolcallid, name: toolname, data: data}}))
}).catch((err)=>{
message_toolsworker(new MessageEvent('message', {data: {id: toolcallid, name: toolname, data: `Error:${err}`}}))
message_toolsworker(new MessageEvent('message', {data: {cid: chatid, tcid: toolcallid, name: toolname, data: `Error:${err}`}}))
})
}
}
@ -122,12 +123,13 @@ let fetchweburlraw_meta = {
* * with a query token named url wrt the path urlraw
* which gives the actual url to fetch
* ALERT: Accesses a seperate/external web proxy/caching server, be aware and careful
* @param {string} chatid
* @param {string} toolcallid
* @param {string} toolname
* @param {any} obj
*/
function fetchweburlraw_run(toolcallid, toolname, obj) {
return proxyserver_get_1arg(toolcallid, toolname, obj, 'urlraw', 'url', encodeURIComponent(obj.url));
function fetchweburlraw_run(chatid, toolcallid, toolname, obj) {
return proxyserver_get_1arg(chatid, toolcallid, toolname, obj, 'urlraw', 'url', encodeURIComponent(obj.url));
}
@ -179,12 +181,13 @@ let fetchweburltext_meta = {
* * strips out head as well as any script, style, header, footer, nav and so blocks in body
* before returning remaining body contents.
* ALERT: Accesses a seperate/external web proxy/caching server, be aware and careful
* @param {string} chatid
* @param {string} toolcallid
* @param {string} toolname
* @param {any} obj
*/
function fetchweburltext_run(toolcallid, toolname, obj) {
return proxyserver_get_1arg(toolcallid, toolname, obj, 'urltext', 'url', encodeURIComponent(obj.url));
function fetchweburltext_run(chatid, toolcallid, toolname, obj) {
return proxyserver_get_1arg(chatid, toolcallid, toolname, obj, 'urltext', 'url', encodeURIComponent(obj.url));
}
@ -237,16 +240,17 @@ let searchwebtext_meta = {
* * strips out head as well as any script, style, header, footer, nav and so blocks in body
* before returning remaining body contents.
* ALERT: Accesses a seperate/external web proxy/caching server, be aware and careful
* @param {string} chatid
* @param {string} toolcallid
* @param {string} toolname
* @param {any} obj
*/
function searchwebtext_run(toolcallid, toolname, obj) {
function searchwebtext_run(chatid, toolcallid, toolname, obj) {
if (gToolsWorker.onmessage != null) {
/** @type {string} */
let searchUrl = get_gme().tools.searchUrl;
searchUrl = searchUrl.replace("SEARCHWORDS", encodeURIComponent(obj.words));
return proxyserver_get_1arg(toolcallid, toolname, obj, 'urltext', 'url', encodeURIComponent(searchUrl));
return proxyserver_get_1arg(chatid, toolcallid, toolname, obj, 'urltext', 'url', encodeURIComponent(searchUrl));
}
}