@falai/agent 0.6.9 → 0.7.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 (231) hide show
  1. package/README.md +62 -59
  2. package/dist/adapters/MemoryAdapter.js +2 -2
  3. package/dist/adapters/MemoryAdapter.js.map +1 -1
  4. package/dist/adapters/MongoAdapter.js +2 -2
  5. package/dist/adapters/MongoAdapter.js.map +1 -1
  6. package/dist/adapters/OpenSearchAdapter.js +7 -7
  7. package/dist/adapters/OpenSearchAdapter.js.map +1 -1
  8. package/dist/adapters/PostgreSQLAdapter.js +9 -9
  9. package/dist/adapters/PostgreSQLAdapter.js.map +1 -1
  10. package/dist/adapters/PrismaAdapter.js +3 -3
  11. package/dist/adapters/PrismaAdapter.js.map +1 -1
  12. package/dist/adapters/RedisAdapter.js +2 -2
  13. package/dist/adapters/RedisAdapter.js.map +1 -1
  14. package/dist/adapters/SQLiteAdapter.d.ts +3 -3
  15. package/dist/adapters/SQLiteAdapter.d.ts.map +1 -1
  16. package/dist/adapters/SQLiteAdapter.js +11 -11
  17. package/dist/adapters/SQLiteAdapter.js.map +1 -1
  18. package/dist/adapters/index.d.ts +1 -1
  19. package/dist/adapters/index.d.ts.map +1 -1
  20. package/dist/cjs/adapters/MemoryAdapter.js +2 -2
  21. package/dist/cjs/adapters/MemoryAdapter.js.map +1 -1
  22. package/dist/cjs/adapters/MongoAdapter.js +2 -2
  23. package/dist/cjs/adapters/MongoAdapter.js.map +1 -1
  24. package/dist/cjs/adapters/OpenSearchAdapter.js +7 -7
  25. package/dist/cjs/adapters/OpenSearchAdapter.js.map +1 -1
  26. package/dist/cjs/adapters/PostgreSQLAdapter.js +9 -9
  27. package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -1
  28. package/dist/cjs/adapters/PrismaAdapter.js +3 -3
  29. package/dist/cjs/adapters/PrismaAdapter.js.map +1 -1
  30. package/dist/cjs/adapters/RedisAdapter.js +2 -2
  31. package/dist/cjs/adapters/RedisAdapter.js.map +1 -1
  32. package/dist/cjs/adapters/SQLiteAdapter.d.ts +3 -3
  33. package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +1 -1
  34. package/dist/cjs/adapters/SQLiteAdapter.js +11 -11
  35. package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -1
  36. package/dist/cjs/adapters/index.d.ts +1 -1
  37. package/dist/cjs/adapters/index.d.ts.map +1 -1
  38. package/dist/cjs/constants/index.d.ts +4 -4
  39. package/dist/cjs/constants/index.js +5 -5
  40. package/dist/cjs/core/Agent.d.ts +22 -22
  41. package/dist/cjs/core/Agent.d.ts.map +1 -1
  42. package/dist/cjs/core/Agent.js +160 -152
  43. package/dist/cjs/core/Agent.js.map +1 -1
  44. package/dist/cjs/core/Events.d.ts +6 -6
  45. package/dist/cjs/core/Events.d.ts.map +1 -1
  46. package/dist/cjs/core/PersistenceManager.d.ts +13 -13
  47. package/dist/cjs/core/PersistenceManager.d.ts.map +1 -1
  48. package/dist/cjs/core/PersistenceManager.js +24 -24
  49. package/dist/cjs/core/PersistenceManager.js.map +1 -1
  50. package/dist/cjs/core/ResponseEngine.d.ts +3 -8
  51. package/dist/cjs/core/ResponseEngine.d.ts.map +1 -1
  52. package/dist/cjs/core/ResponseEngine.js +8 -8
  53. package/dist/cjs/core/ResponseEngine.js.map +1 -1
  54. package/dist/cjs/core/Route.d.ts +17 -17
  55. package/dist/cjs/core/Route.d.ts.map +1 -1
  56. package/dist/cjs/core/Route.js +33 -33
  57. package/dist/cjs/core/Route.js.map +1 -1
  58. package/dist/cjs/core/RoutingEngine.d.ts +30 -30
  59. package/dist/cjs/core/RoutingEngine.d.ts.map +1 -1
  60. package/dist/cjs/core/RoutingEngine.js +192 -192
  61. package/dist/cjs/core/RoutingEngine.js.map +1 -1
  62. package/dist/cjs/core/Step.d.ts +72 -0
  63. package/dist/cjs/core/Step.d.ts.map +1 -0
  64. package/dist/cjs/core/Step.js +150 -0
  65. package/dist/cjs/core/Step.js.map +1 -0
  66. package/dist/cjs/core/ToolExecutor.d.ts +5 -5
  67. package/dist/cjs/core/ToolExecutor.d.ts.map +1 -1
  68. package/dist/cjs/core/ToolExecutor.js +8 -8
  69. package/dist/cjs/core/ToolExecutor.js.map +1 -1
  70. package/dist/cjs/core/Transition.d.ts +14 -14
  71. package/dist/cjs/core/Transition.d.ts.map +1 -1
  72. package/dist/cjs/core/Transition.js +48 -19
  73. package/dist/cjs/core/Transition.js.map +1 -1
  74. package/dist/cjs/index.d.ts +7 -7
  75. package/dist/cjs/index.d.ts.map +1 -1
  76. package/dist/cjs/index.js +8 -8
  77. package/dist/cjs/index.js.map +1 -1
  78. package/dist/cjs/types/agent.d.ts +8 -8
  79. package/dist/cjs/types/agent.d.ts.map +1 -1
  80. package/dist/cjs/types/ai.d.ts +2 -2
  81. package/dist/cjs/types/ai.d.ts.map +1 -1
  82. package/dist/cjs/types/history.d.ts +3 -3
  83. package/dist/cjs/types/history.d.ts.map +1 -1
  84. package/dist/cjs/types/index.d.ts +1 -1
  85. package/dist/cjs/types/index.d.ts.map +1 -1
  86. package/dist/cjs/types/persistence.d.ts +5 -5
  87. package/dist/cjs/types/persistence.d.ts.map +1 -1
  88. package/dist/cjs/types/route.d.ts +57 -52
  89. package/dist/cjs/types/route.d.ts.map +1 -1
  90. package/dist/cjs/types/session.d.ts +27 -27
  91. package/dist/cjs/types/session.d.ts.map +1 -1
  92. package/dist/cjs/types/session.js +48 -50
  93. package/dist/cjs/types/session.js.map +1 -1
  94. package/dist/cjs/types/tool.d.ts +13 -13
  95. package/dist/cjs/types/tool.d.ts.map +1 -1
  96. package/dist/cjs/utils/id.d.ts +8 -3
  97. package/dist/cjs/utils/id.d.ts.map +1 -1
  98. package/dist/cjs/utils/id.js +16 -7
  99. package/dist/cjs/utils/id.js.map +1 -1
  100. package/dist/constants/index.d.ts +4 -4
  101. package/dist/constants/index.js +4 -4
  102. package/dist/core/Agent.d.ts +22 -22
  103. package/dist/core/Agent.d.ts.map +1 -1
  104. package/dist/core/Agent.js +162 -154
  105. package/dist/core/Agent.js.map +1 -1
  106. package/dist/core/Events.d.ts +6 -6
  107. package/dist/core/Events.d.ts.map +1 -1
  108. package/dist/core/PersistenceManager.d.ts +13 -13
  109. package/dist/core/PersistenceManager.d.ts.map +1 -1
  110. package/dist/core/PersistenceManager.js +25 -25
  111. package/dist/core/PersistenceManager.js.map +1 -1
  112. package/dist/core/ResponseEngine.d.ts +3 -8
  113. package/dist/core/ResponseEngine.d.ts.map +1 -1
  114. package/dist/core/ResponseEngine.js +8 -8
  115. package/dist/core/ResponseEngine.js.map +1 -1
  116. package/dist/core/Route.d.ts +17 -17
  117. package/dist/core/Route.d.ts.map +1 -1
  118. package/dist/core/Route.js +33 -33
  119. package/dist/core/Route.js.map +1 -1
  120. package/dist/core/RoutingEngine.d.ts +30 -30
  121. package/dist/core/RoutingEngine.d.ts.map +1 -1
  122. package/dist/core/RoutingEngine.js +193 -193
  123. package/dist/core/RoutingEngine.js.map +1 -1
  124. package/dist/core/Step.d.ts +72 -0
  125. package/dist/core/Step.d.ts.map +1 -0
  126. package/dist/core/Step.js +146 -0
  127. package/dist/core/Step.js.map +1 -0
  128. package/dist/core/ToolExecutor.d.ts +5 -5
  129. package/dist/core/ToolExecutor.d.ts.map +1 -1
  130. package/dist/core/ToolExecutor.js +8 -8
  131. package/dist/core/ToolExecutor.js.map +1 -1
  132. package/dist/core/Transition.d.ts +14 -14
  133. package/dist/core/Transition.d.ts.map +1 -1
  134. package/dist/core/Transition.js +48 -19
  135. package/dist/core/Transition.js.map +1 -1
  136. package/dist/index.d.ts +7 -7
  137. package/dist/index.d.ts.map +1 -1
  138. package/dist/index.js +4 -4
  139. package/dist/index.js.map +1 -1
  140. package/dist/types/agent.d.ts +8 -8
  141. package/dist/types/agent.d.ts.map +1 -1
  142. package/dist/types/ai.d.ts +2 -2
  143. package/dist/types/ai.d.ts.map +1 -1
  144. package/dist/types/history.d.ts +3 -3
  145. package/dist/types/history.d.ts.map +1 -1
  146. package/dist/types/index.d.ts +1 -1
  147. package/dist/types/index.d.ts.map +1 -1
  148. package/dist/types/persistence.d.ts +5 -5
  149. package/dist/types/persistence.d.ts.map +1 -1
  150. package/dist/types/route.d.ts +57 -52
  151. package/dist/types/route.d.ts.map +1 -1
  152. package/dist/types/session.d.ts +27 -27
  153. package/dist/types/session.d.ts.map +1 -1
  154. package/dist/types/session.js +44 -46
  155. package/dist/types/session.js.map +1 -1
  156. package/dist/types/tool.d.ts +13 -13
  157. package/dist/types/tool.d.ts.map +1 -1
  158. package/dist/utils/id.d.ts +8 -3
  159. package/dist/utils/id.d.ts.map +1 -1
  160. package/dist/utils/id.js +14 -6
  161. package/dist/utils/id.js.map +1 -1
  162. package/docs/ADAPTERS.md +21 -21
  163. package/docs/AGENT.md +57 -55
  164. package/docs/API_REFERENCE.md +218 -220
  165. package/docs/ARCHITECTURE.md +99 -104
  166. package/docs/CONTEXT_MANAGEMENT.md +81 -88
  167. package/docs/DOCS.md +18 -18
  168. package/docs/DOMAINS.md +16 -16
  169. package/docs/EXAMPLES.md +43 -43
  170. package/docs/GETTING_STARTED.md +60 -63
  171. package/docs/PERSISTENCE.md +66 -70
  172. package/docs/PROVIDERS.md +2 -2
  173. package/docs/README.md +6 -6
  174. package/docs/ROUTES.md +218 -220
  175. package/docs/STEPS.md +883 -0
  176. package/examples/business-onboarding.ts +84 -81
  177. package/examples/company-qna-agent.ts +68 -67
  178. package/examples/custom-database-persistence.ts +87 -89
  179. package/examples/declarative-agent.ts +32 -32
  180. package/examples/domain-scoping.ts +18 -18
  181. package/examples/extracted-data-modification.ts +92 -97
  182. package/examples/healthcare-agent.ts +89 -91
  183. package/examples/openai-agent.ts +29 -32
  184. package/examples/opensearch-persistence.ts +43 -45
  185. package/examples/persistent-onboarding.ts +65 -66
  186. package/examples/prisma-persistence.ts +108 -112
  187. package/examples/prisma-schema.example.prisma +3 -3
  188. package/examples/redis-persistence.ts +67 -73
  189. package/examples/route-transitions.ts +71 -47
  190. package/examples/rules-prohibitions.ts +28 -28
  191. package/examples/streaming-agent.ts +24 -24
  192. package/examples/travel-agent.ts +94 -109
  193. package/package.json +1 -1
  194. package/src/adapters/MemoryAdapter.ts +3 -3
  195. package/src/adapters/MongoAdapter.ts +3 -3
  196. package/src/adapters/OpenSearchAdapter.ts +8 -8
  197. package/src/adapters/PostgreSQLAdapter.ts +10 -10
  198. package/src/adapters/PrismaAdapter.ts +4 -4
  199. package/src/adapters/RedisAdapter.ts +3 -3
  200. package/src/adapters/SQLiteAdapter.ts +15 -15
  201. package/src/adapters/index.ts +1 -1
  202. package/src/constants/index.ts +4 -4
  203. package/src/core/Agent.ts +210 -206
  204. package/src/core/Events.ts +12 -12
  205. package/src/core/PersistenceManager.ts +32 -36
  206. package/src/core/ResponseEngine.ts +11 -17
  207. package/src/core/Route.ts +55 -49
  208. package/src/core/RoutingEngine.ts +244 -252
  209. package/src/core/Step.ts +197 -0
  210. package/src/core/ToolExecutor.ts +11 -11
  211. package/src/core/Transition.ts +72 -26
  212. package/src/index.ts +8 -8
  213. package/src/types/agent.ts +8 -8
  214. package/src/types/ai.ts +2 -2
  215. package/src/types/history.ts +3 -3
  216. package/src/types/index.ts +1 -1
  217. package/src/types/persistence.ts +6 -6
  218. package/src/types/route.ts +77 -61
  219. package/src/types/session.ts +75 -78
  220. package/src/types/tool.ts +17 -17
  221. package/src/utils/id.ts +15 -6
  222. package/dist/cjs/core/State.d.ts +0 -72
  223. package/dist/cjs/core/State.d.ts.map +0 -1
  224. package/dist/cjs/core/State.js +0 -148
  225. package/dist/cjs/core/State.js.map +0 -1
  226. package/dist/core/State.d.ts +0 -72
  227. package/dist/core/State.d.ts.map +0 -1
  228. package/dist/core/State.js +0 -144
  229. package/dist/core/State.js.map +0 -1
  230. package/docs/STATES.md +0 -888
  231. package/src/core/State.ts +0 -212
package/docs/AGENT.md CHANGED
@@ -25,7 +25,7 @@ interface AgentOptions<TContext = unknown> {
25
25
  context?: TContext;
26
26
 
27
27
  // Optional current session for convenience methods
28
- session?: SessionState;
28
+ session?: SessionStep;
29
29
 
30
30
  // Context provider for always-fresh context
31
31
  contextProvider?: () => Promise<TContext> | TContext;
@@ -40,9 +40,9 @@ interface AgentOptions<TContext = unknown> {
40
40
  newContext: TContext,
41
41
  previousContext: TContext
42
42
  ) => Promise<void> | void;
43
- onExtractedUpdate?: (
44
- extracted: Record<string, unknown>,
45
- previousExtracted: Record<string, unknown>
43
+ onDataUpdate?: (
44
+ data: Record<string, unknown>,
45
+ previousData: Record<string, unknown>
46
46
  ) => Promise<Record<string, unknown>> | Record<string, unknown>;
47
47
  };
48
48
 
@@ -54,7 +54,7 @@ interface AgentOptions<TContext = unknown> {
54
54
  }
55
55
  ```
56
56
 
57
- ### Example: Data-Driven Agent with Session State
57
+ ### Example: Data-Driven Agent with Session Step
58
58
 
59
59
  ```typescript
60
60
  // Define your data extraction types
@@ -66,20 +66,20 @@ interface FlightData {
66
66
  }
67
67
 
68
68
  const agent = new Agent<FlightBookingContext>({
69
- name: 'FlightBot',
70
- description: 'Helpful flight booking assistant',
71
- goal: 'Book flights efficiently',
72
- ai: new GeminiProvider({ apiKey: '...', model: '...' }),
69
+ name: "FlightBot",
70
+ description: "Helpful flight booking assistant",
71
+ goal: "Book flights efficiently",
72
+ ai: new GeminiProvider({ apiKey: "...", model: "..." }),
73
73
 
74
74
  // Static context
75
75
  context: {
76
- userId: '123',
76
+ userId: "123",
77
77
  availableFlights: [],
78
78
  },
79
79
 
80
80
  // Optional: Set initial session for convenience methods
81
81
  session: createSession<FlightData>({
82
- extracted: { destination: 'Paris' }, // Pre-populate with known data
82
+ data: { destination: "Paris" }, // Pre-populate with known data
83
83
  }),
84
84
 
85
85
  // Enhanced lifecycle hooks
@@ -90,40 +90,40 @@ const agent = new Agent<FlightBookingContext>({
90
90
  return { ...ctx, userCredits: freshUser.credits };
91
91
  },
92
92
 
93
- // Validate and enrich extracted data
94
- onExtractedUpdate: async (extracted, previous) => {
93
+ // Validate and enrich collected data
94
+ onDataUpdate: async (data, previous) => {
95
95
  // Normalize passenger count
96
- if (extracted.passengers < 1) extracted.passengers = 1;
97
- if (extracted.passengers > 9) extracted.passengers = 9;
96
+ if (data.passengers < 1) data.passengers = 1;
97
+ if (data.passengers > 9) data.passengers = 9;
98
98
 
99
99
  // Auto-trigger flight search when we have enough data
100
- if (extracted.destination && extracted.departureDate && extracted.passengers) {
101
- extracted.shouldSearchFlights = true;
100
+ if (data.destination && data.departureDate && data.passengers) {
101
+ data.shouldSearchFlights = true;
102
102
  }
103
103
 
104
- return extracted;
104
+ return data;
105
105
  },
106
106
  },
107
107
 
108
108
  // Declarative routes with data extraction
109
109
  routes: [
110
110
  {
111
- title: 'Book Flight',
112
- description: 'Help user book a flight',
113
- conditions: ['User wants to book a flight'],
114
- extractionSchema: {
115
- type: 'object',
111
+ title: "Book Flight",
112
+ description: "Help user book a flight",
113
+ conditions: ["User wants to book a flight"],
114
+ schema: {
115
+ type: "object",
116
116
  properties: {
117
- destination: { type: 'string' },
118
- departureDate: { type: 'string' },
119
- passengers: { type: 'number', minimum: 1, maximum: 9 },
117
+ destination: { type: "string" },
118
+ departureDate: { type: "string" },
119
+ passengers: { type: "number", minimum: 1, maximum: 9 },
120
120
  cabinClass: {
121
- type: 'string',
122
- enum: ['economy', 'business', 'first'],
123
- default: 'economy',
121
+ type: "string",
122
+ enum: ["economy", "business", "first"],
123
+ default: "economy",
124
124
  },
125
125
  },
126
- required: ['destination', 'departureDate', 'passengers'],
126
+ required: ["destination", "departureDate", "passengers"],
127
127
  },
128
128
  },
129
129
  ],
@@ -131,44 +131,46 @@ const agent = new Agent<FlightBookingContext>({
131
131
  // Domain glossary
132
132
  terms: [
133
133
  {
134
- name: 'Premium Plan',
135
- description: 'Our top-tier subscription at $99/month',
136
- synonyms: ['pro plan', 'premium subscription'],
134
+ name: "Premium Plan",
135
+ description: "Our top-tier subscription at $99/month",
136
+ synonyms: ["pro plan", "premium subscription"],
137
137
  },
138
138
  ],
139
139
 
140
140
  // Behavioral guidelines
141
141
  guidelines: [
142
142
  {
143
- action: 'Always be polite and professional',
143
+ action: "Always be polite and professional",
144
144
  enabled: true,
145
145
  },
146
146
  {
147
- condition: 'User seems frustrated',
148
- action: 'Apologize sincerely and offer to escalate to human support',
147
+ condition: "User seems frustrated",
148
+ action: "Apologize sincerely and offer to escalate to human support",
149
149
  enabled: true,
150
150
  },
151
151
  ],
152
152
 
153
153
  capabilities: [
154
- { title: 'Ticket Management', description: 'Create and track tickets' },
154
+ { title: "Ticket Management", description: "Create and track tickets" },
155
155
  ],
156
156
  });
157
157
 
158
158
  // Option 1: Use session passed to respond (traditional)
159
159
  let session = createSession<FlightData>();
160
160
  const response = await agent.respond({ history, session });
161
- console.log(response.session?.extracted); // Extracted flight data
161
+ console.log(response.session?.data); // Data flight data
162
162
 
163
163
  // Option 2: Use session set in constructor (convenience methods)
164
164
  // Since we set session in constructor, no need to pass it!
165
165
  const response2 = await agent.respond({ history });
166
- console.log(agent.getExtractedData()); // Uses constructor session
166
+ console.log(agent.getData()); // Uses constructor session
167
167
 
168
168
  // Option 3: Override session for specific calls
169
- const customSession = createSession<FlightData>({ extracted: { destination: 'Tokyo' } });
169
+ const customSession = createSession<FlightData>({
170
+ data: { destination: "Tokyo" },
171
+ });
170
172
  const response3 = await agent.respond({ history, session: customSession });
171
- console.log(response3.session?.extracted); // Uses custom session
173
+ console.log(response3.session?.data); // Uses custom session
172
174
  ```
173
175
 
174
176
  ````
@@ -177,7 +179,7 @@ console.log(response3.session?.extracted); // Uses custom session
177
179
 
178
180
  ## 💾 Session Management
179
181
 
180
- The agent supports flexible session management for conversation state tracking:
182
+ The agent supports flexible session management for conversation step tracking:
181
183
 
182
184
  ### Constructor Session (Optional)
183
185
 
@@ -188,13 +190,13 @@ const agent = new Agent({
188
190
  name: 'Bot',
189
191
  ai: provider,
190
192
  session: createSession<MyData>({
191
- extracted: { name: 'John' }, // Pre-populate data
193
+ data: { name: 'John' }, // Pre-populate data
192
194
  }),
193
195
  });
194
196
 
195
197
  // Use convenience methods without passing session
196
198
  const response = await agent.respond({ history });
197
- const data = agent.getExtractedData(); // Uses constructor session
199
+ const data = agent.getData(); // Uses constructor session
198
200
  ```
199
201
 
200
202
  ### Runtime Session Management
@@ -204,8 +206,8 @@ const data = agent.getExtractedData(); // Uses constructor session
204
206
  agent.setCurrentSession(session);
205
207
 
206
208
  // Use without passing session parameter
207
- const extracted = agent.getExtractedData();
208
- const routeData = agent.getExtractedData('onboarding');
209
+ const data = agent.getData();
210
+ const routeData = agent.getData('onboarding');
209
211
 
210
212
  // Override for specific calls
211
213
  const response = await agent.respond({ history, session: customSession });
@@ -216,15 +218,15 @@ agent.clearCurrentSession();
216
218
 
217
219
  ### Session Preservation
218
220
 
219
- When switching routes, extracted data is preserved in `extractedByRoute`:
221
+ When switching routes, collected data is preserved in `dataByRoute`:
220
222
 
221
223
  ```typescript
222
224
  // User switches from onboarding to booking
223
225
  const response = await agent.respond({ history }); // Switches routes
224
226
 
225
227
  // Access data from previous routes
226
- const onboardingData = agent.getExtractedData('onboarding');
227
- const bookingData = agent.getExtractedData('booking');
228
+ const onboardingData = agent.getData('onboarding');
229
+ const bookingData = agent.getData('booking');
228
230
  ```
229
231
 
230
232
  ---
@@ -232,7 +234,7 @@ const bookingData = agent.getExtractedData('booking');
232
234
  ## 🛤️ Route Agent
233
235
 
234
236
  ```typescript
235
- interface RouteOptions<TExtracted = unknown> {
237
+ interface RouteOptions<TData = unknown> {
236
238
  // Required
237
239
  title: string;
238
240
 
@@ -246,15 +248,15 @@ interface RouteOptions<TExtracted = unknown> {
246
248
  prohibitions?: string[]; // Absolute prohibitions the agent MUST NEVER do
247
249
 
248
250
  // NEW: Schema-first data extraction
249
- extractionSchema?: {
251
+ schema?: {
250
252
  type: "object";
251
253
  properties: Record<string, any>;
252
254
  required?: string[];
253
255
  additionalProperties?: boolean;
254
256
  };
255
257
 
256
- // NEW: Pre-populate extracted data when entering route
257
- initialData?: Partial<TExtracted>;
258
+ // NEW: Pre-populate collected data when entering route
259
+ initialData?: Partial<TData>;
258
260
  }
259
261
  ````
260
262
 
@@ -472,7 +474,7 @@ route.createGuideline({ condition: "...", action: "..." });
472
474
  ### Use Fluent When:
473
475
 
474
476
  - ✅ Logic is **dynamic** or **conditional**
475
- - ✅ Building routes with **complex state machines**
477
+ - ✅ Building routes with **complex step machines**
476
478
  - ✅ Adding features **based on runtime conditions**
477
479
  - ✅ You prefer **step-by-step construction**
478
480
 
@@ -520,7 +522,7 @@ const agent = new Agent<MyContext>({
520
522
  goal?: string,
521
523
  ai: AiProvider,
522
524
  context?: MyContext,
523
- session?: SessionState, // Optional current session
525
+ session?: SessionStep, // Optional current session
524
526
  maxEngineIterations?: number,
525
527
  compositionMode?: CompositionMode,
526
528
  terms?: Term[],