SimpleChatTC:ToolCallWeby: Cleanup the toolweb module flow
Avoid code duplication, by creating helpers for setup and toolcall. Also send indication of the path that will be used, when checking for simpleproxy.py server to be running at runtime setup.
This commit is contained in:
parent
de6f370d3b
commit
221b5a9228
|
|
@ -20,14 +20,73 @@ function message_toolsworker(mev) {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve a member of the global Me instance
|
* Retrieve the global Me instance
|
||||||
*/
|
*/
|
||||||
function get_gme() {
|
function get_gme() {
|
||||||
return (/** @type {Object<string, Object<string, any>>} */(/** @type {unknown} */(document)))['gMe']
|
return (/** @type {Object<string, Object<string, any>>} */(/** @type {unknown} */(document)))['gMe']
|
||||||
//return (/** @type {Object<string, Object<string, any>>} */(/** @type {unknown} */(document)))['gMe'][key]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper http get logic wrt the bundled SimpleProxy server,
|
||||||
|
* which helps execute a given proxy dependent tool call.
|
||||||
|
* Expects the simple minded proxy server to be running locally
|
||||||
|
* * listening on a configured port
|
||||||
|
* * expecting http requests
|
||||||
|
* * 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} toolcallid
|
||||||
|
* @param {string} toolname
|
||||||
|
* @param {any} obj
|
||||||
|
* @param {string} path
|
||||||
|
* @param {string} qkey
|
||||||
|
* @param {string} qvalue
|
||||||
|
*/
|
||||||
|
function proxyserver_get_1arg(toolcallid, toolname, obj, path, qkey, qvalue) {
|
||||||
|
if (gToolsWorker.onmessage != null) {
|
||||||
|
let newUrl = `${get_gme().tools.fetchProxyUrl}/${path}?${qkey}=${qvalue}`
|
||||||
|
fetch(newUrl).then(resp => {
|
||||||
|
if (!resp.ok) {
|
||||||
|
throw new Error(`${resp.status}:${resp.statusText}`);
|
||||||
|
}
|
||||||
|
return resp.text()
|
||||||
|
}).then(data => {
|
||||||
|
message_toolsworker(new MessageEvent('message', {data: {id: toolcallid, name: toolname, data: data}}))
|
||||||
|
}).catch((err)=>{
|
||||||
|
message_toolsworker(new MessageEvent('message', {data: {id: toolcallid, name: toolname, data: `Error:${err}`}}))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setup a proxy server dependent tool call
|
||||||
|
* NOTE: Currently the logic is setup for the bundled simpleproxy.py
|
||||||
|
* @param {string} tag
|
||||||
|
* @param {string} tcPath
|
||||||
|
* @param {string} tcName
|
||||||
|
* @param {{ [x: string]: any; }} tcsData
|
||||||
|
* @param {Object<string, Object<string, any>>} tcs
|
||||||
|
*/
|
||||||
|
async function proxyserver_tc_setup(tag, tcPath, tcName, tcsData, tcs) {
|
||||||
|
await fetch(`${get_gme().tools.fetchProxyUrl}/aum?url=${tcPath}.jambudweepe.akashaganga.multiverse.987654321123456789`).then(resp=>{
|
||||||
|
if (resp.statusText != 'bharatavarshe') {
|
||||||
|
console.log(`WARN:ToolWeb:${tag}:Dont forget to run the bundled local.tools/simpleproxy.py to enable me`)
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
console.log(`INFO:ToolWeb:${tag}:Enabling...`)
|
||||||
|
}
|
||||||
|
tcs[tcName] = tcsData;
|
||||||
|
}).catch(err=>console.log(`WARN:ToolWeb:${tag}:ProxyServer missing?:${err}\nDont forget to run the bundled local.tools/simpleproxy.py`))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Fetch Web Url Raw
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
let fetchweburlraw_meta = {
|
let fetchweburlraw_meta = {
|
||||||
"type": "function",
|
"type": "function",
|
||||||
"function": {
|
"function": {
|
||||||
|
|
@ -48,7 +107,7 @@ let fetchweburlraw_meta = {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implementation of the fetch web url raw logic. Dumb initial go.
|
* Implementation of the fetch web url raw logic.
|
||||||
* Expects a simple minded proxy server to be running locally
|
* Expects a simple minded proxy server to be running locally
|
||||||
* * listening on a configured port
|
* * listening on a configured port
|
||||||
* * expecting http requests
|
* * expecting http requests
|
||||||
|
|
@ -60,20 +119,7 @@ let fetchweburlraw_meta = {
|
||||||
* @param {any} obj
|
* @param {any} obj
|
||||||
*/
|
*/
|
||||||
function fetchweburlraw_run(toolcallid, toolname, obj) {
|
function fetchweburlraw_run(toolcallid, toolname, obj) {
|
||||||
if (gToolsWorker.onmessage != null) {
|
return proxyserver_get_1arg(toolcallid, toolname, obj, 'urlraw', 'url', encodeURIComponent(obj.url));
|
||||||
// @ts-ignore
|
|
||||||
let newUrl = `${document['gMe'].tools.fetchProxyUrl}/urlraw?url=${encodeURIComponent(obj.url)}`
|
|
||||||
fetch(newUrl).then(resp => {
|
|
||||||
if (!resp.ok) {
|
|
||||||
throw new Error(`${resp.status}:${resp.statusText}`);
|
|
||||||
}
|
|
||||||
return resp.text()
|
|
||||||
}).then(data => {
|
|
||||||
message_toolsworker(new MessageEvent('message', {data: {id: toolcallid, name: toolname, data: data}}))
|
|
||||||
}).catch((err)=>{
|
|
||||||
message_toolsworker(new MessageEvent('message', {data: {id: toolcallid, name: toolname, data: `Error:${err}`}}))
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -83,23 +129,19 @@ function fetchweburlraw_run(toolcallid, toolname, obj) {
|
||||||
* @param {Object<string, Object<string, any>>} tcs
|
* @param {Object<string, Object<string, any>>} tcs
|
||||||
*/
|
*/
|
||||||
async function fetchweburlraw_setup(tcs) {
|
async function fetchweburlraw_setup(tcs) {
|
||||||
// @ts-ignore
|
return proxyserver_tc_setup('FetchWebUrlRaw', 'urlraw', 'fetch_web_url_raw', {
|
||||||
let got = await fetch(`${document["gMe"].tools.fetchProxyUrl}/aum?url=jambudweepe.multiverse.987654321123456789`).then(resp=>{
|
|
||||||
if (resp.statusText != 'bharatavarshe') {
|
|
||||||
console.log("WARN:ToolJS:FetchWebUrlRaw:Dont forget to run the bundled local.tools/simpleproxy.py to enable me")
|
|
||||||
return
|
|
||||||
} else {
|
|
||||||
console.log("INFO:ToolJS:FetchWebUrlRaw:Enabling...")
|
|
||||||
}
|
|
||||||
tcs["fetch_web_url_raw"] = {
|
|
||||||
"handler": fetchweburlraw_run,
|
"handler": fetchweburlraw_run,
|
||||||
"meta": fetchweburlraw_meta,
|
"meta": fetchweburlraw_meta,
|
||||||
"result": ""
|
"result": ""
|
||||||
};
|
}, tcs);
|
||||||
}).catch(err=>console.log(`WARN:ToolJS:FetchWebUrlRaw:ProxyServer missing?:${err}\nDont forget to run the bundled local.tools/simpleproxy.py`))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Fetch Web Url Text
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
let fetchweburltext_meta = {
|
let fetchweburltext_meta = {
|
||||||
"type": "function",
|
"type": "function",
|
||||||
"function": {
|
"function": {
|
||||||
|
|
@ -120,7 +162,7 @@ let fetchweburltext_meta = {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implementation of the fetch web url text logic. Dumb initial go.
|
* Implementation of the fetch web url text logic.
|
||||||
* Expects a simple minded proxy server to be running locally
|
* Expects a simple minded proxy server to be running locally
|
||||||
* * listening on a configured port
|
* * listening on a configured port
|
||||||
* * expecting http requests
|
* * expecting http requests
|
||||||
|
|
@ -134,20 +176,7 @@ let fetchweburltext_meta = {
|
||||||
* @param {any} obj
|
* @param {any} obj
|
||||||
*/
|
*/
|
||||||
function fetchweburltext_run(toolcallid, toolname, obj) {
|
function fetchweburltext_run(toolcallid, toolname, obj) {
|
||||||
if (gToolsWorker.onmessage != null) {
|
return proxyserver_get_1arg(toolcallid, toolname, obj, 'urltext', 'url', encodeURIComponent(obj.url));
|
||||||
// @ts-ignore
|
|
||||||
let newUrl = `${document['gMe'].tools.fetchProxyUrl}/urltext?url=${encodeURIComponent(obj.url)}`
|
|
||||||
fetch(newUrl).then(resp => {
|
|
||||||
if (!resp.ok) {
|
|
||||||
throw new Error(`${resp.status}:${resp.statusText}`);
|
|
||||||
}
|
|
||||||
return resp.text()
|
|
||||||
}).then(data => {
|
|
||||||
message_toolsworker(new MessageEvent('message', {data: {id: toolcallid, name: toolname, data: data}}))
|
|
||||||
}).catch((err)=>{
|
|
||||||
message_toolsworker(new MessageEvent('message', {data: {id: toolcallid, name: toolname, data: `Error:${err}`}}))
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -157,20 +186,11 @@ function fetchweburltext_run(toolcallid, toolname, obj) {
|
||||||
* @param {Object<string, Object<string, any>>} tcs
|
* @param {Object<string, Object<string, any>>} tcs
|
||||||
*/
|
*/
|
||||||
async function fetchweburltext_setup(tcs) {
|
async function fetchweburltext_setup(tcs) {
|
||||||
// @ts-ignore
|
return proxyserver_tc_setup('FetchWebUrlText', 'urltext', 'fetch_web_url_text', {
|
||||||
let got = await fetch(`${document["gMe"].tools.fetchProxyUrl}/aum?url=jambudweepe.akashaganga.multiverse.987654321123456789`).then(resp=>{
|
|
||||||
if (resp.statusText != 'bharatavarshe') {
|
|
||||||
console.log("WARN:ToolJS:FetchWebUrlText:Dont forget to run the bundled local.tools/simpleproxy.py to enable me")
|
|
||||||
return
|
|
||||||
} else {
|
|
||||||
console.log("INFO:ToolJS:FetchWebUrlText:Enabling...")
|
|
||||||
}
|
|
||||||
tcs["fetch_web_url_text"] = {
|
|
||||||
"handler": fetchweburltext_run,
|
"handler": fetchweburltext_run,
|
||||||
"meta": fetchweburltext_meta,
|
"meta": fetchweburltext_meta,
|
||||||
"result": ""
|
"result": ""
|
||||||
};
|
}, tcs);
|
||||||
}).catch(err=>console.log(`WARN:ToolJS:FetchWebUrlText:ProxyServer missing?:${err}\nDont forget to run the bundled local.tools/simpleproxy.py`))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -200,6 +220,7 @@ let searchwebtext_meta = {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implementation of the search web text logic. Initial go.
|
* Implementation of the search web text logic. Initial go.
|
||||||
|
* Builds on urltext path of the bundled simpleproxy.py.
|
||||||
* Expects simpleproxy.py server to be running locally
|
* Expects simpleproxy.py server to be running locally
|
||||||
* * listening on a configured port
|
* * listening on a configured port
|
||||||
* * expecting http requests
|
* * expecting http requests
|
||||||
|
|
@ -216,18 +237,8 @@ function searchwebtext_run(toolcallid, toolname, obj) {
|
||||||
if (gToolsWorker.onmessage != null) {
|
if (gToolsWorker.onmessage != null) {
|
||||||
/** @type {string} */
|
/** @type {string} */
|
||||||
let searchUrl = get_gme().tools.searchUrl;
|
let searchUrl = get_gme().tools.searchUrl;
|
||||||
searchUrl = searchUrl.replace("SEARCHWORDS", encodeURIComponent(obj.words))
|
searchUrl = searchUrl.replace("SEARCHWORDS", encodeURIComponent(obj.words));
|
||||||
let newUrl = `${get_gme().tools.fetchProxyUrl}/urltext?url=${encodeURIComponent(searchUrl)}`
|
return proxyserver_get_1arg(toolcallid, toolname, obj, 'urltext', 'url', encodeURIComponent(searchUrl));
|
||||||
fetch(newUrl).then(resp => {
|
|
||||||
if (!resp.ok) {
|
|
||||||
throw new Error(`${resp.status}:${resp.statusText}`);
|
|
||||||
}
|
|
||||||
return resp.text()
|
|
||||||
}).then(data => {
|
|
||||||
message_toolsworker(new MessageEvent('message', {data: {id: toolcallid, name: toolname, data: data}}))
|
|
||||||
}).catch((err)=>{
|
|
||||||
message_toolsworker(new MessageEvent('message', {data: {id: toolcallid, name: toolname, data: `Error:${err}`}}))
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -238,20 +249,11 @@ function searchwebtext_run(toolcallid, toolname, obj) {
|
||||||
* @param {Object<string, Object<string, any>>} tcs
|
* @param {Object<string, Object<string, any>>} tcs
|
||||||
*/
|
*/
|
||||||
async function searchwebtext_setup(tcs) {
|
async function searchwebtext_setup(tcs) {
|
||||||
// @ts-ignore
|
return proxyserver_tc_setup('SearchWebText', 'urltext', 'search_web_text', {
|
||||||
let got = await fetch(`${document["gMe"].tools.fetchProxyUrl}/aum?url=jambudweepe.multiverse.987654321123456789`).then(resp=>{
|
|
||||||
if (resp.statusText != 'bharatavarshe') {
|
|
||||||
console.log("WARN:ToolJS:SearchWebText:Dont forget to run the bundled local.tools/simpleproxy.py to enable me")
|
|
||||||
return
|
|
||||||
} else {
|
|
||||||
console.log("INFO:ToolJS:SearchWebText:Enabling...")
|
|
||||||
}
|
|
||||||
tcs["search_web_text"] = {
|
|
||||||
"handler": searchwebtext_run,
|
"handler": searchwebtext_run,
|
||||||
"meta": searchwebtext_meta,
|
"meta": searchwebtext_meta,
|
||||||
"result": ""
|
"result": ""
|
||||||
};
|
}, tcs);
|
||||||
}).catch(err=>console.log(`WARN:ToolJS:SearchWebText:ProxyServer missing?:${err}\nDont forget to run the bundled local.tools/simpleproxy.py`))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue