@botonic/plugin-ai-agents 0.45.0-alpha.1 → 0.45.0
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/lib/cjs/debug-logger.d.ts +2 -1
- package/lib/cjs/debug-logger.js +8 -0
- package/lib/cjs/debug-logger.js.map +1 -1
- package/lib/cjs/runner.d.ts +2 -0
- package/lib/cjs/runner.js +40 -8
- package/lib/cjs/runner.js.map +1 -1
- package/lib/esm/debug-logger.d.ts +2 -1
- package/lib/esm/debug-logger.js +8 -0
- package/lib/esm/debug-logger.js.map +1 -1
- package/lib/esm/runner.d.ts +2 -0
- package/lib/esm/runner.js +40 -8
- package/lib/esm/runner.js.map +1 -1
- package/package.json +3 -3
- package/src/debug-logger.ts +17 -1
- package/src/runner.ts +55 -8
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AiAgentArgs } from '@botonic/core';
|
|
1
|
+
import type { AiAgentArgs, ToolExecution } from '@botonic/core';
|
|
2
2
|
import type { AgenticInputMessage, MemoryOptions, RunResult } from './types';
|
|
3
3
|
export interface DebugLoggerConfig {
|
|
4
4
|
messageHistoryApiVersion: string;
|
|
@@ -27,5 +27,6 @@ export interface DebugLogger {
|
|
|
27
27
|
logRunResult(runResult: RunResult, startTime: number): void;
|
|
28
28
|
logGuardrailTriggered(): void;
|
|
29
29
|
logRunnerError(startTime: number, error: unknown): void;
|
|
30
|
+
logToolExecution(toolExecution: ToolExecution): void;
|
|
30
31
|
}
|
|
31
32
|
export declare function createDebugLogger(enableDebug: boolean): DebugLogger;
|
package/lib/cjs/debug-logger.js
CHANGED
|
@@ -83,6 +83,13 @@ class EnabledDebugLogger {
|
|
|
83
83
|
console.log(`${PREFIX} Runner execution failed after ${elapsedMs}ms`);
|
|
84
84
|
console.log(`${PREFIX} Error:`, error);
|
|
85
85
|
}
|
|
86
|
+
logToolExecution(toolExecution) {
|
|
87
|
+
console.log(`${PREFIX} Tool Execution: ${toolExecution.toolName}`);
|
|
88
|
+
console.log(`${PREFIX} Tool Arguments: ${JSON.stringify(toolExecution.toolArguments)}`);
|
|
89
|
+
console.log(`${PREFIX} Tool Results: ${toolExecution.toolResults}`);
|
|
90
|
+
console.log(`${PREFIX} Knowledgebase Sources IDs: ${JSON.stringify(toolExecution.knowledgebaseSourcesIds)}`);
|
|
91
|
+
console.log(`${PREFIX} Knowledgebase Chunks IDs: ${JSON.stringify(toolExecution.knowledgebaseChunksIds)}`);
|
|
92
|
+
}
|
|
86
93
|
}
|
|
87
94
|
class DisabledDebugLogger {
|
|
88
95
|
logInitialConfig() { }
|
|
@@ -92,6 +99,7 @@ class DisabledDebugLogger {
|
|
|
92
99
|
logRunResult() { }
|
|
93
100
|
logGuardrailTriggered() { }
|
|
94
101
|
logRunnerError() { }
|
|
102
|
+
logToolExecution() { }
|
|
95
103
|
}
|
|
96
104
|
function createDebugLogger(enableDebug) {
|
|
97
105
|
return enableDebug ? new EnabledDebugLogger() : new DisabledDebugLogger();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug-logger.js","sourceRoot":"","sources":["../../src/debug-logger.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"debug-logger.js","sourceRoot":"","sources":["../../src/debug-logger.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/runner.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ export declare class AIAgentRunner<TPlugins extends ResolvedPlugins = ResolvedPl
|
|
|
7
7
|
constructor(agent: AIAgent<TPlugins, TExtraData>, logger: DebugLogger);
|
|
8
8
|
run(messages: AgenticInputMessage[], context: Context<TPlugins, TExtraData>): Promise<RunResult>;
|
|
9
9
|
private getToolsExecuted;
|
|
10
|
+
private getToolResultsByCallId;
|
|
11
|
+
private extractToolResult;
|
|
10
12
|
private getToolExecutionInfo;
|
|
11
13
|
private getSafeToolArguments;
|
|
12
14
|
}
|
package/lib/cjs/runner.js
CHANGED
|
@@ -58,12 +58,40 @@ class AIAgentRunner {
|
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
getToolsExecuted(result, context) {
|
|
61
|
+
const toolResultsByCallId = this.getToolResultsByCallId(result.newItems);
|
|
61
62
|
return (result.newItems
|
|
62
63
|
?.filter(item => item instanceof agents_1.RunToolCallItem)
|
|
63
|
-
.map((item) => this.getToolExecutionInfo(item, context))
|
|
64
|
+
.map((item) => this.getToolExecutionInfo(item, context, toolResultsByCallId))
|
|
64
65
|
.filter((toolExecution) => toolExecution.toolName !== '') || []);
|
|
65
66
|
}
|
|
66
|
-
|
|
67
|
+
getToolResultsByCallId(newItems) {
|
|
68
|
+
const map = new Map();
|
|
69
|
+
for (const item of newItems || []) {
|
|
70
|
+
if (!(item instanceof agents_1.RunToolCallOutputItem)) {
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
const rawItem = item.rawItem;
|
|
74
|
+
const callId = rawItem?.callId;
|
|
75
|
+
const output = rawItem?.output;
|
|
76
|
+
if (callId == null || output == null) {
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
const text = this.extractToolResult(output);
|
|
80
|
+
if (text != null) {
|
|
81
|
+
map.set(callId, text);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return map;
|
|
85
|
+
}
|
|
86
|
+
extractToolResult(output) {
|
|
87
|
+
if (typeof output === 'string') {
|
|
88
|
+
return output;
|
|
89
|
+
}
|
|
90
|
+
return output?.type === 'text' && typeof output?.text === 'string'
|
|
91
|
+
? output.text
|
|
92
|
+
: undefined;
|
|
93
|
+
}
|
|
94
|
+
getToolExecutionInfo(item, context, toolResultsByCallId) {
|
|
67
95
|
if (item.rawItem.type !== 'function_call') {
|
|
68
96
|
return {
|
|
69
97
|
toolName: '',
|
|
@@ -72,18 +100,22 @@ class AIAgentRunner {
|
|
|
72
100
|
}
|
|
73
101
|
const toolName = item.rawItem.name;
|
|
74
102
|
const toolArguments = this.getSafeToolArguments(item.rawItem.arguments);
|
|
103
|
+
const toolResults = item.rawItem.callId
|
|
104
|
+
? toolResultsByCallId.get(item.rawItem.callId)
|
|
105
|
+
: undefined;
|
|
106
|
+
const toolExecution = {
|
|
107
|
+
toolName,
|
|
108
|
+
toolArguments,
|
|
109
|
+
toolResults,
|
|
110
|
+
};
|
|
75
111
|
if (toolName === tools_1.retrieveKnowledge.name) {
|
|
76
112
|
return {
|
|
77
|
-
|
|
78
|
-
toolArguments,
|
|
113
|
+
...toolExecution,
|
|
79
114
|
knowledgebaseSourcesIds: context.knowledgeUsed.sourceIds,
|
|
80
115
|
knowledgebaseChunksIds: context.knowledgeUsed.chunksIds,
|
|
81
116
|
};
|
|
82
117
|
}
|
|
83
|
-
return
|
|
84
|
-
toolName,
|
|
85
|
-
toolArguments,
|
|
86
|
-
};
|
|
118
|
+
return toolExecution;
|
|
87
119
|
}
|
|
88
120
|
getSafeToolArguments(rawToolArguments) {
|
|
89
121
|
try {
|
package/lib/cjs/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runner.ts"],"names":[],"mappings":";;;AAKA,
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AiAgentArgs } from '@botonic/core';
|
|
1
|
+
import type { AiAgentArgs, ToolExecution } from '@botonic/core';
|
|
2
2
|
import type { AgenticInputMessage, MemoryOptions, RunResult } from './types';
|
|
3
3
|
export interface DebugLoggerConfig {
|
|
4
4
|
messageHistoryApiVersion: string;
|
|
@@ -27,5 +27,6 @@ export interface DebugLogger {
|
|
|
27
27
|
logRunResult(runResult: RunResult, startTime: number): void;
|
|
28
28
|
logGuardrailTriggered(): void;
|
|
29
29
|
logRunnerError(startTime: number, error: unknown): void;
|
|
30
|
+
logToolExecution(toolExecution: ToolExecution): void;
|
|
30
31
|
}
|
|
31
32
|
export declare function createDebugLogger(enableDebug: boolean): DebugLogger;
|
package/lib/esm/debug-logger.js
CHANGED
|
@@ -83,6 +83,13 @@ class EnabledDebugLogger {
|
|
|
83
83
|
console.log(`${PREFIX} Runner execution failed after ${elapsedMs}ms`);
|
|
84
84
|
console.log(`${PREFIX} Error:`, error);
|
|
85
85
|
}
|
|
86
|
+
logToolExecution(toolExecution) {
|
|
87
|
+
console.log(`${PREFIX} Tool Execution: ${toolExecution.toolName}`);
|
|
88
|
+
console.log(`${PREFIX} Tool Arguments: ${JSON.stringify(toolExecution.toolArguments)}`);
|
|
89
|
+
console.log(`${PREFIX} Tool Results: ${toolExecution.toolResults}`);
|
|
90
|
+
console.log(`${PREFIX} Knowledgebase Sources IDs: ${JSON.stringify(toolExecution.knowledgebaseSourcesIds)}`);
|
|
91
|
+
console.log(`${PREFIX} Knowledgebase Chunks IDs: ${JSON.stringify(toolExecution.knowledgebaseChunksIds)}`);
|
|
92
|
+
}
|
|
86
93
|
}
|
|
87
94
|
class DisabledDebugLogger {
|
|
88
95
|
logInitialConfig() { }
|
|
@@ -92,6 +99,7 @@ class DisabledDebugLogger {
|
|
|
92
99
|
logRunResult() { }
|
|
93
100
|
logGuardrailTriggered() { }
|
|
94
101
|
logRunnerError() { }
|
|
102
|
+
logToolExecution() { }
|
|
95
103
|
}
|
|
96
104
|
function createDebugLogger(enableDebug) {
|
|
97
105
|
return enableDebug ? new EnabledDebugLogger() : new DisabledDebugLogger();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug-logger.js","sourceRoot":"","sources":["../../src/debug-logger.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"debug-logger.js","sourceRoot":"","sources":["../../src/debug-logger.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/runner.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ export declare class AIAgentRunner<TPlugins extends ResolvedPlugins = ResolvedPl
|
|
|
7
7
|
constructor(agent: AIAgent<TPlugins, TExtraData>, logger: DebugLogger);
|
|
8
8
|
run(messages: AgenticInputMessage[], context: Context<TPlugins, TExtraData>): Promise<RunResult>;
|
|
9
9
|
private getToolsExecuted;
|
|
10
|
+
private getToolResultsByCallId;
|
|
11
|
+
private extractToolResult;
|
|
10
12
|
private getToolExecutionInfo;
|
|
11
13
|
private getSafeToolArguments;
|
|
12
14
|
}
|
package/lib/esm/runner.js
CHANGED
|
@@ -58,12 +58,40 @@ class AIAgentRunner {
|
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
getToolsExecuted(result, context) {
|
|
61
|
+
const toolResultsByCallId = this.getToolResultsByCallId(result.newItems);
|
|
61
62
|
return (result.newItems
|
|
62
63
|
?.filter(item => item instanceof agents_1.RunToolCallItem)
|
|
63
|
-
.map((item) => this.getToolExecutionInfo(item, context))
|
|
64
|
+
.map((item) => this.getToolExecutionInfo(item, context, toolResultsByCallId))
|
|
64
65
|
.filter((toolExecution) => toolExecution.toolName !== '') || []);
|
|
65
66
|
}
|
|
66
|
-
|
|
67
|
+
getToolResultsByCallId(newItems) {
|
|
68
|
+
const map = new Map();
|
|
69
|
+
for (const item of newItems || []) {
|
|
70
|
+
if (!(item instanceof agents_1.RunToolCallOutputItem)) {
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
const rawItem = item.rawItem;
|
|
74
|
+
const callId = rawItem?.callId;
|
|
75
|
+
const output = rawItem?.output;
|
|
76
|
+
if (callId == null || output == null) {
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
const text = this.extractToolResult(output);
|
|
80
|
+
if (text != null) {
|
|
81
|
+
map.set(callId, text);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return map;
|
|
85
|
+
}
|
|
86
|
+
extractToolResult(output) {
|
|
87
|
+
if (typeof output === 'string') {
|
|
88
|
+
return output;
|
|
89
|
+
}
|
|
90
|
+
return output?.type === 'text' && typeof output?.text === 'string'
|
|
91
|
+
? output.text
|
|
92
|
+
: undefined;
|
|
93
|
+
}
|
|
94
|
+
getToolExecutionInfo(item, context, toolResultsByCallId) {
|
|
67
95
|
if (item.rawItem.type !== 'function_call') {
|
|
68
96
|
return {
|
|
69
97
|
toolName: '',
|
|
@@ -72,18 +100,22 @@ class AIAgentRunner {
|
|
|
72
100
|
}
|
|
73
101
|
const toolName = item.rawItem.name;
|
|
74
102
|
const toolArguments = this.getSafeToolArguments(item.rawItem.arguments);
|
|
103
|
+
const toolResults = item.rawItem.callId
|
|
104
|
+
? toolResultsByCallId.get(item.rawItem.callId)
|
|
105
|
+
: undefined;
|
|
106
|
+
const toolExecution = {
|
|
107
|
+
toolName,
|
|
108
|
+
toolArguments,
|
|
109
|
+
toolResults,
|
|
110
|
+
};
|
|
75
111
|
if (toolName === tools_1.retrieveKnowledge.name) {
|
|
76
112
|
return {
|
|
77
|
-
|
|
78
|
-
toolArguments,
|
|
113
|
+
...toolExecution,
|
|
79
114
|
knowledgebaseSourcesIds: context.knowledgeUsed.sourceIds,
|
|
80
115
|
knowledgebaseChunksIds: context.knowledgeUsed.chunksIds,
|
|
81
116
|
};
|
|
82
117
|
}
|
|
83
|
-
return
|
|
84
|
-
toolName,
|
|
85
|
-
toolArguments,
|
|
86
|
-
};
|
|
118
|
+
return toolExecution;
|
|
87
119
|
}
|
|
88
120
|
getSafeToolArguments(rawToolArguments) {
|
|
89
121
|
try {
|
package/lib/esm/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runner.ts"],"names":[],"mappings":";;;AAKA,
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runner.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@botonic/plugin-ai-agents",
|
|
3
|
-
"version": "0.45.0
|
|
3
|
+
"version": "0.45.0",
|
|
4
4
|
"main": "./lib/cjs/index.js",
|
|
5
5
|
"module": "./lib/esm/index.js",
|
|
6
6
|
"description": "Use AI Agents to generate your contents",
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
"format": "biome format --write src/ tests/"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@botonic/core": "^0.45.0
|
|
17
|
+
"@botonic/core": "^0.45.0",
|
|
18
18
|
"@openai/agents": "^0.3.9",
|
|
19
|
-
"axios": "^1.13.
|
|
19
|
+
"axios": "^1.13.6",
|
|
20
20
|
"openai": "^6.0.0",
|
|
21
21
|
"uuid": "^10.0.0",
|
|
22
22
|
"zod": "3.25.76"
|
package/src/debug-logger.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AiAgentArgs } from '@botonic/core'
|
|
1
|
+
import type { AiAgentArgs, ToolExecution } from '@botonic/core'
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
4
|
AZURE_OPENAI_API_BASE,
|
|
@@ -40,6 +40,7 @@ export interface DebugLogger {
|
|
|
40
40
|
logRunResult(runResult: RunResult, startTime: number): void
|
|
41
41
|
logGuardrailTriggered(): void
|
|
42
42
|
logRunnerError(startTime: number, error: unknown): void
|
|
43
|
+
logToolExecution(toolExecution: ToolExecution): void
|
|
43
44
|
}
|
|
44
45
|
|
|
45
46
|
class EnabledDebugLogger implements DebugLogger {
|
|
@@ -153,6 +154,20 @@ class EnabledDebugLogger implements DebugLogger {
|
|
|
153
154
|
console.log(`${PREFIX} Runner execution failed after ${elapsedMs}ms`)
|
|
154
155
|
console.log(`${PREFIX} Error:`, error)
|
|
155
156
|
}
|
|
157
|
+
|
|
158
|
+
logToolExecution(toolExecution: ToolExecution): void {
|
|
159
|
+
console.log(`${PREFIX} Tool Execution: ${toolExecution.toolName}`)
|
|
160
|
+
console.log(
|
|
161
|
+
`${PREFIX} Tool Arguments: ${JSON.stringify(toolExecution.toolArguments)}`
|
|
162
|
+
)
|
|
163
|
+
console.log(`${PREFIX} Tool Results: ${toolExecution.toolResults}`)
|
|
164
|
+
console.log(
|
|
165
|
+
`${PREFIX} Knowledgebase Sources IDs: ${JSON.stringify(toolExecution.knowledgebaseSourcesIds)}`
|
|
166
|
+
)
|
|
167
|
+
console.log(
|
|
168
|
+
`${PREFIX} Knowledgebase Chunks IDs: ${JSON.stringify(toolExecution.knowledgebaseChunksIds)}`
|
|
169
|
+
)
|
|
170
|
+
}
|
|
156
171
|
}
|
|
157
172
|
|
|
158
173
|
class DisabledDebugLogger implements DebugLogger {
|
|
@@ -163,6 +178,7 @@ class DisabledDebugLogger implements DebugLogger {
|
|
|
163
178
|
logRunResult(): void {}
|
|
164
179
|
logGuardrailTriggered(): void {}
|
|
165
180
|
logRunnerError(): void {}
|
|
181
|
+
logToolExecution(): void {}
|
|
166
182
|
}
|
|
167
183
|
|
|
168
184
|
export function createDebugLogger(enableDebug: boolean): DebugLogger {
|
package/src/runner.ts
CHANGED
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
InputGuardrailTripwireTriggered,
|
|
8
8
|
Runner,
|
|
9
9
|
RunToolCallItem,
|
|
10
|
+
RunToolCallOutputItem,
|
|
10
11
|
} from '@openai/agents'
|
|
11
12
|
|
|
12
13
|
import type { DebugLogger } from './debug-logger'
|
|
@@ -109,11 +110,17 @@ export class AIAgentRunner<
|
|
|
109
110
|
result,
|
|
110
111
|
context: Context<TPlugins, TExtraData>
|
|
111
112
|
): ToolExecution[] {
|
|
113
|
+
const toolResultsByCallId = this.getToolResultsByCallId(result.newItems)
|
|
114
|
+
|
|
112
115
|
return (
|
|
113
116
|
result.newItems
|
|
114
117
|
?.filter(item => item instanceof RunToolCallItem)
|
|
115
118
|
.map((item: RunToolCallItem) =>
|
|
116
|
-
this.getToolExecutionInfo(
|
|
119
|
+
this.getToolExecutionInfo(
|
|
120
|
+
item as RunToolCallItem,
|
|
121
|
+
context,
|
|
122
|
+
toolResultsByCallId
|
|
123
|
+
)
|
|
117
124
|
)
|
|
118
125
|
.filter(
|
|
119
126
|
(toolExecution: ToolExecution) => toolExecution.toolName !== ''
|
|
@@ -121,9 +128,44 @@ export class AIAgentRunner<
|
|
|
121
128
|
)
|
|
122
129
|
}
|
|
123
130
|
|
|
131
|
+
private getToolResultsByCallId(newItems: unknown[]): Map<string, string> {
|
|
132
|
+
const map = new Map<string, string>()
|
|
133
|
+
for (const item of newItems || []) {
|
|
134
|
+
if (!(item instanceof RunToolCallOutputItem)) {
|
|
135
|
+
continue
|
|
136
|
+
}
|
|
137
|
+
const rawItem = item.rawItem as {
|
|
138
|
+
callId?: string
|
|
139
|
+
output?: string | { type?: string; text?: string }
|
|
140
|
+
}
|
|
141
|
+
const callId = rawItem?.callId
|
|
142
|
+
const output = rawItem?.output
|
|
143
|
+
if (callId == null || output == null) {
|
|
144
|
+
continue
|
|
145
|
+
}
|
|
146
|
+
const text = this.extractToolResult(output)
|
|
147
|
+
if (text != null) {
|
|
148
|
+
map.set(callId, text)
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return map
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
private extractToolResult(
|
|
155
|
+
output: string | { type?: string; text?: string }
|
|
156
|
+
): string | undefined {
|
|
157
|
+
if (typeof output === 'string') {
|
|
158
|
+
return output
|
|
159
|
+
}
|
|
160
|
+
return output?.type === 'text' && typeof output?.text === 'string'
|
|
161
|
+
? output.text
|
|
162
|
+
: undefined
|
|
163
|
+
}
|
|
164
|
+
|
|
124
165
|
private getToolExecutionInfo(
|
|
125
166
|
item: RunToolCallItem,
|
|
126
|
-
context: Context<TPlugins, TExtraData
|
|
167
|
+
context: Context<TPlugins, TExtraData>,
|
|
168
|
+
toolResultsByCallId: Map<string, string>
|
|
127
169
|
): ToolExecution {
|
|
128
170
|
if (item.rawItem.type !== 'function_call') {
|
|
129
171
|
return {
|
|
@@ -133,20 +175,25 @@ export class AIAgentRunner<
|
|
|
133
175
|
}
|
|
134
176
|
const toolName = item.rawItem.name
|
|
135
177
|
const toolArguments = this.getSafeToolArguments(item.rawItem.arguments)
|
|
178
|
+
const toolResults = item.rawItem.callId
|
|
179
|
+
? toolResultsByCallId.get(item.rawItem.callId)
|
|
180
|
+
: undefined
|
|
181
|
+
|
|
182
|
+
const toolExecution: ToolExecution = {
|
|
183
|
+
toolName,
|
|
184
|
+
toolArguments,
|
|
185
|
+
toolResults,
|
|
186
|
+
}
|
|
136
187
|
|
|
137
188
|
if (toolName === retrieveKnowledge.name) {
|
|
138
189
|
return {
|
|
139
|
-
|
|
140
|
-
toolArguments,
|
|
190
|
+
...toolExecution,
|
|
141
191
|
knowledgebaseSourcesIds: context.knowledgeUsed.sourceIds,
|
|
142
192
|
knowledgebaseChunksIds: context.knowledgeUsed.chunksIds,
|
|
143
193
|
}
|
|
144
194
|
}
|
|
145
195
|
|
|
146
|
-
return
|
|
147
|
-
toolName,
|
|
148
|
-
toolArguments,
|
|
149
|
-
}
|
|
196
|
+
return toolExecution
|
|
150
197
|
}
|
|
151
198
|
|
|
152
199
|
private getSafeToolArguments(rawToolArguments: string): Record<string, any> {
|