@reverbia/sdk 1.0.0-next.20251208093930 → 1.0.0-next.20251208094446

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -16,27 +16,54 @@ Task: "${userMessage}"
16
16
 
17
17
  Best tool:`;
18
18
  }
19
- function extractParams(userMessage, tool) {
19
+ function buildParamExtractionPrompt(userMessage, paramName, paramDescription) {
20
+ const desc = paramDescription ? ` (${paramDescription})` : "";
21
+ return `Extract the value for "${paramName}"${desc} from the user message. Reply with ONLY the extracted value, nothing else.
22
+
23
+ User message: "${userMessage}"
24
+
25
+ Value for ${paramName}:`;
26
+ }
27
+ async function extractParams(userMessage, tool, options) {
20
28
  const params = {};
21
- if (!tool.parameters) return params;
22
- for (const param of tool.parameters) {
23
- if (param.name === "expression" || param.name === "query") {
24
- params[param.name] = userMessage;
25
- } else if (param.name === "location" || param.name === "city") {
26
- const words = userMessage.split(/\s+/);
27
- const capitalizedWords = words.filter(
28
- (w) => w.length > 1 && w[0] === w[0].toUpperCase()
29
+ if (!tool.parameters || tool.parameters.length === 0) return params;
30
+ const { model, device } = options;
31
+ try {
32
+ const pipeline = await getTextGenerationPipeline({
33
+ model,
34
+ device,
35
+ dtype: "q4"
36
+ });
37
+ for (const param of tool.parameters) {
38
+ const prompt = buildParamExtractionPrompt(
39
+ userMessage,
40
+ param.name,
41
+ param.description
29
42
  );
30
- params[param.name] = capitalizedWords.length > 0 ? capitalizedWords.join(" ") : userMessage;
31
- } else if (param.name === "text" || param.name === "input") {
32
- params[param.name] = userMessage;
33
- } else {
43
+ const output = await pipeline(prompt, {
44
+ max_new_tokens: 32,
45
+ // Allow reasonable length for parameter values
46
+ temperature: 0,
47
+ do_sample: false,
48
+ return_full_text: false
49
+ });
50
+ const generatedText = output?.[0]?.generated_text || output?.generated_text || "";
51
+ const extractedValue = generatedText.trim().split("\n")[0].trim();
52
+ console.log(
53
+ `[Tool Selector] Extracted param "${param.name}":`,
54
+ extractedValue
55
+ );
56
+ params[param.name] = extractedValue || userMessage;
57
+ }
58
+ } catch (error) {
59
+ console.error("[Tool Selector] Error extracting params:", error);
60
+ for (const param of tool.parameters) {
34
61
  params[param.name] = userMessage;
35
62
  }
36
63
  }
37
64
  return params;
38
65
  }
39
- function parseToolSelectionResponse(response, tools, userMessage) {
66
+ async function parseToolSelectionResponse(response, tools, userMessage, options) {
40
67
  console.log("[Tool Selector] Raw response:", response);
41
68
  const cleaned = response.toLowerCase().trim().split(/[\s\n,.]+/)[0].replace(/[^a-z0-9_-]/g, "");
42
69
  console.log("[Tool Selector] Parsed tool name:", cleaned);
@@ -51,7 +78,7 @@ function parseToolSelectionResponse(response, tools, userMessage) {
51
78
  );
52
79
  if (fuzzyTool) {
53
80
  console.log(`[Tool Selector] Fuzzy matched tool: ${fuzzyTool.name}`);
54
- const params2 = extractParams(userMessage, fuzzyTool);
81
+ const params2 = await extractParams(userMessage, fuzzyTool, options);
55
82
  return {
56
83
  toolSelected: true,
57
84
  toolName: fuzzyTool.name,
@@ -62,7 +89,7 @@ function parseToolSelectionResponse(response, tools, userMessage) {
62
89
  console.warn(`[Tool Selector] Unknown tool: ${cleaned}`);
63
90
  return { toolSelected: false };
64
91
  }
65
- const params = extractParams(userMessage, selectedTool);
92
+ const params = await extractParams(userMessage, selectedTool, options);
66
93
  console.log(`[Tool Selector] Selected tool: ${selectedTool.name}`, params);
67
94
  return {
68
95
  toolSelected: true,
@@ -103,7 +130,10 @@ async function selectTool(userMessage, tools, options = {}) {
103
130
  return { toolSelected: false };
104
131
  }
105
132
  const generatedText = output?.[0]?.generated_text || output?.generated_text || "";
106
- return parseToolSelectionResponse(generatedText, tools, userMessage);
133
+ return await parseToolSelectionResponse(generatedText, tools, userMessage, {
134
+ model,
135
+ device
136
+ });
107
137
  } catch (error) {
108
138
  console.error("[Tool Selector] Error:", error);
109
139
  return { toolSelected: false };
@@ -47215,27 +47215,54 @@ Task: "${userMessage}"
47215
47215
 
47216
47216
  Best tool:`;
47217
47217
  }
47218
- function extractParams(userMessage, tool) {
47218
+ function buildParamExtractionPrompt(userMessage, paramName, paramDescription) {
47219
+ const desc = paramDescription ? ` (${paramDescription})` : "";
47220
+ return `Extract the value for "${paramName}"${desc} from the user message. Reply with ONLY the extracted value, nothing else.
47221
+
47222
+ User message: "${userMessage}"
47223
+
47224
+ Value for ${paramName}:`;
47225
+ }
47226
+ async function extractParams(userMessage, tool, options) {
47219
47227
  const params = {};
47220
- if (!tool.parameters) return params;
47221
- for (const param of tool.parameters) {
47222
- if (param.name === "expression" || param.name === "query") {
47223
- params[param.name] = userMessage;
47224
- } else if (param.name === "location" || param.name === "city") {
47225
- const words = userMessage.split(/\s+/);
47226
- const capitalizedWords = words.filter(
47227
- (w) => w.length > 1 && w[0] === w[0].toUpperCase()
47228
+ if (!tool.parameters || tool.parameters.length === 0) return params;
47229
+ const { model, device } = options;
47230
+ try {
47231
+ const pipeline = await getTextGenerationPipeline({
47232
+ model,
47233
+ device,
47234
+ dtype: "q4"
47235
+ });
47236
+ for (const param of tool.parameters) {
47237
+ const prompt = buildParamExtractionPrompt(
47238
+ userMessage,
47239
+ param.name,
47240
+ param.description
47228
47241
  );
47229
- params[param.name] = capitalizedWords.length > 0 ? capitalizedWords.join(" ") : userMessage;
47230
- } else if (param.name === "text" || param.name === "input") {
47231
- params[param.name] = userMessage;
47232
- } else {
47242
+ const output = await pipeline(prompt, {
47243
+ max_new_tokens: 32,
47244
+ // Allow reasonable length for parameter values
47245
+ temperature: 0,
47246
+ do_sample: false,
47247
+ return_full_text: false
47248
+ });
47249
+ const generatedText = output?.[0]?.generated_text || output?.generated_text || "";
47250
+ const extractedValue = generatedText.trim().split("\n")[0].trim();
47251
+ console.log(
47252
+ `[Tool Selector] Extracted param "${param.name}":`,
47253
+ extractedValue
47254
+ );
47255
+ params[param.name] = extractedValue || userMessage;
47256
+ }
47257
+ } catch (error) {
47258
+ console.error("[Tool Selector] Error extracting params:", error);
47259
+ for (const param of tool.parameters) {
47233
47260
  params[param.name] = userMessage;
47234
47261
  }
47235
47262
  }
47236
47263
  return params;
47237
47264
  }
47238
- function parseToolSelectionResponse(response, tools, userMessage) {
47265
+ async function parseToolSelectionResponse(response, tools, userMessage, options) {
47239
47266
  console.log("[Tool Selector] Raw response:", response);
47240
47267
  const cleaned = response.toLowerCase().trim().split(/[\s\n,.]+/)[0].replace(/[^a-z0-9_-]/g, "");
47241
47268
  console.log("[Tool Selector] Parsed tool name:", cleaned);
@@ -47250,7 +47277,7 @@ function parseToolSelectionResponse(response, tools, userMessage) {
47250
47277
  );
47251
47278
  if (fuzzyTool) {
47252
47279
  console.log(`[Tool Selector] Fuzzy matched tool: ${fuzzyTool.name}`);
47253
- const params2 = extractParams(userMessage, fuzzyTool);
47280
+ const params2 = await extractParams(userMessage, fuzzyTool, options);
47254
47281
  return {
47255
47282
  toolSelected: true,
47256
47283
  toolName: fuzzyTool.name,
@@ -47261,7 +47288,7 @@ function parseToolSelectionResponse(response, tools, userMessage) {
47261
47288
  console.warn(`[Tool Selector] Unknown tool: ${cleaned}`);
47262
47289
  return { toolSelected: false };
47263
47290
  }
47264
- const params = extractParams(userMessage, selectedTool);
47291
+ const params = await extractParams(userMessage, selectedTool, options);
47265
47292
  console.log(`[Tool Selector] Selected tool: ${selectedTool.name}`, params);
47266
47293
  return {
47267
47294
  toolSelected: true,
@@ -47302,7 +47329,10 @@ async function selectTool(userMessage, tools, options = {}) {
47302
47329
  return { toolSelected: false };
47303
47330
  }
47304
47331
  const generatedText = output?.[0]?.generated_text || output?.generated_text || "";
47305
- return parseToolSelectionResponse(generatedText, tools, userMessage);
47332
+ return await parseToolSelectionResponse(generatedText, tools, userMessage, {
47333
+ model,
47334
+ device
47335
+ });
47306
47336
  } catch (error) {
47307
47337
  console.error("[Tool Selector] Error:", error);
47308
47338
  return { toolSelected: false };
@@ -2,7 +2,7 @@ import {
2
2
  DEFAULT_TOOL_SELECTOR_MODEL,
3
3
  executeTool,
4
4
  selectTool
5
- } from "./chunk-2WZDKSTC.mjs";
5
+ } from "./chunk-BG7SZT33.mjs";
6
6
  import "./chunk-Q6FVPTTV.mjs";
7
7
  import "./chunk-FBCDBTKJ.mjs";
8
8
 
@@ -862,7 +862,7 @@ var webFeatures = null;
862
862
  var webFeaturesPromise = isReactNative ? Promise.resolve(null) : Promise.all([
863
863
  import("./generation-NG4QVPCR.mjs"),
864
864
  import("./constants-WUGUGYE3.mjs"),
865
- import("./selector-BWDBB4Y5.mjs")
865
+ import("./selector-XMR5KL3E.mjs")
866
866
  ]).then(([generation, constants, selector]) => {
867
867
  webFeatures = {
868
868
  generateLocalChatCompletion: generation.generateLocalChatCompletion,
@@ -3,7 +3,7 @@ import {
3
3
  executeTool,
4
4
  preloadToolSelectorModel,
5
5
  selectTool
6
- } from "./chunk-2WZDKSTC.mjs";
6
+ } from "./chunk-BG7SZT33.mjs";
7
7
  import "./chunk-Q6FVPTTV.mjs";
8
8
  import "./chunk-FBCDBTKJ.mjs";
9
9
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reverbia/sdk",
3
- "version": "1.0.0-next.20251208093930",
3
+ "version": "1.0.0-next.20251208094446",
4
4
  "description": "",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.mjs",