@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
@@ -1,16 +1,16 @@
1
1
  # Persistence with @falai/agent
2
2
 
3
- The `@falai/agent` framework provides optional, flexible persistence for automatically saving conversation sessions, extracted data, and messages to your database.
3
+ The `@falai/agent` framework provides optional, flexible persistence for automatically saving conversation sessions, collected data, and messages to your database.
4
4
 
5
5
  ## Features
6
6
 
7
7
  - ✅ **Optional** - Persistence is completely optional
8
8
  - ✅ **Provider Pattern** - Simple API like AI providers (`new PrismaAdapter({ prisma })`)
9
9
  - ✅ **Type-safe** - Full TypeScript support with generics
10
- - ✅ **Session State Integration** - Automatic saving of extracted data and conversation progress
10
+ - ✅ **Session Step Integration** - Automatic saving of collected data and conversation progress
11
11
  - ✅ **Multiple Adapters** - Prisma, Redis, MongoDB, PostgreSQL, SQLite, OpenSearch, Memory
12
12
  - ✅ **Extensible** - Create adapters for any database
13
- - ✅ **Auto-save** - Automatic session state and message persistence
13
+ - ✅ **Auto-save** - Automatic session step and message persistence
14
14
 
15
15
  ## Quick Start with Prisma
16
16
 
@@ -41,7 +41,7 @@ model AgentSession {
41
41
  agentName String? @map("agent_name")
42
42
  status String @default("active")
43
43
  currentRoute String? @map("current_route")
44
- currentState String? @map("current_state")
44
+ currentStep String? @map("current_step")
45
45
  collectedData Json? @map("collected_data")
46
46
  messageCount Int @default(0) @map("message_count")
47
47
  lastMessageAt DateTime? @map("last_message_at")
@@ -62,7 +62,7 @@ model AgentMessage {
62
62
  role String
63
63
  content String @db.Text
64
64
  route String?
65
- state String?
65
+ step String?
66
66
  toolCalls Json? @map("tool_calls")
67
67
  event Json?
68
68
  createdAt DateTime @default(now()) @map("created_at")
@@ -81,7 +81,7 @@ npx prisma generate
81
81
  npx prisma migrate dev --name init
82
82
  ```
83
83
 
84
- ### 4. Use in Your Agent with Session State (That's it!)
84
+ ### 4. Use in Your Agent with Session Step (That's it!)
85
85
 
86
86
  ```typescript
87
87
  import { Agent, PrismaAdapter, GeminiProvider } from "@falai/agent";
@@ -89,7 +89,7 @@ import { PrismaClient } from "@prisma/client";
89
89
 
90
90
  const prisma = new PrismaClient();
91
91
 
92
- // Define your extracted data type
92
+ // Define your collected data type
93
93
  interface BookingData {
94
94
  destination: string;
95
95
  date: string;
@@ -103,14 +103,14 @@ const agent = new Agent({
103
103
  persistence: {
104
104
  adapter: new PrismaAdapter({ prisma }),
105
105
  userId: "user_123",
106
- autoSave: true, // Auto-saves session state!
106
+ autoSave: true, // Auto-saves session step!
107
107
  },
108
108
  });
109
109
 
110
110
  // Create a route with data extraction
111
111
  const bookingRoute = agent.createRoute<BookingData>({
112
112
  title: "Book Flight",
113
- extractionSchema: {
113
+ schema: {
114
114
  type: "object",
115
115
  properties: {
116
116
  destination: { type: "string" },
@@ -121,45 +121,45 @@ const bookingRoute = agent.createRoute<BookingData>({
121
121
  },
122
122
  });
123
123
 
124
- // Define states with smart data gathering and custom IDs
125
- bookingRoute.initialState
126
- .transitionTo({
127
- id: "collect_details", // ✅ Custom state ID for easier tracking
128
- chatState: "Collect booking details",
129
- gather: ["destination", "date", "passengers"],
124
+ // Define steps with smart data collecting and custom IDs
125
+ bookingRoute.initialStep
126
+ .nextStep({
127
+ id: "collect_details", // ✅ Custom step ID for easier tracking
128
+ instructions: "Collect booking details",
129
+ collect: ["destination", "date", "passengers"],
130
130
  })
131
- .transitionTo({
132
- id: "confirm_booking", // ✅ Custom state ID
133
- chatState: "Confirm all details",
134
- requiredData: ["destination", "date", "passengers"],
131
+ .nextStep({
132
+ id: "confirm_booking", // ✅ Custom step ID
133
+ instructions: "Confirm all details",
134
+ requires: ["destination", "date", "passengers"],
135
135
  });
136
136
 
137
137
  // Access persistence methods
138
138
  const persistence = agent.getPersistenceManager();
139
139
 
140
- // Create a session with state support
141
- const { sessionData, sessionState } =
142
- await persistence.createSessionWithState<BookingData>({
140
+ // Create a session with step support
141
+ const { sessionData, sessionStep } =
142
+ await persistence.createSessionWithStep<BookingData>({
143
143
  userId: "user_123",
144
144
  agentName: "My Agent",
145
145
  });
146
146
 
147
147
  // Session ID is automatically set in metadata
148
- console.log("Session ID:", sessionState.metadata?.sessionId);
148
+ console.log("Session ID:", sessionStep.metadata?.sessionId);
149
149
  // Outputs: sessionData.id (e.g., "cuid_abc123")
150
150
 
151
151
  // Load history
152
152
  const history = await persistence.loadSessionHistory(sessionData.id);
153
153
 
154
- // Generate response with session state
154
+ // Generate response with session step
155
155
  const response = await agent.respond({
156
156
  history,
157
- session: sessionState, // Pass session state with ID
157
+ session: sessionStep, // Pass session step with ID
158
158
  });
159
159
 
160
- // Session state is auto-saved! ✨
161
- console.log("Extracted data:", response.session?.extracted);
162
- console.log("Current state ID:", response.session?.currentState?.id); // Custom or auto-generated ID
160
+ // Session step is auto-saved! ✨
161
+ console.log("Collected data:", response.session?.data);
162
+ console.log("Current step ID:", response.session?.currentStep?.id); // Custom or auto-generated ID
163
163
 
164
164
  // Save message
165
165
  await persistence.saveMessage({
@@ -268,26 +268,26 @@ const agent = new Agent({
268
268
  await agent.updateContext({ preferences: { theme: "dark" } });
269
269
  ```
270
270
 
271
- ## Session State Integration
271
+ ## Session Step Integration
272
272
 
273
- The new architecture automatically saves and loads `SessionState<TExtracted>` which includes:
273
+ The new architecture automatically saves and loads `SessionStep<TData>` which includes:
274
274
 
275
- - **Current route and state** - Track conversation progress
276
- - **Extracted data** - All data gathered via `extractionSchema` and `gather` fields
275
+ - **Current route and step** - Track conversation progress
276
+ - **Collected data** - All data collected via `schema` and `collect` fields
277
277
  - **Route history** - History of route transitions
278
278
  - **Metadata** - Session timestamps and custom data
279
279
 
280
280
  ### How It Works
281
281
 
282
- 1. **Auto-Save**: When `autoSave: true`, session state is automatically persisted after each `respond()` call
283
- 2. **Conversion**: `SessionState` is automatically converted to `SessionData` for storage
284
- 3. **Recovery**: Load session state from database to resume conversations
282
+ 1. **Auto-Save**: When `autoSave: true`, session step is automatically persisted after each `respond()` call
283
+ 2. **Conversion**: `SessionStep` is automatically converted to `SessionData` for storage
284
+ 3. **Recovery**: Load session step from database to resume conversations
285
285
 
286
- ### Create Session with State
286
+ ### Create Session with Step
287
287
 
288
288
  ```typescript
289
- const { sessionData, sessionState } =
290
- await persistence.createSessionWithState<YourDataType>({
289
+ const { sessionData, sessionStep } =
290
+ await persistence.createSessionWithStep<YourDataType>({
291
291
  userId: "user_123",
292
292
  agentName: "My Agent",
293
293
  initialData: {
@@ -296,23 +296,21 @@ const { sessionData, sessionState } =
296
296
  });
297
297
 
298
298
  // sessionData: Database record
299
- // sessionState: In-memory session state ready to use
299
+ // sessionStep: In-memory session step ready to use
300
300
  ```
301
301
 
302
- ### Save Session State
302
+ ### Save Session Step
303
303
 
304
304
  ```typescript
305
305
  // Manual save (not needed if autoSave: true)
306
- await persistence.saveSessionState(sessionId, sessionState);
306
+ await persistence.saveSessionStep(sessionId, sessionStep);
307
307
  ```
308
308
 
309
- ### Load Session State
309
+ ### Load Session Step
310
310
 
311
311
  ```typescript
312
- // Load session state from database
313
- const sessionState = await persistence.loadSessionState<YourDataType>(
314
- sessionId
315
- );
312
+ // Load session step from database
313
+ const sessionStep = await persistence.loadSessionStep<YourDataType>(sessionId);
316
314
 
317
315
  // Load message history
318
316
  const history = await persistence.loadSessionHistory(sessionId);
@@ -320,13 +318,13 @@ const history = await persistence.loadSessionHistory(sessionId);
320
318
  // Resume conversation
321
319
  const response = await agent.respond({
322
320
  history,
323
- session: sessionState,
321
+ session: sessionStep,
324
322
  });
325
323
  ```
326
324
 
327
325
  ### What Gets Persisted
328
326
 
329
- The session state stores:
327
+ The session step stores:
330
328
 
331
329
  ```typescript
332
330
  {
@@ -335,12 +333,12 @@ The session state stores:
335
333
  title: "Book a Flight",
336
334
  enteredAt: Date
337
335
  },
338
- currentState: {
336
+ currentStep: {
339
337
  id: "ask_dates",
340
338
  description: "Ask about travel dates",
341
339
  enteredAt: Date
342
340
  },
343
- extracted: {
341
+ data: {
344
342
  destination: "Paris",
345
343
  departureDate: "2025-06-15",
346
344
  passengers: 2
@@ -365,9 +363,9 @@ Access via `agent.getPersistenceManager()`:
365
363
  ### Session Methods
366
364
 
367
365
  ```typescript
368
- // Create session with state support (NEW!)
369
- const { sessionData, sessionState } =
370
- await persistence.createSessionWithState<YourDataType>({
366
+ // Create session with step support (NEW!)
367
+ const { sessionData, sessionStep } =
368
+ await persistence.createSessionWithStep<YourDataType>({
371
369
  userId: "user_123",
372
370
  agentName: "My Agent",
373
371
  initialData: {
@@ -375,13 +373,11 @@ const { sessionData, sessionState } =
375
373
  },
376
374
  });
377
375
 
378
- // Save session state (NEW!)
379
- await persistence.saveSessionState(sessionId, sessionState);
376
+ // Save session step (NEW!)
377
+ await persistence.saveSessionStep(sessionId, sessionStep);
380
378
 
381
- // Load session state (NEW!)
382
- const sessionState = await persistence.loadSessionState<YourDataType>(
383
- sessionId
384
- );
379
+ // Load session step (NEW!)
380
+ const sessionStep = await persistence.loadSessionStep<YourDataType>(sessionId);
385
381
 
386
382
  // Create session (legacy)
387
383
  await persistence.createSession({
@@ -402,7 +398,7 @@ await persistence.getUserSessions(userId);
402
398
  // Update session
403
399
  await persistence.updateSessionStatus(sessionId, "completed");
404
400
  await persistence.updateCollectedData(sessionId, { key: "value" });
405
- await persistence.updateRouteState(sessionId, routeId, stateId);
401
+ await persistence.updateRouteStep(sessionId, routeId, stepId);
406
402
 
407
403
  // Complete/abandon session
408
404
  await persistence.completeSession(sessionId);
@@ -422,7 +418,7 @@ await persistence.saveMessage({
422
418
  role: "user" | "agent" | "system",
423
419
  content: "Hello!",
424
420
  route: "route_id",
425
- state: "state_id",
421
+ step: "step_id",
426
422
  toolCalls: [...],
427
423
  });
428
424
 
@@ -508,7 +504,7 @@ await persistence.saveMessage({
508
504
  - `agentName`: Name of the agent
509
505
  - `status`: `"active" | "completed" | "abandoned"`
510
506
  - `currentRoute`: Current route ID
511
- - `currentState`: Current state ID
507
+ - `currentStep`: Current step ID
512
508
  - `collectedData`: JSON object for custom data
513
509
  - `messageCount`: Number of messages in session
514
510
  - `lastMessageAt`: Timestamp of last message
@@ -524,19 +520,19 @@ await persistence.saveMessage({
524
520
  - `role`: `"user" | "agent" | "system"`
525
521
  - `content`: Message text
526
522
  - `route`: Route ID when message was sent
527
- - `state`: State ID when message was sent
523
+ - `step`: Step ID when message was sent
528
524
  - `toolCalls`: Array of tool calls (if any)
529
525
  - `event`: Full event data (optional)
530
526
  - `createdAt`: Message creation time
531
527
 
532
528
  ## Best Practices
533
529
 
534
- 1. ✅ **Use `createSessionWithState()`** - Get both database record and session state in one call
535
- 2. ✅ **Enable `autoSave: true`** - Automatically persist session state after each response
536
- 3. ✅ **Define extraction schemas** - Use `extractionSchema` in routes for structured data collection
537
- 4. ✅ **Pass session state** - Always pass `session` parameter to `agent.respond()`
538
- 5. ✅ **Load session state** - Use `loadSessionState()` to resume conversations
539
- 6. ✅ **Store extracted data** - Leverage `collectedData.extracted` for user input tracking
530
+ 1. ✅ **Use `createSessionWithStep()`** - Get both database record and session step in one call
531
+ 2. ✅ **Enable `autoSave: true`** - Automatically persist session step after each response
532
+ 3. ✅ **Define extraction schemas** - Use `schema` in routes for structured data collection
533
+ 4. ✅ **Pass session step** - Always pass `session` parameter to `agent.respond()`
534
+ 5. ✅ **Load session step** - Use `loadSessionStep()` to resume conversations
535
+ 6. ✅ **Store collected data** - Leverage `collectedData.data` for user input tracking
540
536
  7. ✅ **Index frequently queried fields** - Add database indexes on `userId`, `status`, etc.
541
537
  8. ✅ **Use cascading deletes** - Clean up messages automatically when deleting sessions
542
538
  9. ✅ **Complete sessions** - Mark sessions as completed when conversation ends
@@ -802,7 +798,7 @@ describe("Agent persistence", () => {
802
798
  const adapter = new MemoryAdapter();
803
799
 
804
800
  afterEach(() => {
805
- adapter.clear(); // Clean state between tests
801
+ adapter.clear(); // Clean step between tests
806
802
  });
807
803
 
808
804
  it("should save session", async () => {
package/docs/PROVIDERS.md CHANGED
@@ -21,7 +21,7 @@ Streaming provides:
21
21
  - 🌊 Real-time text generation for better UX
22
22
  - 📊 Incremental delivery with `delta` and `accumulated` properties
23
23
  - 🛑 Cancellable streams using AbortSignal
24
- - ✅ Full compatibility with routes, states, and tool calls
24
+ - ✅ Full compatibility with routes, steps, and tool calls
25
25
 
26
26
  **Example:**
27
27
 
@@ -51,7 +51,7 @@ See [streaming-agent.ts](../examples/streaming-agent.ts) for comprehensive examp
51
51
 
52
52
  Anthropic's Claude models are known for their exceptional reasoning, analysis, and long context windows. Claude 3.5 Sonnet offers:
53
53
 
54
- - State-of-the-art reasoning and analysis
54
+ - Step-of-the-art reasoning and analysis
55
55
  - 200K context window
56
56
  - Excellent at following complex instructions
57
57
  - Strong coding and writing capabilities
package/docs/README.md CHANGED
@@ -14,12 +14,12 @@ Welcome to the `@falai/agent` documentation!
14
14
 
15
15
  - **[Architecture](./ARCHITECTURE.md)** - Design principles & philosophy (Data-driven sessions) ⭐ **UPDATED**
16
16
  - **[Agent](./AGENT.md)** - Comprehensive guide to declarative vs fluent configuration ⭐ **UPDATED**
17
- - **[Context Management](./CONTEXT_MANAGEMENT.md)** - Session state & data extraction patterns ⭐ **UPDATED**
17
+ - **[Context Management](./CONTEXT_MANAGEMENT.md)** - Session step & data extraction patterns ⭐ **UPDATED**
18
18
 
19
19
  ### Conversational Flows
20
20
 
21
21
  - **[Routes Guide](./ROUTES.md)** - Complete guide to creating and managing conversational routes ⭐ **NEW**
22
- - **[States Guide](./STATES.md)** - Complete guide to creating and managing states ⭐ **NEW**
22
+ - **[Steps Guide](./STEPS.md)** - Complete guide to creating and managing steps ⭐ **NEW**
23
23
 
24
24
  ### Reference
25
25
 
@@ -48,7 +48,7 @@ Welcome to the `@falai/agent` documentation!
48
48
  → Check [Agent](./AGENT.md)
49
49
 
50
50
  **Creating conversational flows?**
51
- → See [Routes Guide](./ROUTES.md) and [States Guide](./STATES.md)
51
+ → See [Routes Guide](./ROUTES.md) and [Steps Guide](./STEPS.md)
52
52
 
53
53
  **Need tool security?**
54
54
  → See [Domain Organization](./DOMAINS.md)
@@ -63,7 +63,7 @@ Welcome to the `@falai/agent` documentation!
63
63
 
64
64
  - **Architecture & Design**: [Architecture Guide](./ARCHITECTURE.md)
65
65
  - **Agent Configuration**: [Agent](./AGENT.md) | [Context Management](./CONTEXT_MANAGEMENT.md)
66
- - **Conversation Flows**: [Routes Guide](./ROUTES.md) | [States Guide](./STATES.md) | [API Reference - Routes](./API_REFERENCE.md#route)
66
+ - **Conversation Flows**: [Routes Guide](./ROUTES.md) | [Steps Guide](./STEPS.md) | [API Reference - Routes](./API_REFERENCE.md#route)
67
67
  - **Tools & Domains**: [Domain Organization](./DOMAINS.md) | [API Reference - Tools](./API_REFERENCE.md#definetool)
68
68
  - **AI Providers**: [Providers Guide](./PROVIDERS.md) | [API Reference](./API_REFERENCE.md#geminiprovider)
69
69
  - **Database Persistence**: [Persistence Guide](./PERSISTENCE.md) | [Adapters](./ADAPTERS.md)
@@ -79,7 +79,7 @@ Check out the [`examples/`](../examples/) directory for complete, runnable examp
79
79
  - **[Travel Agent](../examples/travel-agent.ts)** - Complex multi-route travel booking system
80
80
  - **[Healthcare Agent](../examples/healthcare-agent.ts)** - Full example
81
81
  - **[Streaming Agent](../examples/streaming-agent.ts)** - Real-time streaming responses
82
- - **[Company Q&A Agent](../examples/company-qna-agent.ts)** - Stateless question-answering with knowledge base
82
+ - **[Company Q&A Agent](../examples/company-qna-agent.ts)** - Stepless question-answering with knowledge base
83
83
 
84
84
  ### Persistence Examples
85
85
 
@@ -96,7 +96,7 @@ Check out the [`examples/`](../examples/) directory for complete, runnable examp
96
96
 
97
97
  - **[Domain Scoping](../examples/domain-scoping.ts)** - Control tool access per route
98
98
  - **[Rules & Prohibitions](../examples/rules-prohibitions.ts)** - Fine-grained behavior control
99
- - **[Extracted Data Modification](../examples/extracted-data-modification.ts)** - Tools that validate and enrich extracted data
99
+ - **[Collected data Modification](../examples/data-data-modification.ts)** - Tools that validate and enrich collected data
100
100
 
101
101
  ## 🤝 Contributing
102
102