@falai/agent 0.9.0-alpha-2 → 0.9.2
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/README.md +42 -34
- package/dist/cjs/src/core/Agent.d.ts +48 -44
- package/dist/cjs/src/core/Agent.d.ts.map +1 -1
- package/dist/cjs/src/core/Agent.js +151 -1110
- package/dist/cjs/src/core/Agent.js.map +1 -1
- package/dist/cjs/src/core/ResponseModal.d.ts +211 -0
- package/dist/cjs/src/core/ResponseModal.d.ts.map +1 -0
- package/dist/cjs/src/core/ResponseModal.js +1394 -0
- package/dist/cjs/src/core/ResponseModal.js.map +1 -0
- package/dist/cjs/src/core/ResponsePipeline.d.ts +8 -4
- package/dist/cjs/src/core/ResponsePipeline.d.ts.map +1 -1
- package/dist/cjs/src/core/ResponsePipeline.js +48 -20
- package/dist/cjs/src/core/ResponsePipeline.js.map +1 -1
- package/dist/cjs/src/core/Route.d.ts +12 -5
- package/dist/cjs/src/core/Route.d.ts.map +1 -1
- package/dist/cjs/src/core/Route.js +26 -5
- package/dist/cjs/src/core/Route.js.map +1 -1
- package/dist/cjs/src/core/RoutingEngine.d.ts +5 -0
- package/dist/cjs/src/core/RoutingEngine.d.ts.map +1 -1
- package/dist/cjs/src/core/RoutingEngine.js +37 -25
- package/dist/cjs/src/core/RoutingEngine.js.map +1 -1
- package/dist/cjs/src/core/SessionManager.d.ts +9 -1
- package/dist/cjs/src/core/SessionManager.d.ts.map +1 -1
- package/dist/cjs/src/core/SessionManager.js +27 -5
- package/dist/cjs/src/core/SessionManager.js.map +1 -1
- package/dist/cjs/src/core/Step.d.ts +60 -7
- package/dist/cjs/src/core/Step.d.ts.map +1 -1
- package/dist/cjs/src/core/Step.js +151 -4
- package/dist/cjs/src/core/Step.js.map +1 -1
- package/dist/cjs/src/core/ToolManager.d.ts +234 -0
- package/dist/cjs/src/core/ToolManager.d.ts.map +1 -0
- package/dist/cjs/src/core/ToolManager.js +1117 -0
- package/dist/cjs/src/core/ToolManager.js.map +1 -0
- package/dist/cjs/src/index.d.ts +5 -4
- package/dist/cjs/src/index.d.ts.map +1 -1
- package/dist/cjs/src/index.js +11 -3
- package/dist/cjs/src/index.js.map +1 -1
- package/dist/cjs/src/types/agent.d.ts +2 -1
- package/dist/cjs/src/types/agent.d.ts.map +1 -1
- package/dist/cjs/src/types/ai.d.ts +1 -1
- package/dist/cjs/src/types/ai.d.ts.map +1 -1
- package/dist/cjs/src/types/index.d.ts +3 -2
- package/dist/cjs/src/types/index.d.ts.map +1 -1
- package/dist/cjs/src/types/index.js +3 -1
- package/dist/cjs/src/types/index.js.map +1 -1
- package/dist/cjs/src/types/route.d.ts +6 -4
- package/dist/cjs/src/types/route.d.ts.map +1 -1
- package/dist/cjs/src/types/tool.d.ts +84 -14
- package/dist/cjs/src/types/tool.d.ts.map +1 -1
- package/dist/cjs/src/types/tool.js +13 -0
- package/dist/cjs/src/types/tool.js.map +1 -1
- package/dist/cjs/src/utils/clone.d.ts.map +1 -1
- package/dist/cjs/src/utils/clone.js +0 -4
- package/dist/cjs/src/utils/clone.js.map +1 -1
- package/dist/cjs/src/utils/history.d.ts +30 -1
- package/dist/cjs/src/utils/history.d.ts.map +1 -1
- package/dist/cjs/src/utils/history.js +169 -23
- package/dist/cjs/src/utils/history.js.map +1 -1
- package/dist/cjs/src/utils/index.d.ts +1 -1
- package/dist/cjs/src/utils/index.d.ts.map +1 -1
- package/dist/cjs/src/utils/index.js +5 -1
- package/dist/cjs/src/utils/index.js.map +1 -1
- package/dist/src/core/Agent.d.ts +48 -44
- package/dist/src/core/Agent.d.ts.map +1 -1
- package/dist/src/core/Agent.js +152 -1111
- package/dist/src/core/Agent.js.map +1 -1
- package/dist/src/core/ResponseModal.d.ts +211 -0
- package/dist/src/core/ResponseModal.d.ts.map +1 -0
- package/dist/src/core/ResponseModal.js +1389 -0
- package/dist/src/core/ResponseModal.js.map +1 -0
- package/dist/src/core/ResponsePipeline.d.ts +8 -4
- package/dist/src/core/ResponsePipeline.d.ts.map +1 -1
- package/dist/src/core/ResponsePipeline.js +48 -20
- package/dist/src/core/ResponsePipeline.js.map +1 -1
- package/dist/src/core/Route.d.ts +12 -5
- package/dist/src/core/Route.d.ts.map +1 -1
- package/dist/src/core/Route.js +26 -5
- package/dist/src/core/Route.js.map +1 -1
- package/dist/src/core/RoutingEngine.d.ts +5 -0
- package/dist/src/core/RoutingEngine.d.ts.map +1 -1
- package/dist/src/core/RoutingEngine.js +37 -25
- package/dist/src/core/RoutingEngine.js.map +1 -1
- package/dist/src/core/SessionManager.d.ts +9 -1
- package/dist/src/core/SessionManager.d.ts.map +1 -1
- package/dist/src/core/SessionManager.js +27 -5
- package/dist/src/core/SessionManager.js.map +1 -1
- package/dist/src/core/Step.d.ts +60 -7
- package/dist/src/core/Step.d.ts.map +1 -1
- package/dist/src/core/Step.js +151 -4
- package/dist/src/core/Step.js.map +1 -1
- package/dist/src/core/ToolManager.d.ts +234 -0
- package/dist/src/core/ToolManager.d.ts.map +1 -0
- package/dist/src/core/ToolManager.js +1111 -0
- package/dist/src/core/ToolManager.js.map +1 -0
- package/dist/src/index.d.ts +5 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/types/agent.d.ts +2 -1
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/ai.d.ts +1 -1
- package/dist/src/types/ai.d.ts.map +1 -1
- package/dist/src/types/index.d.ts +3 -2
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/index.js +1 -0
- package/dist/src/types/index.js.map +1 -1
- package/dist/src/types/route.d.ts +6 -4
- package/dist/src/types/route.d.ts.map +1 -1
- package/dist/src/types/tool.d.ts +84 -14
- package/dist/src/types/tool.d.ts.map +1 -1
- package/dist/src/types/tool.js +12 -1
- package/dist/src/types/tool.js.map +1 -1
- package/dist/src/utils/clone.d.ts.map +1 -1
- package/dist/src/utils/clone.js +0 -4
- package/dist/src/utils/clone.js.map +1 -1
- package/dist/src/utils/history.d.ts +30 -1
- package/dist/src/utils/history.d.ts.map +1 -1
- package/dist/src/utils/history.js +165 -23
- package/dist/src/utils/history.js.map +1 -1
- package/dist/src/utils/index.d.ts +1 -1
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/index.js +1 -1
- package/dist/src/utils/index.js.map +1 -1
- package/docs/CONTRIBUTING.md +40 -0
- package/docs/README.md +14 -6
- package/docs/api/README.md +235 -45
- package/docs/api/overview.md +140 -33
- package/docs/core/agent/session-management.md +152 -5
- package/docs/core/ai-integration/response-processing.md +115 -4
- package/docs/core/conversation-flows/routes.md +130 -0
- package/docs/core/error-handling.md +638 -0
- package/docs/core/tools/tool-definition.md +684 -60
- package/docs/core/tools/tool-scoping.md +244 -53
- package/docs/guides/error-handling-patterns.md +578 -0
- package/docs/guides/getting-started/README.md +139 -28
- package/docs/guides/migration/README.md +72 -0
- package/docs/guides/migration/response-modal-refactor.md +518 -0
- package/examples/advanced-patterns/knowledge-based-agent.ts +6 -6
- package/examples/advanced-patterns/persistent-onboarding.ts +30 -43
- package/examples/advanced-patterns/streaming-responses.ts +169 -96
- package/examples/ai-providers/anthropic-integration.ts +9 -5
- package/examples/ai-providers/openai-integration.ts +11 -7
- package/examples/core-concepts/basic-agent.ts +106 -67
- package/examples/core-concepts/modern-streaming-api.ts +309 -0
- package/examples/core-concepts/schema-driven-extraction.ts +10 -7
- package/examples/core-concepts/session-management.ts +71 -18
- package/examples/integrations/healthcare-integration.ts +15 -29
- package/examples/integrations/server-session-management.ts +3 -3
- package/examples/persistence/memory-sessions.ts +3 -3
- package/examples/tools/basic-tools.ts +293 -89
- package/examples/tools/data-enrichment-tools.ts +185 -75
- package/package.json +1 -1
- package/src/core/Agent.ts +190 -1529
- package/src/core/ResponseModal.ts +1798 -0
- package/src/core/ResponsePipeline.ts +83 -57
- package/src/core/Route.ts +39 -12
- package/src/core/RoutingEngine.ts +46 -42
- package/src/core/SessionManager.ts +39 -7
- package/src/core/Step.ts +198 -20
- package/src/core/ToolManager.ts +1394 -0
- package/src/index.ts +19 -3
- package/src/types/agent.ts +2 -1
- package/src/types/ai.ts +1 -1
- package/src/types/index.ts +13 -2
- package/src/types/route.ts +6 -4
- package/src/types/tool.ts +116 -25
- package/src/utils/clone.ts +6 -8
- package/src/utils/history.ts +190 -27
- package/src/utils/index.ts +4 -0
- package/dist/cjs/src/core/ToolExecutor.d.ts +0 -45
- package/dist/cjs/src/core/ToolExecutor.d.ts.map +0 -1
- package/dist/cjs/src/core/ToolExecutor.js +0 -84
- package/dist/cjs/src/core/ToolExecutor.js.map +0 -1
- package/dist/src/core/ToolExecutor.d.ts +0 -45
- package/dist/src/core/ToolExecutor.d.ts.map +0 -1
- package/dist/src/core/ToolExecutor.js +0 -80
- package/dist/src/core/ToolExecutor.js.map +0 -1
- package/docs/core/tools/tool-execution.md +0 -815
- package/src/core/ToolExecutor.ts +0 -126
|
@@ -5,25 +5,41 @@
|
|
|
5
5
|
import { EventKind, MessageRole } from "../types";
|
|
6
6
|
/**
|
|
7
7
|
* Convert a simplified history item to an internal Event
|
|
8
|
+
* @param item - The HistoryItem to convert
|
|
9
|
+
* @returns Event with proper type-safe structure
|
|
10
|
+
* @throws Error if the history item is malformed or has invalid data
|
|
8
11
|
*/
|
|
9
|
-
function
|
|
12
|
+
export function historyItemToEvent(item) {
|
|
13
|
+
if (!item || typeof item !== 'object') {
|
|
14
|
+
throw new Error('Invalid history item: must be a non-null object');
|
|
15
|
+
}
|
|
16
|
+
if (!item.role || typeof item.role !== 'string') {
|
|
17
|
+
throw new Error('Invalid history item: role is required and must be a string');
|
|
18
|
+
}
|
|
10
19
|
const timestamp = new Date().toISOString();
|
|
11
20
|
switch (item.role) {
|
|
12
21
|
case "user": {
|
|
22
|
+
const userItem = item;
|
|
23
|
+
if (typeof userItem.content !== 'string') {
|
|
24
|
+
throw new Error('Invalid user history item: content must be a string');
|
|
25
|
+
}
|
|
13
26
|
return {
|
|
14
27
|
kind: EventKind.MESSAGE,
|
|
15
28
|
source: MessageRole.USER,
|
|
16
29
|
timestamp,
|
|
17
30
|
data: {
|
|
18
31
|
participant: {
|
|
19
|
-
display_name:
|
|
32
|
+
display_name: userItem.name || "User",
|
|
20
33
|
},
|
|
21
|
-
message:
|
|
34
|
+
message: userItem.content,
|
|
22
35
|
},
|
|
23
36
|
};
|
|
24
37
|
}
|
|
25
38
|
case "assistant": {
|
|
26
|
-
|
|
39
|
+
const assistantItem = item;
|
|
40
|
+
if (assistantItem.content !== null && typeof assistantItem.content !== 'string') {
|
|
41
|
+
throw new Error('Invalid assistant history item: content must be a string or null');
|
|
42
|
+
}
|
|
27
43
|
const event = {
|
|
28
44
|
kind: EventKind.MESSAGE,
|
|
29
45
|
source: MessageRole.ASSISTANT,
|
|
@@ -32,17 +48,31 @@ function convertHistoryItemToEvent(item) {
|
|
|
32
48
|
participant: {
|
|
33
49
|
display_name: "Assistant",
|
|
34
50
|
},
|
|
35
|
-
message:
|
|
51
|
+
message: assistantItem.content || "",
|
|
36
52
|
},
|
|
37
53
|
};
|
|
38
|
-
// If there are tool calls,
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
54
|
+
// If there are tool calls, validate and add them
|
|
55
|
+
if (assistantItem.tool_calls && assistantItem.tool_calls.length > 0) {
|
|
56
|
+
if (!Array.isArray(assistantItem.tool_calls)) {
|
|
57
|
+
throw new Error('Invalid assistant history item: tool_calls must be an array');
|
|
58
|
+
}
|
|
59
|
+
for (const toolCall of assistantItem.tool_calls) {
|
|
60
|
+
if (!toolCall.id || !toolCall.name || typeof toolCall.arguments !== 'object') {
|
|
61
|
+
throw new Error('Invalid tool call: id, name, and arguments are required');
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
event.data.toolCalls = assistantItem.tool_calls;
|
|
42
65
|
}
|
|
43
66
|
return event;
|
|
44
67
|
}
|
|
45
68
|
case "tool": {
|
|
69
|
+
const toolItem = item;
|
|
70
|
+
if (!toolItem.tool_call_id || typeof toolItem.tool_call_id !== 'string') {
|
|
71
|
+
throw new Error('Invalid tool history item: tool_call_id is required and must be a string');
|
|
72
|
+
}
|
|
73
|
+
if (!toolItem.name || typeof toolItem.name !== 'string') {
|
|
74
|
+
throw new Error('Invalid tool history item: name is required and must be a string');
|
|
75
|
+
}
|
|
46
76
|
return {
|
|
47
77
|
kind: EventKind.TOOL,
|
|
48
78
|
source: MessageRole.AGENT,
|
|
@@ -50,10 +80,10 @@ function convertHistoryItemToEvent(item) {
|
|
|
50
80
|
data: {
|
|
51
81
|
tool_calls: [
|
|
52
82
|
{
|
|
53
|
-
tool_id:
|
|
83
|
+
tool_id: toolItem.tool_call_id,
|
|
54
84
|
arguments: {}, // Tool results don't have arguments
|
|
55
85
|
result: {
|
|
56
|
-
data:
|
|
86
|
+
data: toolItem.content,
|
|
57
87
|
},
|
|
58
88
|
},
|
|
59
89
|
],
|
|
@@ -61,6 +91,10 @@ function convertHistoryItemToEvent(item) {
|
|
|
61
91
|
};
|
|
62
92
|
}
|
|
63
93
|
case "system": {
|
|
94
|
+
const systemItem = item;
|
|
95
|
+
if (typeof systemItem.content !== 'string') {
|
|
96
|
+
throw new Error('Invalid system history item: content must be a string');
|
|
97
|
+
}
|
|
64
98
|
return {
|
|
65
99
|
kind: EventKind.MESSAGE,
|
|
66
100
|
source: MessageRole.SYSTEM,
|
|
@@ -69,30 +103,138 @@ function convertHistoryItemToEvent(item) {
|
|
|
69
103
|
participant: {
|
|
70
104
|
display_name: "System",
|
|
71
105
|
},
|
|
72
|
-
message:
|
|
106
|
+
message: systemItem.content,
|
|
73
107
|
},
|
|
74
108
|
};
|
|
75
109
|
}
|
|
76
110
|
default:
|
|
77
|
-
|
|
111
|
+
throw new Error(`Invalid history item role: ${String(item.role)}`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Convert an array of HistoryItems to Events
|
|
116
|
+
* @param history - Array of HistoryItems to convert
|
|
117
|
+
* @returns Array of Events with proper type-safe structure
|
|
118
|
+
* @throws Error if any history item is malformed
|
|
119
|
+
*/
|
|
120
|
+
export function historyToEvents(history) {
|
|
121
|
+
if (!Array.isArray(history)) {
|
|
122
|
+
throw new Error('Invalid history: must be an array');
|
|
123
|
+
}
|
|
124
|
+
return history.map((item, index) => {
|
|
125
|
+
try {
|
|
126
|
+
return historyItemToEvent(item);
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
throw new Error(`Error converting history item at index ${index}: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Convert an Event back to a HistoryItem
|
|
135
|
+
* @param event - The Event to convert
|
|
136
|
+
* @returns HistoryItem with simplified structure
|
|
137
|
+
* @throws Error if the event is malformed or has invalid data
|
|
138
|
+
*/
|
|
139
|
+
export function eventToHistoryItem(event) {
|
|
140
|
+
if (!event || typeof event !== 'object') {
|
|
141
|
+
throw new Error('Invalid event: must be a non-null object');
|
|
142
|
+
}
|
|
143
|
+
if (!event.kind || !event.source || !event.data) {
|
|
144
|
+
throw new Error('Invalid event: kind, source, and data are required');
|
|
145
|
+
}
|
|
146
|
+
switch (event.kind) {
|
|
147
|
+
case EventKind.MESSAGE: {
|
|
148
|
+
const messageData = event.data;
|
|
149
|
+
if (!messageData.message && messageData.message !== '') {
|
|
150
|
+
throw new Error('Invalid message event: message is required');
|
|
151
|
+
}
|
|
152
|
+
switch (event.source) {
|
|
153
|
+
case MessageRole.USER: {
|
|
154
|
+
const userItem = {
|
|
155
|
+
role: "user",
|
|
156
|
+
content: messageData.message,
|
|
157
|
+
};
|
|
158
|
+
if (messageData.participant?.display_name && messageData.participant.display_name !== "User") {
|
|
159
|
+
userItem.name = messageData.participant.display_name;
|
|
160
|
+
}
|
|
161
|
+
return userItem;
|
|
162
|
+
}
|
|
163
|
+
case MessageRole.ASSISTANT: {
|
|
164
|
+
const assistantItem = {
|
|
165
|
+
role: "assistant",
|
|
166
|
+
content: messageData.message || null,
|
|
167
|
+
};
|
|
168
|
+
if (messageData.toolCalls && messageData.toolCalls.length > 0) {
|
|
169
|
+
assistantItem.tool_calls = messageData.toolCalls;
|
|
170
|
+
}
|
|
171
|
+
return assistantItem;
|
|
172
|
+
}
|
|
173
|
+
case MessageRole.SYSTEM: {
|
|
174
|
+
return {
|
|
175
|
+
role: "system",
|
|
176
|
+
content: messageData.message,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
default:
|
|
180
|
+
throw new Error(`Unsupported message source for conversion: ${event.source}`);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
case EventKind.TOOL: {
|
|
184
|
+
const toolData = event.data;
|
|
185
|
+
if (!toolData.tool_calls || !Array.isArray(toolData.tool_calls) || toolData.tool_calls.length === 0) {
|
|
186
|
+
throw new Error('Invalid tool event: tool_calls array is required and must not be empty');
|
|
187
|
+
}
|
|
188
|
+
const firstToolCall = toolData.tool_calls[0];
|
|
189
|
+
if (!firstToolCall.tool_id) {
|
|
190
|
+
throw new Error('Invalid tool call: tool_id is required');
|
|
191
|
+
}
|
|
192
|
+
const toolItem = {
|
|
193
|
+
role: "tool",
|
|
194
|
+
tool_call_id: firstToolCall.tool_id,
|
|
195
|
+
name: firstToolCall.tool_id, // Use tool_id as name for simplicity
|
|
196
|
+
content: firstToolCall.result?.data,
|
|
197
|
+
};
|
|
198
|
+
return toolItem;
|
|
199
|
+
}
|
|
200
|
+
case EventKind.STATUS: {
|
|
201
|
+
// Status events don't have a direct HistoryItem equivalent
|
|
202
|
+
// Convert to system message for compatibility
|
|
203
|
+
const statusData = event.data;
|
|
78
204
|
return {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
timestamp,
|
|
82
|
-
data: {
|
|
83
|
-
participant: {
|
|
84
|
-
display_name: "Unknown",
|
|
85
|
-
},
|
|
86
|
-
message: "Unknown message type",
|
|
87
|
-
},
|
|
205
|
+
role: "system",
|
|
206
|
+
content: statusData.status || "Status update",
|
|
88
207
|
};
|
|
208
|
+
}
|
|
209
|
+
default:
|
|
210
|
+
throw new Error(`Unsupported event kind for conversion: ${String(event.kind)}`);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Convert an array of Events back to HistoryItems
|
|
215
|
+
* @param events - Array of Events to convert
|
|
216
|
+
* @returns Array of HistoryItems with simplified structure
|
|
217
|
+
* @throws Error if any event is malformed
|
|
218
|
+
*/
|
|
219
|
+
export function eventsToHistory(events) {
|
|
220
|
+
if (!Array.isArray(events)) {
|
|
221
|
+
throw new Error('Invalid events: must be an array');
|
|
89
222
|
}
|
|
223
|
+
return events.map((event, index) => {
|
|
224
|
+
try {
|
|
225
|
+
return eventToHistoryItem(event);
|
|
226
|
+
}
|
|
227
|
+
catch (error) {
|
|
228
|
+
throw new Error(`Error converting event at index ${index}: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
229
|
+
}
|
|
230
|
+
});
|
|
90
231
|
}
|
|
91
232
|
/**
|
|
92
233
|
* Normalize a simplified history array to internal Event array
|
|
234
|
+
* @deprecated Use historyToEvents instead
|
|
93
235
|
*/
|
|
94
236
|
export function normalizeHistory(history) {
|
|
95
|
-
return history
|
|
237
|
+
return historyToEvents(history);
|
|
96
238
|
}
|
|
97
239
|
/**
|
|
98
240
|
* Helper function to create a user message
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../../src/utils/history.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGlD
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../../src/utils/history.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ export { createSession, createSessionId, enterRoute, enterStep, mergeCollected,
|
|
|
6
6
|
export { render, renderMany, renderTemplate, renderTemplateObject, formatKnowledgeBase, } from "./template";
|
|
7
7
|
export { cloneDeep } from "./clone";
|
|
8
8
|
export { getLastMessageFromHistory } from "./event";
|
|
9
|
-
export { normalizeHistory, userMessage, assistantMessage, toolMessage, systemMessage, } from "./history";
|
|
9
|
+
export { normalizeHistory, historyItemToEvent, historyToEvents, eventToHistoryItem, eventsToHistory, userMessage, assistantMessage, toolMessage, systemMessage, } from "./history";
|
|
10
10
|
export { LoggerLevel, logger } from "./logger";
|
|
11
11
|
export type { RetryOptions } from "./retry";
|
|
12
12
|
export { retry, withTimeoutAndRetry } from "./retry";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,oBAAoB,GACrB,MAAM,MAAM,CAAC;AAGd,OAAO,EACL,aAAa,EACb,eAAe,EACf,UAAU,EACV,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,MAAM,EACN,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAGpD,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,aAAa,GACd,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAG/C,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,oBAAoB,GACrB,MAAM,MAAM,CAAC;AAGd,OAAO,EACL,aAAa,EACb,eAAe,EACf,UAAU,EACV,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,MAAM,EACN,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAGpD,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,aAAa,GACd,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAG/C,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/src/utils/index.js
CHANGED
|
@@ -12,7 +12,7 @@ export { cloneDeep } from "./clone";
|
|
|
12
12
|
// Event utilities
|
|
13
13
|
export { getLastMessageFromHistory } from "./event";
|
|
14
14
|
// History utilities
|
|
15
|
-
export { normalizeHistory, userMessage, assistantMessage, toolMessage, systemMessage, } from "./history";
|
|
15
|
+
export { normalizeHistory, historyItemToEvent, historyToEvents, eventToHistoryItem, eventsToHistory, userMessage, assistantMessage, toolMessage, systemMessage, } from "./history";
|
|
16
16
|
// Logging
|
|
17
17
|
export { LoggerLevel, logger } from "./logger";
|
|
18
18
|
export { retry, withTimeoutAndRetry } from "./retry";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,gBAAgB;AAChB,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,oBAAoB,GACrB,MAAM,MAAM,CAAC;AAEd,qBAAqB;AACrB,OAAO,EACL,aAAa,EACb,eAAe,EACf,UAAU,EACV,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AAEnB,qBAAqB;AACrB,OAAO,EACL,MAAM,EACN,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,oBAAoB;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,kBAAkB;AAClB,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAEpD,oBAAoB;AACpB,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,aAAa,GACd,MAAM,WAAW,CAAC;AAEnB,UAAU;AACV,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAI/C,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,gBAAgB;AAChB,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,oBAAoB,GACrB,MAAM,MAAM,CAAC;AAEd,qBAAqB;AACrB,OAAO,EACL,aAAa,EACb,eAAe,EACf,UAAU,EACV,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AAEnB,qBAAqB;AACrB,OAAO,EACL,MAAM,EACN,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,oBAAoB;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,kBAAkB;AAClB,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAEpD,oBAAoB;AACpB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,aAAa,GACd,MAAM,WAAW,CAAC;AAEnB,UAAU;AACV,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAI/C,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC"}
|
package/docs/CONTRIBUTING.md
CHANGED
|
@@ -39,6 +39,46 @@ This project and everyone participating in it is governed by our commitment to f
|
|
|
39
39
|
|
|
40
40
|
---
|
|
41
41
|
|
|
42
|
+
## Tool System Overview
|
|
43
|
+
|
|
44
|
+
@falai/agent features a unified Tool interface that supports both simple return values and complex ToolResult patterns:
|
|
45
|
+
|
|
46
|
+
### Unified Tool Interface
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
interface Tool<TContext = unknown, TData = unknown, TResult = unknown> {
|
|
50
|
+
id: string;
|
|
51
|
+
name?: string;
|
|
52
|
+
description?: string;
|
|
53
|
+
parameters?: unknown;
|
|
54
|
+
handler: (
|
|
55
|
+
context: ToolContext<TContext, TData>,
|
|
56
|
+
args?: Record<string, unknown>
|
|
57
|
+
) => Promise<TResult | ToolResult<TResult, TContext, TData>> | TResult | ToolResult<TResult, TContext, TData>;
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Tool Creation Methods
|
|
62
|
+
|
|
63
|
+
- **`agent.addTool()`** - Direct addition to agent scope
|
|
64
|
+
- **`agent.tool.register()`** - Registry for ID-based reference
|
|
65
|
+
- **`agent.tool.create()`** - Create without adding to scope
|
|
66
|
+
- **Pattern helpers** - `createDataEnrichment()`, `createValidation()`, etc.
|
|
67
|
+
|
|
68
|
+
### Return Value Flexibility
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
// Simple return value
|
|
72
|
+
handler: async () => "Simple result"
|
|
73
|
+
|
|
74
|
+
// Complex ToolResult object
|
|
75
|
+
handler: async () => ({
|
|
76
|
+
data: "Result data",
|
|
77
|
+
success: true,
|
|
78
|
+
contextUpdate: { lastAction: "completed" }
|
|
79
|
+
})
|
|
80
|
+
```
|
|
81
|
+
|
|
42
82
|
## How Can I Contribute?
|
|
43
83
|
|
|
44
84
|
### 🐛 Reporting Bugs
|
package/docs/README.md
CHANGED
|
@@ -8,8 +8,9 @@ Welcome to the `@falai/agent` documentation! This comprehensive framework enable
|
|
|
8
8
|
- 🎯 **Schema-First Data Collection**: Type-safe, structured data extraction from natural conversations
|
|
9
9
|
- 🔀 **Route DSL**: Fluent, composable API for building complex multi-step conversation flows
|
|
10
10
|
- 🏗️ **Type-Safe Context**: Generic context management with lifecycle hooks and dynamic providers
|
|
11
|
-
- 🔄 **Streaming & Tools**: Real-time streaming responses with dynamic tool execution
|
|
11
|
+
- 🔄 **Streaming & Tools**: Real-time streaming responses with dynamic tool execution using unified Tool interface
|
|
12
12
|
- 💾 **Comprehensive Persistence**: Database-agnostic session and message storage across multiple adapters
|
|
13
|
+
- 🛠️ **Unified Tool System**: Simplified tool creation with flexible return types and powerful pattern helpers
|
|
13
14
|
|
|
14
15
|
## 📖 Documentation Structure
|
|
15
16
|
|
|
@@ -54,10 +55,16 @@ Welcome to the `@falai/agent` documentation! This comprehensive framework enable
|
|
|
54
55
|
- **[Session Storage](./core/persistence/session-storage.md)** - Session persistence patterns
|
|
55
56
|
- **[Database Adapters](./core/persistence/adapters.md)** - Built-in adapter configurations
|
|
56
57
|
|
|
58
|
+
#### Error Handling
|
|
59
|
+
|
|
60
|
+
- **[Error Handling](./core/error-handling.md)** - Comprehensive error handling patterns and recovery strategies
|
|
61
|
+
- **[Error Handling Patterns](./guides/error-handling-patterns.md)** - Practical patterns for streaming, routing, and data sync errors
|
|
62
|
+
|
|
57
63
|
### 🚀 Advanced Guides
|
|
58
64
|
|
|
59
65
|
- **[Building Agents](./guides/building-agents/)** - Complete agent construction patterns
|
|
60
66
|
- **[Advanced Patterns](./guides/advanced-patterns/)** - Complex use cases & integrations
|
|
67
|
+
- **[Migration Guides](./guides/migration/)** - Upgrade guides for major changes
|
|
61
68
|
- **[API Reference](./api/README.md)** - Complete API documentation
|
|
62
69
|
|
|
63
70
|
## 🎯 Quick Links
|
|
@@ -93,7 +100,8 @@ Welcome to the `@falai/agent` documentation! This comprehensive framework enable
|
|
|
93
100
|
- **AI Integration**: [Providers](./core/ai-integration/providers.md) | [Prompts](./core/ai-integration/prompt-composition.md) | [Responses](./core/ai-integration/response-processing.md)
|
|
94
101
|
- **Tools & Execution**: [Tool Definition](./core/tools/tool-definition.md) | [Tool Execution](./core/tools/tool-execution.md) | [Tool Scoping](./core/tools/tool-scoping.md)
|
|
95
102
|
- **Persistence**: [Session Storage](./core/persistence/session-storage.md) | [Adapters](./core/persistence/adapters.md)
|
|
96
|
-
- **
|
|
103
|
+
- **Error Handling**: [Core Error Handling](./core/error-handling.md) | [Error Patterns](./guides/error-handling-patterns.md)
|
|
104
|
+
- **Advanced**: [Building Agents](./guides/building-agents/) | [Patterns](./guides/advanced-patterns/) | [Migration](./guides/migration/) | [API Reference](./api/)
|
|
97
105
|
|
|
98
106
|
## 💡 Examples by Domain
|
|
99
107
|
|
|
@@ -128,10 +136,10 @@ Check out the [`examples/`](../examples/) directory for complete, runnable examp
|
|
|
128
136
|
|
|
129
137
|
### 🔧 Tools & Execution
|
|
130
138
|
|
|
131
|
-
- **[Basic Tools](../examples/tools/basic-tools.ts)** -
|
|
132
|
-
- **[Data Enrichment Tools](../examples/tools/data-enrichment-tools.ts)** -
|
|
133
|
-
- **[Context Updating Tools](../examples/tools/context-updating-tools.ts)** -
|
|
134
|
-
- **[Domain Scoped Tools](../examples/tools/domain-scoped-tools.ts)** - Tool
|
|
139
|
+
- **[Basic Tools](../examples/tools/basic-tools.ts)** - Unified Tool interface with simple return values
|
|
140
|
+
- **[Data Enrichment Tools](../examples/tools/data-enrichment-tools.ts)** - Pattern helpers for data modification
|
|
141
|
+
- **[Context Updating Tools](../examples/tools/context-updating-tools.ts)** - Advanced ToolResult patterns with context updates
|
|
142
|
+
- **[Domain Scoped Tools](../examples/tools/domain-scoped-tools.ts)** - Tool registry and scoping with agent.tool.register()
|
|
135
143
|
|
|
136
144
|
### 💾 Persistence
|
|
137
145
|
|