@falai/agent 0.9.0-alpha-1 ā 0.9.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/README.md +34 -22
- package/dist/cjs/src/core/Agent.d.ts +77 -59
- package/dist/cjs/src/core/Agent.d.ts.map +1 -1
- package/dist/cjs/src/core/Agent.js +284 -1060
- package/dist/cjs/src/core/Agent.js.map +1 -1
- package/dist/cjs/src/core/PersistenceManager.d.ts.map +1 -1
- package/dist/cjs/src/core/PersistenceManager.js +48 -25
- package/dist/cjs/src/core/PersistenceManager.js.map +1 -1
- package/dist/cjs/src/core/PromptComposer.d.ts +1 -1
- package/dist/cjs/src/core/PromptComposer.d.ts.map +1 -1
- package/dist/cjs/src/core/PromptComposer.js.map +1 -1
- package/dist/cjs/src/core/ResponseEngine.d.ts +13 -12
- package/dist/cjs/src/core/ResponseEngine.d.ts.map +1 -1
- package/dist/cjs/src/core/ResponseEngine.js +4 -4
- package/dist/cjs/src/core/ResponseEngine.js.map +1 -1
- package/dist/cjs/src/core/ResponseModal.d.ts +205 -0
- package/dist/cjs/src/core/ResponseModal.d.ts.map +1 -0
- package/dist/cjs/src/core/ResponseModal.js +1328 -0
- package/dist/cjs/src/core/ResponseModal.js.map +1 -0
- package/dist/cjs/src/core/ResponsePipeline.d.ts +66 -38
- package/dist/cjs/src/core/ResponsePipeline.d.ts.map +1 -1
- package/dist/cjs/src/core/ResponsePipeline.js +72 -4
- package/dist/cjs/src/core/ResponsePipeline.js.map +1 -1
- package/dist/cjs/src/core/Route.d.ts +24 -5
- package/dist/cjs/src/core/Route.d.ts.map +1 -1
- package/dist/cjs/src/core/Route.js +45 -1
- package/dist/cjs/src/core/Route.js.map +1 -1
- package/dist/cjs/src/core/RoutingEngine.d.ts +31 -6
- package/dist/cjs/src/core/RoutingEngine.d.ts.map +1 -1
- package/dist/cjs/src/core/RoutingEngine.js +113 -9
- package/dist/cjs/src/core/RoutingEngine.js.map +1 -1
- package/dist/cjs/src/core/SessionManager.d.ts +14 -4
- package/dist/cjs/src/core/SessionManager.d.ts.map +1 -1
- package/dist/cjs/src/core/SessionManager.js +25 -5
- package/dist/cjs/src/core/SessionManager.js.map +1 -1
- package/dist/cjs/src/core/Step.d.ts +10 -10
- package/dist/cjs/src/core/Step.d.ts.map +1 -1
- package/dist/cjs/src/core/Step.js.map +1 -1
- package/dist/cjs/src/core/ToolExecutor.d.ts +4 -2
- package/dist/cjs/src/core/ToolExecutor.d.ts.map +1 -1
- package/dist/cjs/src/core/ToolExecutor.js +13 -3
- package/dist/cjs/src/core/ToolExecutor.js.map +1 -1
- package/dist/cjs/src/index.d.ts +3 -1
- package/dist/cjs/src/index.d.ts.map +1 -1
- package/dist/cjs/src/index.js +7 -1
- package/dist/cjs/src/index.js.map +1 -1
- package/dist/cjs/src/types/agent.d.ts +42 -21
- package/dist/cjs/src/types/agent.d.ts.map +1 -1
- package/dist/cjs/src/types/agent.js.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 +1 -1
- package/dist/cjs/src/types/index.d.ts.map +1 -1
- package/dist/cjs/src/types/index.js.map +1 -1
- package/dist/cjs/src/types/persistence.d.ts +0 -1
- package/dist/cjs/src/types/persistence.d.ts.map +1 -1
- package/dist/cjs/src/types/route.d.ts +22 -16
- package/dist/cjs/src/types/route.d.ts.map +1 -1
- package/dist/cjs/src/types/session.d.ts +6 -11
- package/dist/cjs/src/types/session.d.ts.map +1 -1
- package/dist/cjs/src/types/tool.d.ts +12 -6
- package/dist/cjs/src/types/tool.d.ts.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/cjs/src/utils/session.d.ts +2 -2
- package/dist/cjs/src/utils/session.d.ts.map +1 -1
- package/dist/cjs/src/utils/session.js +6 -26
- package/dist/cjs/src/utils/session.js.map +1 -1
- package/dist/src/core/Agent.d.ts +77 -59
- package/dist/src/core/Agent.d.ts.map +1 -1
- package/dist/src/core/Agent.js +285 -1061
- package/dist/src/core/Agent.js.map +1 -1
- package/dist/src/core/PersistenceManager.d.ts.map +1 -1
- package/dist/src/core/PersistenceManager.js +48 -25
- package/dist/src/core/PersistenceManager.js.map +1 -1
- package/dist/src/core/PromptComposer.d.ts +1 -1
- package/dist/src/core/PromptComposer.d.ts.map +1 -1
- package/dist/src/core/PromptComposer.js.map +1 -1
- package/dist/src/core/ResponseEngine.d.ts +13 -12
- package/dist/src/core/ResponseEngine.d.ts.map +1 -1
- package/dist/src/core/ResponseEngine.js +4 -4
- package/dist/src/core/ResponseEngine.js.map +1 -1
- package/dist/src/core/ResponseModal.d.ts +205 -0
- package/dist/src/core/ResponseModal.d.ts.map +1 -0
- package/dist/src/core/ResponseModal.js +1323 -0
- package/dist/src/core/ResponseModal.js.map +1 -0
- package/dist/src/core/ResponsePipeline.d.ts +66 -38
- package/dist/src/core/ResponsePipeline.d.ts.map +1 -1
- package/dist/src/core/ResponsePipeline.js +72 -4
- package/dist/src/core/ResponsePipeline.js.map +1 -1
- package/dist/src/core/Route.d.ts +24 -5
- package/dist/src/core/Route.d.ts.map +1 -1
- package/dist/src/core/Route.js +45 -1
- package/dist/src/core/Route.js.map +1 -1
- package/dist/src/core/RoutingEngine.d.ts +31 -6
- package/dist/src/core/RoutingEngine.d.ts.map +1 -1
- package/dist/src/core/RoutingEngine.js +113 -9
- package/dist/src/core/RoutingEngine.js.map +1 -1
- package/dist/src/core/SessionManager.d.ts +14 -4
- package/dist/src/core/SessionManager.d.ts.map +1 -1
- package/dist/src/core/SessionManager.js +25 -5
- package/dist/src/core/SessionManager.js.map +1 -1
- package/dist/src/core/Step.d.ts +10 -10
- package/dist/src/core/Step.d.ts.map +1 -1
- package/dist/src/core/Step.js.map +1 -1
- package/dist/src/core/ToolExecutor.d.ts +4 -2
- package/dist/src/core/ToolExecutor.d.ts.map +1 -1
- package/dist/src/core/ToolExecutor.js +13 -3
- package/dist/src/core/ToolExecutor.js.map +1 -1
- package/dist/src/index.d.ts +3 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/types/agent.d.ts +42 -21
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/agent.js.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 +1 -1
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/index.js.map +1 -1
- package/dist/src/types/persistence.d.ts +0 -1
- package/dist/src/types/persistence.d.ts.map +1 -1
- package/dist/src/types/route.d.ts +22 -16
- package/dist/src/types/route.d.ts.map +1 -1
- package/dist/src/types/session.d.ts +6 -11
- package/dist/src/types/session.d.ts.map +1 -1
- package/dist/src/types/tool.d.ts +12 -6
- package/dist/src/types/tool.d.ts.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/dist/src/utils/session.d.ts +2 -2
- package/dist/src/utils/session.d.ts.map +1 -1
- package/dist/src/utils/session.js +6 -26
- package/dist/src/utils/session.js.map +1 -1
- package/docs/README.md +5 -4
- package/docs/api/README.md +195 -4
- package/docs/api/overview.md +232 -13
- package/docs/core/agent/README.md +162 -17
- package/docs/core/agent/context-management.md +39 -15
- package/docs/core/agent/session-management.md +49 -16
- package/docs/core/ai-integration/prompt-composition.md +38 -14
- package/docs/core/ai-integration/response-processing.md +28 -17
- package/docs/core/conversation-flows/data-collection.md +103 -25
- package/docs/core/conversation-flows/route-dsl.md +45 -22
- package/docs/core/conversation-flows/routes.md +74 -18
- package/docs/core/conversation-flows/step-transitions.md +3 -3
- package/docs/core/conversation-flows/steps.md +39 -15
- package/docs/core/routing/intelligent-routing.md +18 -9
- package/docs/core/tools/tool-definition.md +8 -8
- package/docs/core/tools/tool-execution.md +26 -26
- package/docs/core/tools/tool-scoping.md +5 -5
- package/docs/guides/getting-started/README.md +54 -32
- 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 +37 -28
- package/examples/advanced-patterns/persistent-onboarding.ts +70 -41
- package/examples/advanced-patterns/route-lifecycle-hooks.ts +28 -2
- package/examples/advanced-patterns/streaming-responses.ts +197 -119
- package/examples/ai-providers/anthropic-integration.ts +40 -33
- package/examples/ai-providers/openai-integration.ts +25 -25
- package/examples/conversation-flows/completion-transitions.ts +36 -32
- package/examples/core-concepts/basic-agent.ts +76 -78
- package/examples/core-concepts/modern-streaming-api.ts +309 -0
- package/examples/core-concepts/schema-driven-extraction.ts +20 -16
- package/examples/core-concepts/session-management.ts +65 -53
- package/examples/integrations/database-integration.ts +49 -34
- package/examples/integrations/healthcare-integration.ts +96 -91
- package/examples/integrations/search-integration.ts +79 -82
- package/examples/integrations/server-session-management.ts +25 -17
- package/examples/persistence/database-persistence.ts +61 -45
- package/examples/persistence/memory-sessions.ts +52 -63
- package/examples/persistence/redis-persistence.ts +81 -95
- package/examples/tools/basic-tools.ts +73 -62
- package/examples/tools/data-enrichment-tools.ts +52 -44
- package/package.json +1 -1
- package/src/core/Agent.ts +396 -1499
- package/src/core/PersistenceManager.ts +51 -27
- package/src/core/PromptComposer.ts +1 -1
- package/src/core/ResponseEngine.ts +21 -19
- package/src/core/ResponseModal.ts +1722 -0
- package/src/core/ResponsePipeline.ts +175 -60
- package/src/core/Route.ts +58 -6
- package/src/core/RoutingEngine.ts +174 -27
- package/src/core/SessionManager.ts +32 -8
- package/src/core/Step.ts +20 -12
- package/src/core/ToolExecutor.ts +19 -5
- package/src/index.ts +11 -0
- package/src/types/agent.ts +47 -23
- package/src/types/ai.ts +1 -1
- package/src/types/index.ts +2 -0
- package/src/types/persistence.ts +0 -1
- package/src/types/route.ts +22 -16
- package/src/types/session.ts +6 -12
- package/src/types/tool.ts +15 -9
- package/src/utils/clone.ts +6 -8
- package/src/utils/history.ts +190 -27
- package/src/utils/index.ts +4 -0
- package/src/utils/session.ts +6 -31
|
@@ -120,11 +120,37 @@ function createPersistentOnboardingAgent(sessionId: string) {
|
|
|
120
120
|
model: "models/gemini-2.5-flash",
|
|
121
121
|
});
|
|
122
122
|
|
|
123
|
-
|
|
123
|
+
// Define the onboarding schema
|
|
124
|
+
const onboardingSchema = {
|
|
125
|
+
type: "object",
|
|
126
|
+
properties: {
|
|
127
|
+
businessName: {
|
|
128
|
+
type: "string",
|
|
129
|
+
description: "Name of the business",
|
|
130
|
+
},
|
|
131
|
+
businessDescription: {
|
|
132
|
+
type: "string",
|
|
133
|
+
description: "Brief description of what the business does",
|
|
134
|
+
},
|
|
135
|
+
industry: {
|
|
136
|
+
type: "string",
|
|
137
|
+
description: "Industry the business operates in",
|
|
138
|
+
},
|
|
139
|
+
contactEmail: {
|
|
140
|
+
type: "string",
|
|
141
|
+
description: "Contact email for the business",
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
required: ["businessName", "businessDescription"],
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
const agent = new Agent<OnboardingContext, OnboardingData>({
|
|
124
148
|
name: "OnboardingBot",
|
|
125
149
|
description: "A friendly assistant that helps businesses get started",
|
|
126
150
|
goal: "Collect business information efficiently while being conversational",
|
|
127
151
|
provider: provider,
|
|
152
|
+
// NEW: Agent-level schema
|
|
153
|
+
schema: onboardingSchema,
|
|
128
154
|
|
|
129
155
|
// Knowledge base with onboarding best practices
|
|
130
156
|
knowledgeBase: {
|
|
@@ -204,9 +230,9 @@ function createPersistentOnboardingAgent(sessionId: string) {
|
|
|
204
230
|
// OPTION 1: Using contextUpdate in return value
|
|
205
231
|
const saveBusinessInfo: Tool<
|
|
206
232
|
OnboardingContext,
|
|
233
|
+
OnboardingData,
|
|
207
234
|
unknown[],
|
|
208
|
-
unknown
|
|
209
|
-
OnboardingData
|
|
235
|
+
unknown
|
|
210
236
|
> = {
|
|
211
237
|
id: "save_business_info",
|
|
212
238
|
name: "Business Info Saver",
|
|
@@ -244,9 +270,9 @@ function createPersistentOnboardingAgent(sessionId: string) {
|
|
|
244
270
|
// OPTION 2: Using updateContext method directly
|
|
245
271
|
const saveIndustry: Tool<
|
|
246
272
|
OnboardingContext,
|
|
273
|
+
OnboardingData,
|
|
247
274
|
unknown[],
|
|
248
|
-
unknown
|
|
249
|
-
OnboardingData
|
|
275
|
+
unknown
|
|
250
276
|
> = {
|
|
251
277
|
id: "save_industry",
|
|
252
278
|
name: "Industry Classifier",
|
|
@@ -277,9 +303,9 @@ function createPersistentOnboardingAgent(sessionId: string) {
|
|
|
277
303
|
|
|
278
304
|
const saveContactEmail: Tool<
|
|
279
305
|
OnboardingContext,
|
|
306
|
+
OnboardingData,
|
|
280
307
|
unknown[],
|
|
281
|
-
unknown
|
|
282
|
-
OnboardingData
|
|
308
|
+
unknown
|
|
283
309
|
> = {
|
|
284
310
|
id: "save_contact_email",
|
|
285
311
|
name: "Contact Email Saver",
|
|
@@ -311,32 +337,14 @@ function createPersistentOnboardingAgent(sessionId: string) {
|
|
|
311
337
|
// ONBOARDING ROUTE WITH DATA EXTRACTION
|
|
312
338
|
// ============================================================================
|
|
313
339
|
|
|
314
|
-
const onboardingRoute = agent.createRoute
|
|
340
|
+
const onboardingRoute = agent.createRoute({
|
|
315
341
|
title: "Business Onboarding",
|
|
316
342
|
description: "Guide user through business information collection",
|
|
317
343
|
conditions: ["User is onboarding their business"],
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
type: "string",
|
|
323
|
-
description: "Name of the business",
|
|
324
|
-
},
|
|
325
|
-
businessDescription: {
|
|
326
|
-
type: "string",
|
|
327
|
-
description: "Brief description of what the business does",
|
|
328
|
-
},
|
|
329
|
-
industry: {
|
|
330
|
-
type: "string",
|
|
331
|
-
description: "Industry the business operates in",
|
|
332
|
-
},
|
|
333
|
-
contactEmail: {
|
|
334
|
-
type: "string",
|
|
335
|
-
description: "Contact email for the business",
|
|
336
|
-
},
|
|
337
|
-
},
|
|
338
|
-
required: ["businessName", "businessDescription"],
|
|
339
|
-
},
|
|
344
|
+
// NEW: Required fields for route completion
|
|
345
|
+
requiredFields: ["businessName", "businessDescription"],
|
|
346
|
+
// NEW: Optional fields that enhance the experience
|
|
347
|
+
optionalFields: ["industry", "contactEmail"],
|
|
340
348
|
endStep: {
|
|
341
349
|
prompt:
|
|
342
350
|
"Summarize all collected information warmly and confirm onboarding is complete",
|
|
@@ -428,10 +436,36 @@ function createOnboardingAgentWithProvider(sessionId: string) {
|
|
|
428
436
|
model: "models/gemini-2.5-flash",
|
|
429
437
|
});
|
|
430
438
|
|
|
431
|
-
|
|
439
|
+
// Define the onboarding schema
|
|
440
|
+
const onboardingSchema = {
|
|
441
|
+
type: "object",
|
|
442
|
+
properties: {
|
|
443
|
+
businessName: {
|
|
444
|
+
type: "string",
|
|
445
|
+
description: "Name of the business",
|
|
446
|
+
},
|
|
447
|
+
businessDescription: {
|
|
448
|
+
type: "string",
|
|
449
|
+
description: "Brief description of what the business does",
|
|
450
|
+
},
|
|
451
|
+
industry: {
|
|
452
|
+
type: "string",
|
|
453
|
+
description: "Industry the business operates in",
|
|
454
|
+
},
|
|
455
|
+
contactEmail: {
|
|
456
|
+
type: "string",
|
|
457
|
+
description: "Contact email for the business",
|
|
458
|
+
},
|
|
459
|
+
},
|
|
460
|
+
required: ["businessName", "businessDescription"],
|
|
461
|
+
};
|
|
462
|
+
|
|
463
|
+
const agent = new Agent<OnboardingContext, OnboardingData>({
|
|
432
464
|
name: "OnboardingBot",
|
|
433
465
|
description: "A friendly assistant that helps businesses get started",
|
|
434
466
|
provider: provider,
|
|
467
|
+
// NEW: Agent-level schema
|
|
468
|
+
schema: onboardingSchema,
|
|
435
469
|
|
|
436
470
|
// Context is always fetched fresh from database
|
|
437
471
|
contextProvider: () => {
|
|
@@ -499,7 +533,7 @@ async function main() {
|
|
|
499
533
|
});
|
|
500
534
|
|
|
501
535
|
console.log("š¤ Bot:", response1.message);
|
|
502
|
-
console.log("š Data after turn 1:", agent.session.getData
|
|
536
|
+
console.log("š Data after turn 1:", agent.session.getData());
|
|
503
537
|
console.log("š Route:", response1.session?.currentRoute?.title);
|
|
504
538
|
|
|
505
539
|
// Check route completion after turn 1
|
|
@@ -533,7 +567,7 @@ async function main() {
|
|
|
533
567
|
name: "Alice",
|
|
534
568
|
},
|
|
535
569
|
];
|
|
536
|
-
const response2 = await agent.respond({ history: history2
|
|
570
|
+
const response2 = await agent.respond({ history: history2 });
|
|
537
571
|
console.log("š¤ Bot:", response2.message);
|
|
538
572
|
console.log("š Data after turn 2:", response2.session?.data);
|
|
539
573
|
|
|
@@ -547,8 +581,6 @@ async function main() {
|
|
|
547
581
|
|
|
548
582
|
console.log();
|
|
549
583
|
|
|
550
|
-
// Update session again
|
|
551
|
-
session = response2.session!;
|
|
552
584
|
|
|
553
585
|
// Turn 3: User provides industry
|
|
554
586
|
console.log("š± Turn 3: User provides industry");
|
|
@@ -564,7 +596,7 @@ async function main() {
|
|
|
564
596
|
name: "Alice",
|
|
565
597
|
},
|
|
566
598
|
];
|
|
567
|
-
const response3 = await agent.respond({ history: history3
|
|
599
|
+
const response3 = await agent.respond({ history: history3 });
|
|
568
600
|
console.log("š¤ Bot:", response3.message);
|
|
569
601
|
console.log("š Data after turn 3:", response3.session?.data);
|
|
570
602
|
|
|
@@ -578,9 +610,6 @@ async function main() {
|
|
|
578
610
|
|
|
579
611
|
console.log();
|
|
580
612
|
|
|
581
|
-
// Update session again
|
|
582
|
-
session = response3.session!;
|
|
583
|
-
|
|
584
613
|
// Turn 4: User provides contact email, completing the flow
|
|
585
614
|
console.log("š± Turn 4: User provides contact email");
|
|
586
615
|
const history4 = [
|
|
@@ -595,7 +624,7 @@ async function main() {
|
|
|
595
624
|
name: "Alice",
|
|
596
625
|
},
|
|
597
626
|
];
|
|
598
|
-
const response4 = await agent.respond({ history: history4
|
|
627
|
+
const response4 = await agent.respond({ history: history4 });
|
|
599
628
|
console.log("š¤ Bot:", response4.message);
|
|
600
629
|
console.log("š Data after turn 4:", response4.session?.data);
|
|
601
630
|
|
|
@@ -603,7 +632,7 @@ async function main() {
|
|
|
603
632
|
if (response4.isRouteComplete) {
|
|
604
633
|
console.log("\nā
Onboarding complete!");
|
|
605
634
|
await finalizeOnboarding(
|
|
606
|
-
agent.getData(
|
|
635
|
+
agent.getData() as unknown as OnboardingData
|
|
607
636
|
);
|
|
608
637
|
}
|
|
609
638
|
|
|
@@ -16,15 +16,39 @@ const provider = new OpenAIProvider({
|
|
|
16
16
|
model: "gpt-5",
|
|
17
17
|
});
|
|
18
18
|
|
|
19
|
+
// Define data schema for feedback collection
|
|
20
|
+
interface ServiceData {
|
|
21
|
+
feedbackRating?: number;
|
|
22
|
+
feedbackComments?: string;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const serviceSchema = {
|
|
26
|
+
type: "object",
|
|
27
|
+
properties: {
|
|
28
|
+
feedbackRating: {
|
|
29
|
+
type: "number",
|
|
30
|
+
description: "Rating from 1-5",
|
|
31
|
+
minimum: 1,
|
|
32
|
+
maximum: 5,
|
|
33
|
+
},
|
|
34
|
+
feedbackComments: {
|
|
35
|
+
type: "string",
|
|
36
|
+
description: "Additional feedback comments",
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
|
|
19
41
|
/**
|
|
20
42
|
* Create a new agent instance with predefined routes and rules/prohibitions.
|
|
21
43
|
*/
|
|
22
|
-
const agent = new Agent({
|
|
44
|
+
const agent = new Agent<unknown, ServiceData>({
|
|
23
45
|
name: "CustomerServiceAgent",
|
|
24
46
|
description:
|
|
25
47
|
"A versatile customer service agent that adapts its behavior based on the conversation's context.",
|
|
26
48
|
goal: "Provide excellent customer service by following route-specific rules and prohibitions.",
|
|
27
49
|
provider,
|
|
50
|
+
// NEW: Agent-level schema
|
|
51
|
+
schema: serviceSchema,
|
|
28
52
|
debug: true,
|
|
29
53
|
|
|
30
54
|
// Knowledge base with customer service best practices
|
|
@@ -223,12 +247,14 @@ agent.createRoute({
|
|
|
223
247
|
* Demonstration function to show how the agent responds to different scenarios.
|
|
224
248
|
*/
|
|
225
249
|
async function demonstrateRulesAndProhibitions() {
|
|
226
|
-
const agent = new Agent({
|
|
250
|
+
const agent = new Agent<unknown, ServiceData>({
|
|
227
251
|
name: "CustomerServiceAgent",
|
|
228
252
|
description:
|
|
229
253
|
"A versatile customer service agent that adapts its behavior based on the conversation's context.",
|
|
230
254
|
goal: "Provide excellent customer service by following route-specific rules and prohibitions.",
|
|
231
255
|
provider,
|
|
256
|
+
// NEW: Agent-level schema
|
|
257
|
+
schema: serviceSchema,
|
|
232
258
|
debug: true,
|
|
233
259
|
});
|
|
234
260
|
|