@falai/agent 0.6.8 → 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
@@ -1,10 +1,10 @@
1
1
  /**
2
- * Example: Company Q&A Agent (Stateless, Knowledge-Based)
2
+ * Example: Company Q&A Agent (Stepless, Knowledge-Based)
3
3
  *
4
4
  * This demonstrates:
5
- * 1. Schema-first architecture for stateless Q&A routes (no extractionSchema)
5
+ * 1. Schema-first architecture for stepless Q&A routes (no schema)
6
6
  * 2. Tools for context enrichment (not data extraction)
7
- * 3. Session state management even for stateless conversations
7
+ * 3. Session step management even for stepless conversations
8
8
  * 4. Always-on routing with context awareness
9
9
  * 5. Three-phase pipeline: PREPARATION → ROUTING → RESPONSE
10
10
  */
@@ -15,7 +15,7 @@ import {
15
15
  EventSource,
16
16
  createMessageEvent,
17
17
  EventKind,
18
- END_STATE,
18
+ END_ROUTE,
19
19
  OpenAIProvider,
20
20
  } from "../src";
21
21
  import type { Event } from "../src/types";
@@ -231,10 +231,10 @@ const agent = new Agent<CompanyContext>({
231
231
  });
232
232
 
233
233
  // ==============================================================================
234
- // ROUTES: STATELESS Q&A ROUTES (Schema-First Architecture)
234
+ // ROUTES: STEPLESS Q&A ROUTES (Schema-First Architecture)
235
235
  // ==============================================================================
236
236
 
237
- // Route 1: Company Information (stateless - no data extraction)
237
+ // Route 1: Company Information (stepless - no data extraction)
238
238
  const companyInfoRoute = agent.createRoute({
239
239
  title: "Company Information",
240
240
  description: "Answer general questions about Acme Corp",
@@ -245,13 +245,13 @@ const companyInfoRoute = agent.createRoute({
245
245
  "How many employees",
246
246
  "Where is the headquarters",
247
247
  ],
248
- // NO extractionSchema - stateless Q&A route
249
- // Just use initial state with chatState for response generation
248
+ // NO schema - stepless Q&A route
249
+ // Just use initial step with instructions for response generation
250
250
  });
251
251
 
252
- // Initial state: Answer from knowledge base (no data gathering needed)
252
+ // Initial step: Answer from knowledge base (no data collecting needed)
253
253
 
254
- // Route 2: Product Information (stateless)
254
+ // Route 2: Product Information (stepless)
255
255
  const productInfoRoute = agent.createRoute({
256
256
  title: "Product Information",
257
257
  description: "Answer questions about products",
@@ -261,12 +261,12 @@ const productInfoRoute = agent.createRoute({
261
261
  "What products do you offer",
262
262
  "Tell me about your widgets",
263
263
  ],
264
- // NO extractionSchema - just answering questions
264
+ // NO schema - just answering questions
265
265
  });
266
266
 
267
- // Initial state is enough - no transitions needed for simple Q&A
267
+ // Initial step is enough - no transitions needed for simple Q&A
268
268
 
269
- // Route 3: Policy Questions (stateless)
269
+ // Route 3: Policy Questions (stepless)
270
270
  const policyRoute = agent.createRoute({
271
271
  title: "Policy Information",
272
272
  description: "Answer questions about company policies",
@@ -276,12 +276,12 @@ const policyRoute = agent.createRoute({
276
276
  "Shipping information",
277
277
  "Warranty questions",
278
278
  ],
279
- // NO extractionSchema
279
+ // NO schema
280
280
  });
281
281
 
282
- // Initial state is enough - no extra setup needed
282
+ // Initial step is enough - no extra setup needed
283
283
 
284
- // Route 4: News & Updates (uses tool, but still stateless)
284
+ // Route 4: News & Updates (uses tool, but still stepless)
285
285
  const newsRoute = agent.createRoute({
286
286
  title: "Company News",
287
287
  description: "Share latest company news and updates",
@@ -293,13 +293,13 @@ const newsRoute = agent.createRoute({
293
293
  ],
294
294
  });
295
295
 
296
- // Add tool to initial state to fetch news
297
- const fetchNews = newsRoute.initialState.transitionTo({
298
- toolState: fetchNewsTool,
296
+ // Add tool to initial step to fetch news
297
+ const fetchNews = newsRoute.initialStep.nextStep({
298
+ tool: fetchNewsTool,
299
299
  });
300
300
 
301
- const shareNews = fetchNews.transitionTo({
302
- chatState: "Share the latest company news from context",
301
+ const shareNews = fetchNews.nextStep({
302
+ instructions: "Share the latest company news from context",
303
303
  });
304
304
 
305
305
  // Route 5: General FAQ Search (uses tool)
@@ -314,12 +314,12 @@ const faqRoute = agent.createRoute({
314
314
  ],
315
315
  });
316
316
 
317
- const searchFaqs = faqRoute.initialState.transitionTo({
318
- toolState: searchKnowledgeTool,
317
+ const searchFaqs = faqRoute.initialStep.nextStep({
318
+ tool: searchKnowledgeTool,
319
319
  });
320
320
 
321
- const provideFaqAnswer = searchFaqs.transitionTo({
322
- chatState: "Provide answer based on FAQ search results",
321
+ const provideFaqAnswer = searchFaqs.nextStep({
322
+ instructions: "Provide answer based on FAQ search results",
323
323
  });
324
324
 
325
325
  // Route 6: Fallback (generic response)
@@ -334,14 +334,14 @@ const fallbackRoute = agent.createRoute({
334
334
  ],
335
335
  });
336
336
 
337
- // Initial state is enough for fallback conversations
337
+ // Initial step is enough for fallback conversations
338
338
 
339
- // Route 7: Collect Feedback (Stateful Example)
339
+ // Route 7: Collect Feedback (Stepful Example)
340
340
  const feedbackRoute = agent.createRoute<FeedbackData>({
341
341
  title: "Collect Feedback",
342
342
  description: "Collect user feedback about their experience",
343
343
  conditions: ["User wants to leave feedback", "User seems satisfied or upset"],
344
- extractionSchema: {
344
+ schema: {
345
345
  type: "object",
346
346
  properties: {
347
347
  rating: {
@@ -358,33 +358,34 @@ const feedbackRoute = agent.createRoute<FeedbackData>({
358
358
  },
359
359
  required: ["rating", "comments"],
360
360
  },
361
- endState: {
362
- chatState: "Thank the user warmly for their valuable feedback and let them know we appreciate their time",
361
+ endStep: {
362
+ instructions:
363
+ "Thank the user warmly for their valuable feedback and let them know we appreciate their time",
363
364
  },
364
365
  });
365
366
 
366
- feedbackRoute.initialState
367
- .transitionTo({
367
+ feedbackRoute.initialStep
368
+ .nextStep({
368
369
  id: "ask_rating",
369
- chatState:
370
+ instructions:
370
371
  "I'd love to hear your feedback. On a scale of 1 to 5, how would you rate your experience with me today?",
371
- gather: ["rating"],
372
+ collect: ["rating"],
372
373
  })
373
- .transitionTo({
374
+ .nextStep({
374
375
  id: "ask_comments",
375
- chatState:
376
+ instructions:
376
377
  "Thanks for the rating! Do you have any specific comments or suggestions?",
377
- gather: ["comments"],
378
- requiredData: ["rating"],
378
+ collect: ["comments"],
379
+ requires: ["rating"],
379
380
  })
380
- .transitionTo({
381
+ .nextStep({
381
382
  id: "ask_permission",
382
- chatState:
383
+ instructions:
383
384
  "Thank you for the detailed feedback. Would it be okay if our team contacted you for more details?",
384
- gather: ["contactPermission"],
385
- requiredData: ["comments"],
385
+ collect: ["contactPermission"],
386
+ requires: ["comments"],
386
387
  })
387
- .transitionTo({ state: END_STATE }); // Uses route-level endState configuration
388
+ .nextStep({ step: END_ROUTE }); // Uses route-level endStep configuration
388
389
 
389
390
  // ==============================================================================
390
391
  // USAGE EXAMPLES: Three-Phase Pipeline Demonstration
@@ -394,9 +395,9 @@ async function exampleConversations() {
394
395
  let session = createSession();
395
396
 
396
397
  // =========================================================================
397
- // Example 1: Simple company info question (stateless)
398
+ // Example 1: Simple company info question (stepless)
398
399
  // =========================================================================
399
- console.log("\n=== EXAMPLE 1: Company Info (Stateless Q&A) ===");
400
+ console.log("\n=== EXAMPLE 1: Company Info (Stepless Q&A) ===");
400
401
  const history1: Event[] = [
401
402
  createMessageEvent(
402
403
  EventSource.CUSTOMER,
@@ -415,12 +416,12 @@ async function exampleConversations() {
415
416
  * 2. ROUTING: Framework routes to "Company Information" (score: 95)
416
417
  * 3. RESPONSE: AI answers from context knowledge
417
418
  * - Route: "Company Information"
418
- * - Session: Updated with route/state (even for stateless)
419
- * - No data extraction (stateless route)
419
+ * - Session: Updated with route/step (even for stepless)
420
+ * - No data extraction (stepless route)
420
421
  */
421
422
 
422
423
  // =========================================================================
423
- // Example 2: Product question (stateless)
424
+ // Example 2: Product question (stepless)
424
425
  // =========================================================================
425
426
  console.log("\n=== EXAMPLE 2: Product Info ===");
426
427
  const history2: Event[] = [
@@ -438,7 +439,7 @@ async function exampleConversations() {
438
439
  // Route: "Product Information"
439
440
 
440
441
  // =========================================================================
441
- // Example 3: Policy question (stateless)
442
+ // Example 3: Policy question (stepless)
442
443
  // =========================================================================
443
444
  console.log("\n=== EXAMPLE 3: Policy Question ===");
444
445
  const history3: Event[] = [
@@ -456,7 +457,7 @@ async function exampleConversations() {
456
457
  // Route: "Policy Information"
457
458
 
458
459
  // =========================================================================
459
- // Example 4: News request (tool execution, but still stateless)
460
+ // Example 4: News request (tool execution, but still stepless)
460
461
  // =========================================================================
461
462
  console.log("\n=== EXAMPLE 4: Latest News ===");
462
463
  const history4: Event[] = [
@@ -502,9 +503,9 @@ async function exampleConversations() {
502
503
  // AI understands "it" refers to Acme Widget from context
503
504
 
504
505
  // =========================================================================
505
- // Example 6: Stateful feedback collection
506
+ // Example 6: Stepful feedback collection
506
507
  // =========================================================================
507
- console.log("\n=== EXAMPLE 6: Stateful Feedback Collection ===");
508
+ console.log("\n=== EXAMPLE 6: Stepful Feedback Collection ===");
508
509
  const feedbackHistory: Event[] = [
509
510
  createMessageEvent(
510
511
  EventSource.CUSTOMER,
@@ -522,7 +523,7 @@ async function exampleConversations() {
522
523
 
523
524
  if (feedbackResponse.isRouteComplete) {
524
525
  console.log("\n✅ Feedback collection complete!");
525
- await processFeedback(agent.getExtractedData(feedbackResponse.session?.id));
526
+ await processFeedback(agent.getData(feedbackResponse.session?.id));
526
527
  } else {
527
528
  console.log("\n⏳ Feedback collection in progress...");
528
529
  }
@@ -551,10 +552,10 @@ async function processFeedback(data: Partial<FeedbackData>) {
551
552
  // ==============================================================================
552
553
 
553
554
  /*
554
- * 1. NO STATE MACHINES REQUIRED
555
- * - Just use the initial state with a chatState description
556
- * - No gather, no skipIf, no state transitions
557
- * - Perfect for stateless question-answering
555
+ * 1. NO STEP MACHINES REQUIRED
556
+ * - Just use the initial step with a instructions description
557
+ * - No collect, no skipIf, no step transitions
558
+ * - Perfect for stepless question-answering
558
559
  *
559
560
  * 2. ROUTING STILL WORKS
560
561
  * - Framework routes to most relevant Q&A route
@@ -563,7 +564,7 @@ async function processFeedback(data: Partial<FeedbackData>) {
563
564
  *
564
565
  * 3. TOOLS FOR CONTEXT ENRICHMENT
565
566
  * - Tools fetch additional data (news, search results)
566
- * - Updates context (not extracted data)
567
+ * - Updates context (not collected data)
567
568
  * - AI uses enriched context to answer
568
569
  *
569
570
  * 4. KNOWLEDGE IN CONTEXT
@@ -571,14 +572,14 @@ async function processFeedback(data: Partial<FeedbackData>) {
571
572
  * - Use contextProvider for always-fresh data
572
573
  * - Tools can augment context at runtime
573
574
  *
574
- * 5. MIX STATEFUL & STATELESS
575
- * - Have Q&A routes (stateless)
576
- * - AND booking/onboarding routes (stateful)
575
+ * 5. MIX STEPFUL & STEPLESS
576
+ * - Have Q&A routes (stepless)
577
+ * - AND booking/onboarding routes (stepful)
577
578
  * - Framework handles both seamlessly
578
579
  *
579
580
  * 6. GUIDELINES FOR BEHAVIOR
580
581
  * - Use guidelines for general behavioral rules
581
- * - No need for complex state machines for simple policies
582
+ * - No need for complex step machines for simple policies
582
583
  * - Keep it simple!
583
584
  *
584
585
  * ARCHITECTURE FOR Q&A:
@@ -591,21 +592,21 @@ async function processFeedback(data: Partial<FeedbackData>) {
591
592
  * ↓
592
593
  * Response (AI answers from context)
593
594
  * ↓
594
- * Done (no state tracking needed)
595
+ * Done (no step tracking needed)
595
596
  *
596
- * vs. STATEFUL FLOWS (booking, onboarding):
597
+ * vs. STEPFUL FLOWS (booking, onboarding):
597
598
  *
598
599
  * User Intent
599
600
  * ↓
600
601
  * Routing
601
602
  * ↓
602
- * State Machine (gather data step-by-step)
603
+ * Step Machine (collect data step-by-step)
603
604
  * ↓
604
- * Tools (validate/enrich extracted data)
605
+ * Tools (validate/enrich collected data)
605
606
  * ↓
606
607
  * Response (continue conversation)
607
608
  * ↓
608
- * Track Session (extracted data, current state)
609
+ * Track Session (collected data, current step)
609
610
  */
610
611
 
611
612
  if (require.main === module) {