ESLint and JSDoc fixes
| @@ -8180,6 +8180,8 @@ window['SillyTavern'].getContext = function () { | ||
| 8180 | 8180 | unregisterMacro: MacrosParser.unregisterMacro.bind(MacrosParser), |
| 8181 | 8181 | registerFunctionTool: ToolManager.registerFunctionTool.bind(ToolManager), |
| 8182 | 8182 | unregisterFunctionTool: ToolManager.unregisterFunctionTool.bind(ToolManager), |
| 8183 | + isToolCallingSupported: ToolManager.isToolCallingSupported.bind(ToolManager), | |
| 8184 | + canPerformToolCalls: ToolManager.canPerformToolCalls.bind(ToolManager), | |
| 8183 | 8185 | registerDebugFunction: registerDebugFunction, |
| 8184 | 8186 | /** @deprecated Use renderExtensionTemplateAsync instead. */ |
| 8185 | 8187 | renderExtensionTemplate: renderExtensionTemplate, |
| @@ -19,6 +19,16 @@ import { Popup } from './popup.js'; | ||
| 19 | 19 | */ |
| 20 | 20 | |
| 21 | 21 | /** |
| 22 | + * @typedef {object} ToolRegistration | |
| 23 | + * @property {string} name - The name of the tool. | |
| 24 | + * @property {string} displayName - The display name of the tool. | |
| 25 | + * @property {string} description - A description of the tool. | |
| 26 | + * @property {object} parameters - The parameters for the tool. | |
| 27 | + * @property {function} action - The action to perform when the tool is invoked. | |
| 28 | + * @property {function} formatMessage - A function to format the tool call message. | |
| 29 | + */ | |
| 30 | + | |
| 31 | +/** | |
| 22 | 32 | * A class that represents a tool definition. |
| 23 | 33 | */ |
| 24 | 34 | class ToolDefinition { |
| @@ -136,13 +146,7 @@ export class ToolManager { | ||
| 136 | 146 | |
| 137 | 147 | /** |
| 138 | 148 | * Registers a new tool with the tool registry. |
| 139 | 149 | * @param {objectToolRegistration} tool The tool to register. |
| 140 | - * @param {string} tool.name The name of the tool. | |
| 141 | - * @param {string} tool.displayName A user-friendly display name for the tool. | |
| 142 | - * @param {string} tool.description A description of what the tool does. | |
| 143 | - * @param {object} tool.parameters A JSON schema for the parameters that the tool accepts. | |
| 144 | - * @param {function} tool.action A function that will be called when the tool is executed. | |
| 145 | - * @param {function} tool.formatMessage A function that will be called to format the tool call toast. | |
| 146 | 150 | */ |
| 147 | 151 | static registerFunctionTool({ name, displayName, description, parameters, action, formatMessage }) { |
| 148 | 152 | // Convert WIP arguments |
| @@ -201,6 +205,12 @@ export class ToolManager { | ||
| 201 | 205 | } |
| 202 | 206 | } |
| 203 | 207 | |
| 208 | + /** | |
| 209 | + * Formats a message for a tool call by name. | |
| 210 | + * @param {string} name The name of the tool to format the message for. | |
| 211 | + * @param {object} parameters Function tool call parameters. | |
| 212 | + * @returns {string} The formatted message for the tool call. | |
| 213 | + */ | |
| 204 | 214 | static formatToolCallMessage(name, parameters) { |
| 205 | 215 | if (!this.#tools.has(name)) { |
| 206 | 216 | return `Invoked unknown tool: ${name}`; |
| @@ -295,9 +305,14 @@ export class ToolManager { | ||
| 295 | 305 | } |
| 296 | 306 | } |
| 297 | 307 | |
| 308 | + /** | |
| 309 | + * Apply a tool call delta to a target object. | |
| 310 | + * @param {object} target The target object to apply the delta to | |
| 311 | + * @param {object} delta The delta object to apply | |
| 312 | + */ | |
| 298 | 313 | static #applyToolCallDelta(target, delta) { |
| 299 | 314 | for (const key in delta) { |
| 300 | 315 | if (!deltaObject.prototype.hasOwnProperty.call(delta, key)) continue; |
| 301 | 316 | if (key === '__proto__' || key === 'constructor') continue; |
| 302 | 317 | |
| 303 | 318 | const deltaValue = delta[key]; |
| @@ -409,13 +424,6 @@ export class ToolManager { | ||
| 409 | 424 | errors: [], |
| 410 | 425 | }; |
| 411 | 426 | const toolCalls = ToolManager.#getToolCallsFromData(data); |
| 412 | - const oaiCompatibleSources = [ | |
| 413 | - chat_completion_sources.OPENAI, | |
| 414 | - chat_completion_sources.CUSTOM, | |
| 415 | - chat_completion_sources.MISTRALAI, | |
| 416 | - chat_completion_sources.OPENROUTER, | |
| 417 | - chat_completion_sources.GROQ, | |
| 418 | - ]; | |
| 419 | 427 | |
| 420 | 428 | if (!Array.isArray(toolCalls)) { |
| 421 | 429 | return result; |
| @@ -463,7 +471,7 @@ export class ToolManager { | ||
| 463 | 471 | * @param {ToolInvocation[]} invocations Tool invocations. |
| 464 | 472 | * @returns {string} Formatted message with tool invocations. |
| 465 | 473 | */ |
| 466 | 474 | static #formatMessageformatToolInvocationMessage(invocations) { |
| 467 | 475 | const tryParse = (x) => { try { return JSON.parse(x); } catch { return x; } }; |
| 468 | 476 | const data = structuredClone(invocations); |
| 469 | 477 | const detailsElement = document.createElement('details'); |
| @@ -493,7 +501,7 @@ export class ToolManager { | ||
| 493 | 501 | force_avatar: system_avatar, |
| 494 | 502 | is_system: true, |
| 495 | 503 | is_user: false, |
| 496 | 504 | mes: ToolManager.#formatMessageformatToolInvocationMessage(invocations), |
| 497 | 505 | extra: { |
| 498 | 506 | isSmallSys: true, |
| 499 | 507 | tool_invocations: invocations, |