@botbotgo/better-call 0.1.49 → 0.1.50
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.
- package/dist/reliable.js +20 -2
- package/dist/reliable.js.map +1 -1
- package/package.json +1 -1
- package/scripts/demo.mjs +44 -4
package/dist/reliable.js
CHANGED
|
@@ -40,7 +40,23 @@ export async function reliableToolCalls(input) {
|
|
|
40
40
|
calls: repairBaseCalls,
|
|
41
41
|
issues: repairBaseIssues,
|
|
42
42
|
});
|
|
43
|
-
const
|
|
43
|
+
const normalizedRepairedCalls = normalizeCalls(repairedCalls);
|
|
44
|
+
if (repairBaseCalls.length > 0 &&
|
|
45
|
+
normalizedRepairedCalls.length === 0 &&
|
|
46
|
+
input.policy?.expected !== "none") {
|
|
47
|
+
const invalidRepairDiagnostics = createDiagnostics(repairSource, repairBaseCalls, normalizedRepairedCalls, repairBaseIssues, [{
|
|
48
|
+
kind: "parse",
|
|
49
|
+
path: "$.calls",
|
|
50
|
+
message: "repair returned no usable tool calls",
|
|
51
|
+
}]);
|
|
52
|
+
return {
|
|
53
|
+
...first,
|
|
54
|
+
repaired: false,
|
|
55
|
+
original: input.calls,
|
|
56
|
+
diagnostics: [...diagnostics, invalidRepairDiagnostics],
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
const second = await guardToolCalls({ ...input, tools, calls: normalizedRepairedCalls });
|
|
44
60
|
const modelDiagnostics = createDiagnostics(repairSource, repairBaseCalls, second.calls, repairBaseIssues, second.issues);
|
|
45
61
|
const modelProposal = {
|
|
46
62
|
source: modelDiagnostics.source,
|
|
@@ -131,7 +147,9 @@ function diffCallPaths(original, proposed) {
|
|
|
131
147
|
return paths;
|
|
132
148
|
}
|
|
133
149
|
function normalizeCalls(calls) {
|
|
134
|
-
|
|
150
|
+
if (!Array.isArray(calls))
|
|
151
|
+
return [];
|
|
152
|
+
return calls.filter((call) => isRecord(call) && typeof call.tool === "string" && isRecord(call.args));
|
|
135
153
|
}
|
|
136
154
|
function isRecord(value) {
|
|
137
155
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
package/dist/reliable.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reliable.js","sourceRoot":"","sources":["../src/reliable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAWzE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAA6B;IACnE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC;IACpC,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,MAAM,WAAW,GAAwB,EAAE,CAAC;IAC5C,IAAI,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC;IAClC,IAAI,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC;IACpC,IAAI,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QACrG,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;YACxE,IAAI,QAAQ,IAAI,YAAY,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtD,OAAO;oBACL,EAAE,EAAE,IAAI;oBACR,KAAK,EAAE,YAAY,CAAC,QAAQ;oBAC5B,MAAM,EAAE,EAAE;oBACV,QAAQ,EAAE,IAAI;oBACd,QAAQ,EAAE,KAAK,CAAC,KAAK;oBACrB,WAAW,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC;iBACxC,CAAC;YACJ,CAAC;YACD,IAAI,QAAQ,EAAE,CAAC;gBACb,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;gBAC3C,eAAe,GAAG,YAAY,CAAC,QAAQ,CAAC;gBACxC,gBAAgB,GAAG,YAAY,CAAC,WAAW,CAAC;YAC9C,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,gBAAgB,GAAG,KAAK,CAAC,YAAY,EAAE,gBAAgB,IAAI,IAAI,CAAC;IACtE,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,QAAQ,CAAC;IACpD,MAAM,aAAa,GAAG,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC;IACzE,MAAM,YAAY,GAAG,aAAa,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACvH,IAAI,CAAC,YAAY;QAAE,OAAO,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;IAC5F,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,MAAO,CAAC;QACxC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,KAAK;QACL,KAAK,EAAE,eAAe;QACtB,MAAM,EAAE,gBAAgB;KACzB,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"reliable.js","sourceRoot":"","sources":["../src/reliable.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/scripts/demo.mjs
CHANGED
|
@@ -10,6 +10,25 @@ function errorMessage(error) {
|
|
|
10
10
|
return error instanceof Error ? error.message : String(error);
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
+
async function runReliableScenario(label, options) {
|
|
14
|
+
try {
|
|
15
|
+
const result = await reliableToolCalls(options);
|
|
16
|
+
return {
|
|
17
|
+
label,
|
|
18
|
+
status: result.ok ? "accepted" : "rejected",
|
|
19
|
+
repaired: result?.repaired ?? null,
|
|
20
|
+
callCount: Array.isArray(result?.calls) ? result.calls.length : null,
|
|
21
|
+
issueCount: Array.isArray(result?.issues) ? result.issues.length : null,
|
|
22
|
+
};
|
|
23
|
+
} catch (error) {
|
|
24
|
+
return {
|
|
25
|
+
label,
|
|
26
|
+
status: "expected-error",
|
|
27
|
+
message: errorMessage(error),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
13
32
|
function createGatewayErrorResult(originalToolName, reason, details = {}) {
|
|
14
33
|
return {
|
|
15
34
|
status: "error",
|
|
@@ -140,9 +159,7 @@ function repairDemoStockCall(repairInput = {}) {
|
|
|
140
159
|
: typeof attemptedArgs.symbol === "string"
|
|
141
160
|
? attemptedArgs.symbol
|
|
142
161
|
: "AAPL";
|
|
143
|
-
const
|
|
144
|
-
typeof rawAttemptedTicker === "string" ? rawAttemptedTicker : "AAPL";
|
|
145
|
-
const normalizedTicker = attemptedTicker.trim().toLowerCase();
|
|
162
|
+
const normalizedTicker = rawAttemptedTicker.trim().toLowerCase();
|
|
146
163
|
// This demo maps empty input and the "apple" alias to AAPL.
|
|
147
164
|
let ticker;
|
|
148
165
|
if (normalizedTicker === "") {
|
|
@@ -212,6 +229,28 @@ try {
|
|
|
212
229
|
exitWithError("tool-call repair", error);
|
|
213
230
|
}
|
|
214
231
|
|
|
232
|
+
const reliableScenarioBase = {
|
|
233
|
+
userInput: "Get Apple stock in the US market.",
|
|
234
|
+
tools: [stockQuote],
|
|
235
|
+
};
|
|
236
|
+
const reliableFailureScenarios = [
|
|
237
|
+
await runReliableScenario("empty-calls-array", {
|
|
238
|
+
...reliableScenarioBase,
|
|
239
|
+
calls: [],
|
|
240
|
+
repair: repairDemoStockCall,
|
|
241
|
+
}),
|
|
242
|
+
await runReliableScenario("null-repair-result", {
|
|
243
|
+
...reliableScenarioBase,
|
|
244
|
+
calls: [{ tool: DEMO_INVALID_TOOL_NAME, args: demoMalformedInput }],
|
|
245
|
+
repair: async () => null,
|
|
246
|
+
}),
|
|
247
|
+
await runReliableScenario("invalid-repaired-tool-name", {
|
|
248
|
+
...reliableScenarioBase,
|
|
249
|
+
calls: [{ tool: DEMO_INVALID_TOOL_NAME, args: demoMalformedInput }],
|
|
250
|
+
repair: async () => [{ tool: "not_a_real_tool", args: demoMalformedInput }],
|
|
251
|
+
}),
|
|
252
|
+
];
|
|
253
|
+
|
|
215
254
|
let gatewayResult;
|
|
216
255
|
try {
|
|
217
256
|
gatewayResult = await repairToolCall({
|
|
@@ -245,7 +284,7 @@ try {
|
|
|
245
284
|
}
|
|
246
285
|
|
|
247
286
|
const gatewayRepairResult =
|
|
248
|
-
gatewayResult != null && typeof gatewayResult === "object"
|
|
287
|
+
gatewayResult != null && typeof gatewayResult === "object" && !Array.isArray(gatewayResult)
|
|
249
288
|
? gatewayResult
|
|
250
289
|
: createGatewayErrorResult(
|
|
251
290
|
"research",
|
|
@@ -270,6 +309,7 @@ const report = {
|
|
|
270
309
|
repaired: repairedCall,
|
|
271
310
|
// Optional validation/repair metadata; null means this run returned none.
|
|
272
311
|
diagnostics: reliableResult?.diagnostics ?? null,
|
|
312
|
+
failureScenarios: reliableFailureScenarios,
|
|
273
313
|
},
|
|
274
314
|
gatewayRepair: gatewayRepairResult,
|
|
275
315
|
};
|