@falai/agent 0.7.0 → 0.8.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.
Files changed (75) hide show
  1. package/README.md +23 -30
  2. package/dist/adapters/MemoryAdapter.d.ts +1 -1
  3. package/dist/adapters/MemoryAdapter.js +1 -1
  4. package/dist/adapters/MongoAdapter.d.ts +1 -1
  5. package/dist/adapters/MongoAdapter.js +1 -1
  6. package/dist/adapters/PostgreSQLAdapter.d.ts +1 -1
  7. package/dist/adapters/PostgreSQLAdapter.js +1 -1
  8. package/dist/adapters/PrismaAdapter.d.ts +1 -1
  9. package/dist/adapters/PrismaAdapter.js +1 -1
  10. package/dist/adapters/RedisAdapter.d.ts +1 -1
  11. package/dist/adapters/RedisAdapter.js +1 -1
  12. package/dist/adapters/SQLiteAdapter.d.ts +1 -1
  13. package/dist/adapters/SQLiteAdapter.js +1 -1
  14. package/dist/cjs/adapters/MemoryAdapter.d.ts +1 -1
  15. package/dist/cjs/adapters/MemoryAdapter.js +1 -1
  16. package/dist/cjs/adapters/MongoAdapter.d.ts +1 -1
  17. package/dist/cjs/adapters/MongoAdapter.js +1 -1
  18. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts +1 -1
  19. package/dist/cjs/adapters/PostgreSQLAdapter.js +1 -1
  20. package/dist/cjs/adapters/PrismaAdapter.d.ts +1 -1
  21. package/dist/cjs/adapters/PrismaAdapter.js +1 -1
  22. package/dist/cjs/adapters/RedisAdapter.d.ts +1 -1
  23. package/dist/cjs/adapters/RedisAdapter.js +1 -1
  24. package/dist/cjs/adapters/SQLiteAdapter.d.ts +1 -1
  25. package/dist/cjs/adapters/SQLiteAdapter.js +1 -1
  26. package/dist/cjs/core/Agent.js +8 -8
  27. package/dist/cjs/core/Agent.js.map +1 -1
  28. package/dist/cjs/core/RoutingEngine.d.ts +1 -1
  29. package/dist/cjs/core/RoutingEngine.d.ts.map +1 -1
  30. package/dist/cjs/core/RoutingEngine.js +5 -5
  31. package/dist/cjs/core/RoutingEngine.js.map +1 -1
  32. package/dist/cjs/types/agent.d.ts +1 -1
  33. package/dist/cjs/types/agent.d.ts.map +1 -1
  34. package/dist/core/Agent.js +8 -8
  35. package/dist/core/Agent.js.map +1 -1
  36. package/dist/core/RoutingEngine.d.ts +1 -1
  37. package/dist/core/RoutingEngine.d.ts.map +1 -1
  38. package/dist/core/RoutingEngine.js +5 -5
  39. package/dist/core/RoutingEngine.js.map +1 -1
  40. package/dist/types/agent.d.ts +1 -1
  41. package/dist/types/agent.d.ts.map +1 -1
  42. package/docs/AGENT.md +7 -7
  43. package/docs/CONTEXT_MANAGEMENT.md +3 -3
  44. package/docs/CONTRIBUTING.md +3 -3
  45. package/docs/DOMAINS.md +2 -2
  46. package/docs/EXAMPLES.md +1 -1
  47. package/docs/GETTING_STARTED.md +3 -3
  48. package/docs/PERSISTENCE.md +4 -4
  49. package/docs/PROVIDERS.md +4 -4
  50. package/examples/business-onboarding.ts +1 -1
  51. package/examples/company-qna-agent.ts +1 -1
  52. package/examples/custom-database-persistence.ts +2 -2
  53. package/examples/declarative-agent.ts +1 -1
  54. package/examples/domain-scoping.ts +2 -2
  55. package/examples/extracted-data-modification.ts +1 -1
  56. package/examples/healthcare-agent.ts +1 -1
  57. package/examples/openai-agent.ts +1 -1
  58. package/examples/opensearch-persistence.ts +3 -3
  59. package/examples/persistent-onboarding.ts +2 -2
  60. package/examples/prisma-persistence.ts +3 -3
  61. package/examples/redis-persistence.ts +3 -3
  62. package/examples/route-transitions.ts +1 -1
  63. package/examples/rules-prohibitions.ts +3 -3
  64. package/examples/streaming-agent.ts +5 -5
  65. package/examples/travel-agent.ts +1 -1
  66. package/package.json +1 -1
  67. package/src/adapters/MemoryAdapter.ts +1 -1
  68. package/src/adapters/MongoAdapter.ts +1 -1
  69. package/src/adapters/PostgreSQLAdapter.ts +1 -1
  70. package/src/adapters/PrismaAdapter.ts +1 -1
  71. package/src/adapters/RedisAdapter.ts +1 -1
  72. package/src/adapters/SQLiteAdapter.ts +1 -1
  73. package/src/core/Agent.ts +8 -8
  74. package/src/core/RoutingEngine.ts +9 -7
  75. package/src/types/agent.ts +1 -1
package/docs/DOMAINS.md CHANGED
@@ -32,7 +32,7 @@ Domains provide **optional** security and organization for your tools. If you ne
32
32
  ```typescript
33
33
  const agent = new Agent({
34
34
  name: "Simple Agent",
35
- ai: provider,
35
+ provider: provider,
36
36
  });
37
37
 
38
38
  // Define tools however you want
@@ -57,7 +57,7 @@ route.initialStep
57
57
  ```typescript
58
58
  const agent = new Agent({
59
59
  name: "Production Agent",
60
- ai: provider,
60
+ provider: provider,
61
61
  });
62
62
 
63
63
  // 1️⃣ Organize tools into domains
package/docs/EXAMPLES.md CHANGED
@@ -68,7 +68,7 @@ Comprehensive example showing declarative agent configuration:
68
68
  ```typescript
69
69
  const agent = new Agent({
70
70
  name: "HealthBot",
71
- ai: provider,
71
+ provider: provider,
72
72
  terms: [...],
73
73
  guidelines: [...],
74
74
  routes: [{
@@ -65,7 +65,7 @@ interface MyContext {
65
65
  }
66
66
 
67
67
  // Create AI provider
68
- const ai = new GeminiProvider({
68
+ const provider = new GeminiProvider({
69
69
  apiKey: process.env.GEMINI_API_KEY!,
70
70
  model: "models/gemini-2.5-pro",
71
71
  });
@@ -74,7 +74,7 @@ const ai = new GeminiProvider({
74
74
  const agent = new Agent<MyContext>({
75
75
  name: "FlightBot",
76
76
  description: "A helpful flight booking assistant",
77
- ai,
77
+ provider,
78
78
  context: {
79
79
  userId: "user_123",
80
80
  userName: "Alice",
@@ -252,7 +252,7 @@ Load everything from config:
252
252
  ```typescript
253
253
  const agent = new Agent({
254
254
  name: "ConfiguredBot",
255
- ai: provider,
255
+ provider: provider,
256
256
  terms: loadTermsFromFile(),
257
257
  guidelines: loadGuidelinesFromDB(),
258
258
  routes: [
@@ -98,7 +98,7 @@ interface BookingData {
98
98
 
99
99
  const agent = new Agent({
100
100
  name: "My Agent",
101
- ai: new GeminiProvider({ apiKey: "..." }),
101
+ provider: new GeminiProvider({ apiKey: "..." }),
102
102
  // ✨ Just add this!
103
103
  persistence: {
104
104
  adapter: new PrismaAdapter({ prisma }),
@@ -219,7 +219,7 @@ Enable automatic message persistence:
219
219
  ```typescript
220
220
  const agent = new Agent({
221
221
  name: "My Agent",
222
- ai: provider,
222
+ provider: provider,
223
223
  persistence: {
224
224
  adapter: new PrismaAdapter({ prisma }),
225
225
  autoSave: true, // Default: true
@@ -235,7 +235,7 @@ The most powerful pattern - auto-sync context with database:
235
235
  ```typescript
236
236
  const agent = new Agent({
237
237
  name: "Smart Assistant",
238
- ai: provider,
238
+ provider: provider,
239
239
  context: {
240
240
  userId: "user_123",
241
241
  sessionId: session.id,
@@ -478,7 +478,7 @@ import { PrismaClient } from "@prisma/client";
478
478
  const prisma = new PrismaClient();
479
479
  const agent = new Agent({
480
480
  name: "Assistant",
481
- ai: provider,
481
+ provider: provider,
482
482
  persistence: {
483
483
  adapter: new PrismaAdapter({ prisma }),
484
484
  },
package/docs/PROVIDERS.md CHANGED
@@ -385,7 +385,7 @@ import {
385
385
  // Use Anthropic (Claude)
386
386
  const claudeAgent = new Agent({
387
387
  name: "Claude Assistant",
388
- ai: new AnthropicProvider({
388
+ provider: new AnthropicProvider({
389
389
  apiKey: process.env.ANTHROPIC_API_KEY!,
390
390
  model: "claude-sonnet-4-5",
391
391
  }),
@@ -394,7 +394,7 @@ const claudeAgent = new Agent({
394
394
  // Use Gemini
395
395
  const geminiAgent = new Agent({
396
396
  name: "Gemini Assistant",
397
- ai: new GeminiProvider({
397
+ provider: new GeminiProvider({
398
398
  apiKey: process.env.GEMINI_API_KEY!,
399
399
  model: "models/gemini-2.5-flash",
400
400
  }),
@@ -403,7 +403,7 @@ const geminiAgent = new Agent({
403
403
  // Use OpenAI
404
404
  const openaiAgent = new Agent({
405
405
  name: "OpenAI Assistant",
406
- ai: new OpenAIProvider({
406
+ provider: new OpenAIProvider({
407
407
  apiKey: process.env.OPENAI_API_KEY!,
408
408
  model: "gpt-5",
409
409
  }),
@@ -412,7 +412,7 @@ const openaiAgent = new Agent({
412
412
  // Use OpenRouter (access to 200+ models)
413
413
  const openrouterAgent = new Agent({
414
414
  name: "OpenRouter Assistant",
415
- ai: new OpenRouterProvider({
415
+ provider: new OpenRouterProvider({
416
416
  apiKey: process.env.OPENROUTER_API_KEY!,
417
417
  model: "anthropic/claude-sonnet-4-5",
418
418
  }),
@@ -379,7 +379,7 @@ async function createBusinessOnboardingAgent(
379
379
  description:
380
380
  "A specialized assistant that helps businesses set up intelligent conversation routes for their customers.",
381
381
  goal: "Collect comprehensive business information and create personalized conversation routes",
382
- ai: provider,
382
+ provider: provider,
383
383
  context: {
384
384
  userId,
385
385
  userName,
@@ -146,7 +146,7 @@ const agent = new Agent<CompanyContext>({
146
146
  "I'm here to help you learn about Acme Corp, our products, and policies",
147
147
  personality:
148
148
  "Friendly, helpful, and knowledgeable. Always professional but approachable.",
149
- ai: new OpenAIProvider({
149
+ provider: new OpenAIProvider({
150
150
  apiKey: process.env.OPENAI_API_KEY || "test-key",
151
151
  model: "gpt-5o-mini",
152
152
  }),
@@ -133,7 +133,7 @@ async function example() {
133
133
  name: "Onboarding Assistant",
134
134
  description: "Help new customers get started",
135
135
  goal: "Collect customer information efficiently",
136
- ai: new GeminiProvider({
136
+ provider: new GeminiProvider({
137
137
  apiKey: process.env.GEMINI_API_KEY!,
138
138
  model: "models/gemini-2.0-flash-exp",
139
139
  }),
@@ -479,7 +479,7 @@ async function advancedExample() {
479
479
 
480
480
  const agent = new Agent({
481
481
  name: "Smart Onboarding",
482
- ai: new GeminiProvider({
482
+ provider: new GeminiProvider({
483
483
  apiKey: process.env.GEMINI_API_KEY!,
484
484
  model: "models/gemini-2.0-flash-exp",
485
485
  }),
@@ -296,7 +296,7 @@ const agent = new Agent<HealthcareContext>({
296
296
  patientId: "p_12345",
297
297
  patientName: "Alice Johnson",
298
298
  },
299
- ai: new GeminiProvider({
299
+ provider: new GeminiProvider({
300
300
  apiKey: process.env.GEMINI_API_KEY || "demo-key",
301
301
  model: "models/gemini-2.5-flash",
302
302
  }),
@@ -23,7 +23,7 @@ import {
23
23
  import { OpenRouterProvider } from "../src/providers";
24
24
 
25
25
  // Initialize AI provider
26
- const ai = new OpenRouterProvider({
26
+ const provider = new OpenRouterProvider({
27
27
  apiKey: process.env.OPENROUTER_API_KEY || "your-api-key-here",
28
28
  model: "google/gemini-2.0-flash-exp",
29
29
  backupModels: ["anthropic/claude-sonnet-4-5"],
@@ -34,7 +34,7 @@ const agent = new Agent({
34
34
  name: "Multi-Domain Assistant",
35
35
  description:
36
36
  "An assistant that handles different tasks with domain-scoped tools",
37
- ai,
37
+ provider,
38
38
  });
39
39
 
40
40
  // Register different domains with their tools
@@ -252,7 +252,7 @@ const agent = new Agent<FlightBookingContext>({
252
252
  name: "Flight Booking Agent",
253
253
  goal: "Help users book flights efficiently",
254
254
  description: "I help you find and book flights",
255
- ai: new OpenAIProvider({
255
+ provider: new OpenAIProvider({
256
256
  apiKey: process.env.OPENAI_API_KEY || "your-api-key-here",
257
257
  model: "gpt-5o-mini",
258
258
  }),
@@ -106,7 +106,7 @@ async function createHealthcareAgent() {
106
106
  const agent = new Agent<HealthcareContext>({
107
107
  name: "Healthcare Agent",
108
108
  description: "Is empathetic and calming to the patient.",
109
- ai: provider,
109
+ provider: provider,
110
110
  context: {
111
111
  patientId: "patient-123",
112
112
  patientName: "Test Patient",
@@ -84,7 +84,7 @@ async function main() {
84
84
  name: "Alice",
85
85
  preferences: ["concise answers", "weather updates"],
86
86
  },
87
- ai: openaiProvider,
87
+ provider: openaiProvider,
88
88
  });
89
89
 
90
90
  // Add domain knowledge
@@ -81,7 +81,7 @@ async function example() {
81
81
  name: "Customer Service Agent",
82
82
  description: "Handle customer complaints with full-text search",
83
83
  goal: "Resolve customer issues efficiently",
84
- ai: new GeminiProvider({
84
+ provider: new GeminiProvider({
85
85
  apiKey: process.env.GEMINI_API_KEY!,
86
86
  model: "models/gemini-2.0-flash-exp",
87
87
  }),
@@ -331,7 +331,7 @@ async function analyticsExample() {
331
331
 
332
332
  const agent = new Agent({
333
333
  name: "Support Analyzer",
334
- ai: new GeminiProvider({
334
+ provider: new GeminiProvider({
335
335
  apiKey: process.env.GEMINI_API_KEY!,
336
336
  model: "models/gemini-2.0-flash-exp",
337
337
  }),
@@ -442,7 +442,7 @@ async function timeSeriesExample() {
442
442
 
443
443
  const agent = new Agent({
444
444
  name: "Metrics Agent",
445
- ai: new GeminiProvider({
445
+ provider: new GeminiProvider({
446
446
  apiKey: process.env.GEMINI_API_KEY!,
447
447
  model: "models/gemini-2.0-flash-exp",
448
448
  }),
@@ -130,7 +130,7 @@ async function createPersistentOnboardingAgent(sessionId: string) {
130
130
  name: "OnboardingBot",
131
131
  description: "A friendly assistant that helps businesses get started",
132
132
  goal: "Collect business information efficiently while being conversational",
133
- ai: provider,
133
+ provider: provider,
134
134
  // Context is loaded fresh from database on each respond() call
135
135
  contextProvider: async () => {
136
136
  console.log("🔄 Loading fresh context from database...");
@@ -359,7 +359,7 @@ async function createOnboardingAgentWithProvider(sessionId: string) {
359
359
  const agent = new Agent<OnboardingContext>({
360
360
  name: "OnboardingBot",
361
361
  description: "A friendly assistant that helps businesses get started",
362
- ai: provider,
362
+ provider: provider,
363
363
 
364
364
  // Context is always fetched fresh from database
365
365
  contextProvider: async () => {
@@ -85,7 +85,7 @@ async function example() {
85
85
  name: "Travel Assistant",
86
86
  description: "A helpful travel booking assistant",
87
87
  goal: "Help users book flights with ease",
88
- ai: new GeminiProvider({
88
+ provider: new GeminiProvider({
89
89
  apiKey: process.env.GEMINI_API_KEY!,
90
90
  model: "models/gemini-2.0-flash-exp",
91
91
  }),
@@ -383,7 +383,7 @@ async function advancedExample() {
383
383
  const agent = new Agent<UserContext>({
384
384
  name: "Onboarding Assistant",
385
385
  description: "Help new users get started",
386
- ai: new GeminiProvider({
386
+ provider: new GeminiProvider({
387
387
  apiKey: process.env.GEMINI_API_KEY!,
388
388
  model: "models/gemini-2.0-flash-exp",
389
389
  }),
@@ -517,7 +517,7 @@ async function quickStart() {
517
517
 
518
518
  const agent = new Agent({
519
519
  name: "Support Agent",
520
- ai: new GeminiProvider({
520
+ provider: new GeminiProvider({
521
521
  apiKey: process.env.GEMINI_API_KEY!,
522
522
  model: "models/gemini-2.0-flash-exp",
523
523
  }),
@@ -69,7 +69,7 @@ async function example() {
69
69
  name: "Support Assistant",
70
70
  description: "Fast, real-time support assistant",
71
71
  goal: "Help users resolve issues quickly",
72
- ai: new GeminiProvider({
72
+ provider: new GeminiProvider({
73
73
  apiKey: process.env.GEMINI_API_KEY!,
74
74
  model: "models/gemini-2.0-flash-exp",
75
75
  }),
@@ -281,7 +281,7 @@ async function highThroughputExample() {
281
281
  const agent = new Agent({
282
282
  name: "Chat Bot",
283
283
  description: "Fast chat responses",
284
- ai: new GeminiProvider({
284
+ provider: new GeminiProvider({
285
285
  apiKey: process.env.GEMINI_API_KEY!,
286
286
  model: "models/gemini-2.0-flash-exp",
287
287
  }),
@@ -366,7 +366,7 @@ async function sessionRecoveryExample() {
366
366
 
367
367
  const agent = new Agent({
368
368
  name: "Order Assistant",
369
- ai: new GeminiProvider({
369
+ provider: new GeminiProvider({
370
370
  apiKey: process.env.GEMINI_API_KEY!,
371
371
  model: "models/gemini-2.0-flash-exp",
372
372
  }),
@@ -34,7 +34,7 @@ async function main() {
34
34
  const agent = new Agent({
35
35
  name: "HotelBot",
36
36
  description: "A hotel booking assistant with feedback collection",
37
- ai: new GeminiProvider({
37
+ provider: new GeminiProvider({
38
38
  apiKey: process.env.GEMINI_API_KEY!,
39
39
  model: "models/gemini-2.0-flash-exp",
40
40
  }),
@@ -19,7 +19,7 @@ import { OpenAIProvider } from "../src/providers/OpenAIProvider";
19
19
  /**
20
20
  * Configuration for the AI provider
21
21
  */
22
- const ai = new OpenAIProvider({
22
+ const provider = new OpenAIProvider({
23
23
  apiKey: process.env.OPENAI_API_KEY || "your-api-key-here",
24
24
  model: "gpt-5",
25
25
  });
@@ -32,7 +32,7 @@ const agent = new Agent({
32
32
  description:
33
33
  "A versatile customer service agent that adapts its behavior based on the conversation's context.",
34
34
  goal: "Provide excellent customer service by following route-specific rules and prohibitions.",
35
- ai,
35
+ provider,
36
36
  debug: true,
37
37
  });
38
38
 
@@ -166,7 +166,7 @@ async function demonstrateRulesAndProhibitions() {
166
166
  description:
167
167
  "A versatile customer service agent that adapts its behavior based on the conversation's context.",
168
168
  goal: "Provide excellent customer service by following route-specific rules and prohibitions.",
169
- ai,
169
+ provider,
170
170
  debug: true,
171
171
  });
172
172
 
@@ -51,7 +51,7 @@ async function streamingWithAnthropic() {
51
51
  streamingEnabled: true,
52
52
  },
53
53
  },
54
- ai: provider,
54
+ provider: provider,
55
55
  });
56
56
 
57
57
  // Add guidelines
@@ -127,7 +127,7 @@ async function streamingWithOpenAI() {
127
127
  streamingEnabled: true,
128
128
  },
129
129
  },
130
- ai: provider,
130
+ provider: provider,
131
131
  });
132
132
 
133
133
  const history = [
@@ -187,7 +187,7 @@ async function streamingWithGemini() {
187
187
  streamingEnabled: true,
188
188
  },
189
189
  },
190
- ai: provider,
190
+ provider: provider,
191
191
  });
192
192
 
193
193
  const history = [
@@ -244,7 +244,7 @@ async function streamingWithRoutes() {
244
244
  streamingEnabled: true,
245
245
  },
246
246
  },
247
- ai: provider,
247
+ provider: provider,
248
248
  });
249
249
 
250
250
  // Create a route
@@ -357,7 +357,7 @@ async function streamingWithAbortSignal() {
357
357
  streamingEnabled: true,
358
358
  },
359
359
  },
360
- ai: provider,
360
+ provider: provider,
361
361
  });
362
362
 
363
363
  const history = [
@@ -189,7 +189,7 @@ async function createTravelAgent() {
189
189
  description:
190
190
  "A knowledgeable travel agent who helps book flights, answer travel questions, and manage reservations.",
191
191
  goal: "Help customers book travel and manage their reservations",
192
- ai: provider,
192
+ provider: provider,
193
193
  context: {
194
194
  customerId: "test-123",
195
195
  customerName: "Test Customer",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@falai/agent",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "Standalone, strongly-typed AI Agent framework with route DSL and AI provider strategy",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/index.js",
@@ -27,7 +27,7 @@ import type {
27
27
  *
28
28
  * const agent = new Agent({
29
29
  * name: "My Agent",
30
- * ai: provider,
30
+ * provider: provider,
31
31
  * persistence: {
32
32
  * adapter: new MemoryAdapter(),
33
33
  * userId: "user_123",
@@ -87,7 +87,7 @@ export interface MongoAdapterOptions {
87
87
  *
88
88
  * const agent = new Agent({
89
89
  * name: "My Agent",
90
- * ai: provider,
90
+ * provider: provider,
91
91
  * persistence: {
92
92
  * adapter: new MongoAdapter({
93
93
  * client,
@@ -68,7 +68,7 @@ export interface PostgreSQLAdapterOptions {
68
68
  *
69
69
  * const agent = new Agent({
70
70
  * name: "My Agent",
71
- * ai: provider,
71
+ * provider: provider,
72
72
  * persistence: {
73
73
  * adapter: new PostgreSQLAdapter({ client }),
74
74
  * userId: "user_123",
@@ -107,7 +107,7 @@ export interface PrismaAdapterOptions {
107
107
  *
108
108
  * const agent = new Agent({
109
109
  * name: "My Agent",
110
- * ai: provider,
110
+ * provider: provider,
111
111
  * persistence: {
112
112
  * adapter: new PrismaAdapter({ prisma }),
113
113
  * userId: "user_123",
@@ -64,7 +64,7 @@ export interface RedisAdapterOptions {
64
64
  *
65
65
  * const agent = new Agent({
66
66
  * name: "My Agent",
67
- * ai: provider,
67
+ * provider: provider,
68
68
  * persistence: {
69
69
  * adapter: new RedisAdapter({ redis }),
70
70
  * userId: "user_123",
@@ -60,7 +60,7 @@ export interface SQLiteAdapterOptions {
60
60
  *
61
61
  * const agent = new Agent({
62
62
  * name: "My Agent",
63
- * ai: provider,
63
+ * provider: provider,
64
64
  * persistence: {
65
65
  * adapter: new SQLiteAdapter({ db }),
66
66
  * userId: "user_123",
package/src/core/Agent.ts CHANGED
@@ -412,7 +412,7 @@ export class Agent<TContext = unknown> {
412
412
  description: this.options.description,
413
413
  personality: this.options.personality,
414
414
  },
415
- ai: this.options.ai,
415
+ provider: this.options.provider,
416
416
  context: effectiveContext,
417
417
  signal,
418
418
  });
@@ -491,7 +491,7 @@ export class Agent<TContext = unknown> {
491
491
  );
492
492
 
493
493
  // Generate message stream using AI provider
494
- const stream = this.options.ai.generateMessageStream({
494
+ const stream = this.options.provider.generateMessageStream({
495
495
  prompt: responsePrompt,
496
496
  history,
497
497
  context: effectiveContext,
@@ -612,7 +612,7 @@ export class Agent<TContext = unknown> {
612
612
  );
613
613
 
614
614
  // Stream completion message using AI provider
615
- const stream = this.options.ai.generateMessageStream({
615
+ const stream = this.options.provider.generateMessageStream({
616
616
  prompt: completionPrompt,
617
617
  history,
618
618
  context: effectiveContext,
@@ -698,7 +698,7 @@ export class Agent<TContext = unknown> {
698
698
  .addCapabilities(this.capabilities)
699
699
  .build();
700
700
 
701
- const stream = this.options.ai.generateMessageStream({
701
+ const stream = this.options.provider.generateMessageStream({
702
702
  prompt: fallbackPrompt,
703
703
  history,
704
704
  context: effectiveContext,
@@ -872,7 +872,7 @@ export class Agent<TContext = unknown> {
872
872
  description: this.options.description,
873
873
  personality: this.options.personality,
874
874
  },
875
- ai: this.options.ai,
875
+ provider: this.options.provider,
876
876
  context: effectiveContext,
877
877
  signal,
878
878
  });
@@ -956,7 +956,7 @@ export class Agent<TContext = unknown> {
956
956
  );
957
957
 
958
958
  // Generate message using AI provider
959
- const result = await this.options.ai.generateMessage({
959
+ const result = await this.options.provider.generateMessage({
960
960
  prompt: responsePrompt,
961
961
  history,
962
962
  context: effectiveContext,
@@ -1044,7 +1044,7 @@ export class Agent<TContext = unknown> {
1044
1044
  );
1045
1045
 
1046
1046
  // Generate completion message using AI provider
1047
- const completionResult = await this.options.ai.generateMessage({
1047
+ const completionResult = await this.options.provider.generateMessage({
1048
1048
  prompt: completionPrompt,
1049
1049
  history,
1050
1050
  context: effectiveContext,
@@ -1115,7 +1115,7 @@ export class Agent<TContext = unknown> {
1115
1115
  .addCapabilities(this.capabilities)
1116
1116
  .build();
1117
1117
 
1118
- const result = await this.options.ai.generateMessage({
1118
+ const result = await this.options.provider.generateMessage({
1119
1119
  prompt: fallbackPrompt,
1120
1120
  history,
1121
1121
  context: effectiveContext,
@@ -50,7 +50,7 @@ export class RoutingEngine<TContext = unknown> {
50
50
  description?: string;
51
51
  personality?: string;
52
52
  };
53
- ai: AiProvider;
53
+ provider: AiProvider;
54
54
  context: TContext;
55
55
  signal?: AbortSignal;
56
56
  }): Promise<{
@@ -60,7 +60,8 @@ export class RoutingEngine<TContext = unknown> {
60
60
  session: SessionStep;
61
61
  isRouteComplete?: boolean;
62
62
  }> {
63
- const { route, session, history, agentMeta, ai, context, signal } = params;
63
+ const { route, session, history, agentMeta, provider, context, signal } =
64
+ params;
64
65
 
65
66
  let updatedSession = session;
66
67
  const selectedRoute = route;
@@ -138,7 +139,7 @@ export class RoutingEngine<TContext = unknown> {
138
139
  candidates.map((c) => c.step.id)
139
140
  );
140
141
 
141
- const stepResult = await ai.generateMessage<
142
+ const stepResult = await provider.generateMessage<
142
143
  TContext,
143
144
  {
144
145
  reasoning: string;
@@ -411,7 +412,7 @@ export class RoutingEngine<TContext = unknown> {
411
412
  description?: string;
412
413
  personality?: string;
413
414
  };
414
- ai: AiProvider;
415
+ provider: AiProvider;
415
416
  context: TContext;
416
417
  signal?: AbortSignal;
417
418
  }): Promise<{
@@ -421,7 +422,8 @@ export class RoutingEngine<TContext = unknown> {
421
422
  session: SessionStep;
422
423
  isRouteComplete?: boolean;
423
424
  }> {
424
- const { routes, session, history, agentMeta, ai, context, signal } = params;
425
+ const { routes, session, history, agentMeta, provider, context, signal } =
426
+ params;
425
427
 
426
428
  if (routes.length === 0) {
427
429
  return { session };
@@ -434,7 +436,7 @@ export class RoutingEngine<TContext = unknown> {
434
436
  session,
435
437
  history,
436
438
  agentMeta,
437
- ai,
439
+ provider,
438
440
  context,
439
441
  signal,
440
442
  });
@@ -504,7 +506,7 @@ export class RoutingEngine<TContext = unknown> {
504
506
  activeRouteSteps
505
507
  );
506
508
 
507
- const routingResult = await ai.generateMessage<
509
+ const routingResult = await provider.generateMessage<
508
510
  TContext,
509
511
  RoutingDecisionOutput
510
512
  >({
@@ -86,7 +86,7 @@ export interface AgentOptions<TContext = unknown> {
86
86
  /** Lifecycle hooks for context management */
87
87
  hooks?: ContextLifecycleHooks<TContext>;
88
88
  /** AI provider strategy for generating responses */
89
- ai: AiProvider;
89
+ provider: AiProvider;
90
90
  /** Composition mode for response generation */
91
91
  compositionMode?: CompositionMode;
92
92
  /** Initial terms for domain glossary */