@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
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
GeminiProvider,
|
|
18
18
|
MemoryAdapter,
|
|
19
19
|
type Tool,
|
|
20
|
+
ValidationError,
|
|
20
21
|
} from "../../src/index";
|
|
21
22
|
|
|
22
23
|
// Define data types for our multi-step process
|
|
@@ -36,23 +37,23 @@ interface OrderContext {
|
|
|
36
37
|
}
|
|
37
38
|
|
|
38
39
|
interface PaymentData {
|
|
39
|
-
orderId
|
|
40
|
+
orderId?: string; // Make this optional to match OrderData
|
|
40
41
|
paymentMethod: "credit_card" | "paypal" | "bank_transfer";
|
|
41
42
|
amount: number;
|
|
42
43
|
confirmed: boolean;
|
|
43
44
|
}
|
|
44
45
|
|
|
45
|
-
// Tools for order processing
|
|
46
|
-
const
|
|
46
|
+
// Tools for order processing - using unified Tool interface
|
|
47
|
+
const createOrderTool: Tool<unknown, UnifiedOrderData> = {
|
|
47
48
|
id: "create_order",
|
|
48
49
|
description: "Create a new order from the collected order data",
|
|
49
50
|
parameters: {
|
|
50
51
|
type: "object",
|
|
51
52
|
properties: {},
|
|
52
53
|
},
|
|
53
|
-
handler: (
|
|
54
|
+
handler: (context, args) => {
|
|
54
55
|
const orderId = `ORD-${Date.now()}`;
|
|
55
|
-
console.log(`Creating order ${orderId} for ${data?.customerName}`);
|
|
56
|
+
console.log(`Creating order ${orderId} for ${context.data?.customerName}`);
|
|
56
57
|
|
|
57
58
|
return {
|
|
58
59
|
data: `Order ${orderId} created successfully!`,
|
|
@@ -63,22 +64,22 @@ const createOrder: Tool<unknown, UnifiedOrderData, [], string> = {
|
|
|
63
64
|
},
|
|
64
65
|
};
|
|
65
66
|
|
|
66
|
-
const
|
|
67
|
+
const processPaymentTool: Tool<unknown, UnifiedOrderData> = {
|
|
67
68
|
id: "process_payment",
|
|
68
69
|
description: "Process payment for an order",
|
|
69
70
|
parameters: {
|
|
70
71
|
type: "object",
|
|
71
72
|
properties: {},
|
|
72
73
|
},
|
|
73
|
-
handler: (
|
|
74
|
-
console.log(`Processing payment for order ${data?.orderId}`);
|
|
74
|
+
handler: (context, args) => {
|
|
75
|
+
console.log(`Processing payment for order ${context.data?.orderId}`);
|
|
75
76
|
|
|
76
77
|
// Simulate payment processing
|
|
77
78
|
const success = Math.random() > 0.1; // 90% success rate
|
|
78
79
|
|
|
79
80
|
if (success) {
|
|
80
81
|
return {
|
|
81
|
-
data: `Payment processed successfully! Order ${data?.orderId} is now confirmed.`,
|
|
82
|
+
data: `Payment processed successfully! Order ${context.data?.orderId} is now confirmed.`,
|
|
82
83
|
dataUpdate: {
|
|
83
84
|
confirmed: true,
|
|
84
85
|
},
|
|
@@ -133,6 +134,58 @@ const agent = new Agent<unknown, UnifiedOrderData>({
|
|
|
133
134
|
},
|
|
134
135
|
});
|
|
135
136
|
|
|
137
|
+
// Demonstrate different tool registration patterns
|
|
138
|
+
|
|
139
|
+
// Method 1: Register tools for ID-based reference in steps
|
|
140
|
+
agent.tool.register(createOrderTool);
|
|
141
|
+
agent.tool.register(processPaymentTool);
|
|
142
|
+
|
|
143
|
+
// Method 2: Create specialized validation tool
|
|
144
|
+
const orderValidationTool = agent.tool.createValidation({
|
|
145
|
+
id: "validate_order",
|
|
146
|
+
fields: ["customerName", "productType", "budget"] as const,
|
|
147
|
+
validator: async (context, data) => {
|
|
148
|
+
const errors: ValidationError[] = [];
|
|
149
|
+
if (!data.customerName || data.customerName.length < 2) {
|
|
150
|
+
errors.push({
|
|
151
|
+
field: "customerName",
|
|
152
|
+
value: data.customerName,
|
|
153
|
+
message: "Customer name must be at least 2 characters",
|
|
154
|
+
schemaPath: "customerName"
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
if (!data.budget || data.budget < 100) {
|
|
158
|
+
errors.push({
|
|
159
|
+
field: "budget",
|
|
160
|
+
value: data.budget,
|
|
161
|
+
message: "Budget must be at least $100",
|
|
162
|
+
schemaPath: "budget"
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
return {
|
|
166
|
+
valid: errors.length === 0,
|
|
167
|
+
errors,
|
|
168
|
+
warnings: [],
|
|
169
|
+
};
|
|
170
|
+
},
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
// Method 3: Create data enrichment tool
|
|
174
|
+
const orderEnrichmentTool = agent.tool.createDataEnrichment({
|
|
175
|
+
id: "enrich_order",
|
|
176
|
+
fields: ["productType", "budget"] as const,
|
|
177
|
+
enricher: async (context, data) => {
|
|
178
|
+
// Enrich with fields that exist in UnifiedOrderData
|
|
179
|
+
const urgentDelivery = data.budget > 1000; // Premium orders get urgent delivery
|
|
180
|
+
const preferredColor = data.productType === "laptop" ? "silver" : "black";
|
|
181
|
+
|
|
182
|
+
return {
|
|
183
|
+
urgentDelivery,
|
|
184
|
+
preferredColor,
|
|
185
|
+
};
|
|
186
|
+
},
|
|
187
|
+
});
|
|
188
|
+
|
|
136
189
|
// Order collection route with sequential steps
|
|
137
190
|
agent.createRoute({
|
|
138
191
|
title: "Product Order",
|
|
@@ -186,7 +239,7 @@ agent.createRoute({
|
|
|
186
239
|
id: "create_order",
|
|
187
240
|
description: "Create the order",
|
|
188
241
|
prompt: "Great! Let me create your order.",
|
|
189
|
-
tools: [
|
|
242
|
+
tools: ["create_order"], // Reference by ID
|
|
190
243
|
requires: ["customerName", "productType", "budget"],
|
|
191
244
|
},
|
|
192
245
|
],
|
|
@@ -226,7 +279,7 @@ agent.createRoute({
|
|
|
226
279
|
id: "process_payment",
|
|
227
280
|
description: "Process the payment",
|
|
228
281
|
prompt: "Processing your payment...",
|
|
229
|
-
tools: [
|
|
282
|
+
tools: ["process_payment"], // Reference by ID
|
|
230
283
|
requires: ["orderId", "paymentMethod", "amount"],
|
|
231
284
|
},
|
|
232
285
|
],
|
|
@@ -266,7 +319,7 @@ async function demonstrateSessionManagement() {
|
|
|
266
319
|
|
|
267
320
|
console.log("Bot:", response1.message);
|
|
268
321
|
console.log("Session ID:", sessionAgent.session.id);
|
|
269
|
-
console.log("Session data:", JSON.stringify(sessionAgent.session.getData
|
|
322
|
+
console.log("Session data:", JSON.stringify(sessionAgent.session.getData(), null, 2));
|
|
270
323
|
console.log("History length:", sessionAgent.session.getHistory().length);
|
|
271
324
|
console.log();
|
|
272
325
|
|
|
@@ -277,7 +330,7 @@ async function demonstrateSessionManagement() {
|
|
|
277
330
|
const response2 = await sessionAgent.chat("My budget is $1500");
|
|
278
331
|
|
|
279
332
|
console.log("Bot:", response2.message);
|
|
280
|
-
console.log("Session data:", JSON.stringify(sessionAgent.session.getData
|
|
333
|
+
console.log("Session data:", JSON.stringify(sessionAgent.session.getData(), null, 2));
|
|
281
334
|
console.log("History length:", sessionAgent.session.getHistory().length);
|
|
282
335
|
console.log();
|
|
283
336
|
|
|
@@ -288,7 +341,7 @@ async function demonstrateSessionManagement() {
|
|
|
288
341
|
const response3 = await sessionAgent.chat("I want black color and urgent delivery please");
|
|
289
342
|
|
|
290
343
|
console.log("Bot:", response3.message);
|
|
291
|
-
console.log("Session data:", JSON.stringify(sessionAgent.session.getData
|
|
344
|
+
console.log("Session data:", JSON.stringify(sessionAgent.session.getData(), null, 2));
|
|
292
345
|
console.log("Route complete:", response3.isRouteComplete);
|
|
293
346
|
console.log("History length:", sessionAgent.session.getHistory().length);
|
|
294
347
|
console.log();
|
|
@@ -300,7 +353,7 @@ async function demonstrateSessionManagement() {
|
|
|
300
353
|
const response4 = await sessionAgent.chat("I'll pay with credit card, amount is $1599");
|
|
301
354
|
|
|
302
355
|
console.log("Bot:", response4.message);
|
|
303
|
-
console.log("Session data:", JSON.stringify(sessionAgent.session.getData
|
|
356
|
+
console.log("Session data:", JSON.stringify(sessionAgent.session.getData(), null, 2));
|
|
304
357
|
console.log("Route complete:", response4.isRouteComplete);
|
|
305
358
|
console.log("Final history length:", sessionAgent.session.getHistory().length);
|
|
306
359
|
}
|
|
@@ -344,7 +397,7 @@ async function demonstrateSessionPersistence() {
|
|
|
344
397
|
|
|
345
398
|
console.log("After first interaction:");
|
|
346
399
|
console.log("🤖 Agent:", response1.message);
|
|
347
|
-
console.log("Session data:", JSON.stringify(persistentAgent.session.getData
|
|
400
|
+
console.log("Session data:", JSON.stringify(persistentAgent.session.getData(), null, 2));
|
|
348
401
|
console.log("History length:", persistentAgent.session.getHistory().length);
|
|
349
402
|
console.log("Session automatically saved to persistence ✓");
|
|
350
403
|
|
|
@@ -379,14 +432,14 @@ async function demonstrateSessionPersistence() {
|
|
|
379
432
|
console.log("Session automatically restored:");
|
|
380
433
|
console.log("- Session ID:", restoredAgent.session.id);
|
|
381
434
|
console.log("- History length:", restoredAgent.session.getHistory().length);
|
|
382
|
-
console.log("- Restored data:", JSON.stringify(restoredAgent.session.getData
|
|
435
|
+
console.log("- Restored data:", JSON.stringify(restoredAgent.session.getData(), null, 2));
|
|
383
436
|
|
|
384
437
|
// Continue conversation seamlessly
|
|
385
438
|
const response2 = await restoredAgent.chat("Actually, make it urgent delivery");
|
|
386
439
|
|
|
387
440
|
console.log("\nAfter continuing with restored session:");
|
|
388
441
|
console.log("🤖 Agent:", response2.message);
|
|
389
|
-
console.log("Session data:", JSON.stringify(restoredAgent.session.getData
|
|
442
|
+
console.log("Session data:", JSON.stringify(restoredAgent.session.getData(), null, 2));
|
|
390
443
|
console.log("History length:", restoredAgent.session.getHistory().length);
|
|
391
444
|
console.log("Session automatically saved again ✓");
|
|
392
445
|
}
|
|
@@ -39,7 +39,7 @@ interface SatisfactionData {
|
|
|
39
39
|
|
|
40
40
|
// Tools
|
|
41
41
|
|
|
42
|
-
const getUpcomingSlots: Tool<HealthcareContext, HealthcareData
|
|
42
|
+
const getUpcomingSlots: Tool<HealthcareContext, HealthcareData> = {
|
|
43
43
|
id: "get_upcoming_slots",
|
|
44
44
|
name: "Available Appointment Slots",
|
|
45
45
|
description: "Get upcoming appointment slots",
|
|
@@ -47,12 +47,12 @@ const getUpcomingSlots: Tool<HealthcareContext, HealthcareData, unknown[], unkno
|
|
|
47
47
|
type: "object",
|
|
48
48
|
properties: {},
|
|
49
49
|
},
|
|
50
|
-
handler: () => {
|
|
51
|
-
return { data:
|
|
50
|
+
handler: (context, args) => {
|
|
51
|
+
return { data: "Available slots: Monday 10 AM, Tuesday 2 PM, Wednesday 1 PM" };
|
|
52
52
|
},
|
|
53
53
|
};
|
|
54
54
|
|
|
55
|
-
const getLaterSlots: Tool<HealthcareContext, HealthcareData
|
|
55
|
+
const getLaterSlots: Tool<HealthcareContext, HealthcareData> = {
|
|
56
56
|
id: "get_later_slots",
|
|
57
57
|
name: "Extended Appointment Slots",
|
|
58
58
|
description: "Get later appointment slots",
|
|
@@ -60,17 +60,12 @@ const getLaterSlots: Tool<HealthcareContext, HealthcareData, unknown[], unknown>
|
|
|
60
60
|
type: "object",
|
|
61
61
|
properties: {},
|
|
62
62
|
},
|
|
63
|
-
handler: () => {
|
|
64
|
-
return { data:
|
|
63
|
+
handler: (context, args) => {
|
|
64
|
+
return { data: "Later slots: November 3, 11:30 AM, November 12, 3 PM" };
|
|
65
65
|
},
|
|
66
66
|
};
|
|
67
67
|
|
|
68
|
-
const scheduleAppointment: Tool<
|
|
69
|
-
HealthcareContext,
|
|
70
|
-
HealthcareData,
|
|
71
|
-
unknown[],
|
|
72
|
-
unknown
|
|
73
|
-
> = {
|
|
68
|
+
const scheduleAppointment: Tool<HealthcareContext, HealthcareData> = {
|
|
74
69
|
id: "schedule_appointment",
|
|
75
70
|
name: "Appointment Scheduler",
|
|
76
71
|
description: "Schedule an appointment with a healthcare provider",
|
|
@@ -81,26 +76,21 @@ const scheduleAppointment: Tool<
|
|
|
81
76
|
},
|
|
82
77
|
required: ["datetime"],
|
|
83
78
|
},
|
|
84
|
-
handler: (
|
|
85
|
-
if (!data?.preferredDate || !data?.preferredTime) {
|
|
79
|
+
handler: (context, args) => {
|
|
80
|
+
if (!context.data?.preferredDate || !context.data?.preferredTime) {
|
|
86
81
|
return {
|
|
87
82
|
data: "Please specify preferred date and time for the appointment",
|
|
88
83
|
};
|
|
89
84
|
}
|
|
90
85
|
return {
|
|
91
|
-
data: `Appointment scheduled for ${data.preferredDate} at ${
|
|
92
|
-
data.preferredTime
|
|
93
|
-
} for ${data.appointmentReason || "consultation"}`,
|
|
86
|
+
data: `Appointment scheduled for ${context.data.preferredDate} at ${
|
|
87
|
+
context.data.preferredTime
|
|
88
|
+
} for ${context.data.appointmentReason || "consultation"}`,
|
|
94
89
|
};
|
|
95
90
|
},
|
|
96
91
|
};
|
|
97
92
|
|
|
98
|
-
const getLabResults: Tool<
|
|
99
|
-
HealthcareContext,
|
|
100
|
-
HealthcareData,
|
|
101
|
-
unknown[],
|
|
102
|
-
unknown
|
|
103
|
-
> = {
|
|
93
|
+
const getLabResults: Tool<HealthcareContext, HealthcareData> = {
|
|
104
94
|
id: "get_lab_results",
|
|
105
95
|
name: "Lab Results Retriever",
|
|
106
96
|
description: "Get lab test results",
|
|
@@ -108,13 +98,9 @@ const getLabResults: Tool<
|
|
|
108
98
|
type: "object",
|
|
109
99
|
properties: {},
|
|
110
100
|
},
|
|
111
|
-
handler: (
|
|
101
|
+
handler: (context, args) => {
|
|
112
102
|
return {
|
|
113
|
-
data: {
|
|
114
|
-
report: `Lab results for ${data?.testType || "general"} tests`,
|
|
115
|
-
prognosis: "All tests are within the valid range",
|
|
116
|
-
patientName: context.patientName,
|
|
117
|
-
},
|
|
103
|
+
data: `Lab results for ${context.data?.testType || "general"} tests: All tests are within the valid range for ${context.context.patientName}`,
|
|
118
104
|
};
|
|
119
105
|
},
|
|
120
106
|
};
|
|
@@ -31,15 +31,15 @@ interface BookingData {
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
// Booking confirmation tool
|
|
34
|
-
const confirmBooking: Tool<unknown, BookingData
|
|
34
|
+
const confirmBooking: Tool<unknown, BookingData> = {
|
|
35
35
|
id: "confirm_booking",
|
|
36
36
|
description: "Confirm the hotel booking with all details",
|
|
37
37
|
parameters: {
|
|
38
38
|
type: "object",
|
|
39
39
|
properties: {},
|
|
40
40
|
},
|
|
41
|
-
handler: (
|
|
42
|
-
const bookingData = data
|
|
41
|
+
handler: (context, args) => {
|
|
42
|
+
const bookingData = context.data;
|
|
43
43
|
const bookingId = `BK-${Date.now()}`;
|
|
44
44
|
|
|
45
45
|
console.log(`📋 Confirming booking ${bookingId} for ${bookingData.customerName}`);
|
|
@@ -38,15 +38,15 @@ interface SupportContext {
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
// Support tools
|
|
41
|
-
const createTicket: Tool<unknown, SupportTicketData
|
|
41
|
+
const createTicket: Tool<unknown, SupportTicketData> = {
|
|
42
42
|
id: "create_support_ticket",
|
|
43
43
|
description: "Create a new support ticket",
|
|
44
44
|
parameters: {
|
|
45
45
|
type: "object",
|
|
46
46
|
properties: {},
|
|
47
47
|
},
|
|
48
|
-
handler: (
|
|
49
|
-
const ticketData = data
|
|
48
|
+
handler: (context, args) => {
|
|
49
|
+
const ticketData = context.data;
|
|
50
50
|
const ticketId = `TICKET-${Date.now()}`;
|
|
51
51
|
console.log(
|
|
52
52
|
`Creating ticket ${ticketId} for ${ticketData?.category} issue`
|