@falai/agent 0.6.9 → 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 (242) hide show
  1. package/README.md +78 -82
  2. package/dist/adapters/MemoryAdapter.d.ts +1 -1
  3. package/dist/adapters/MemoryAdapter.js +3 -3
  4. package/dist/adapters/MemoryAdapter.js.map +1 -1
  5. package/dist/adapters/MongoAdapter.d.ts +1 -1
  6. package/dist/adapters/MongoAdapter.js +3 -3
  7. package/dist/adapters/MongoAdapter.js.map +1 -1
  8. package/dist/adapters/OpenSearchAdapter.js +7 -7
  9. package/dist/adapters/OpenSearchAdapter.js.map +1 -1
  10. package/dist/adapters/PostgreSQLAdapter.d.ts +1 -1
  11. package/dist/adapters/PostgreSQLAdapter.js +10 -10
  12. package/dist/adapters/PostgreSQLAdapter.js.map +1 -1
  13. package/dist/adapters/PrismaAdapter.d.ts +1 -1
  14. package/dist/adapters/PrismaAdapter.js +4 -4
  15. package/dist/adapters/PrismaAdapter.js.map +1 -1
  16. package/dist/adapters/RedisAdapter.d.ts +1 -1
  17. package/dist/adapters/RedisAdapter.js +3 -3
  18. package/dist/adapters/RedisAdapter.js.map +1 -1
  19. package/dist/adapters/SQLiteAdapter.d.ts +4 -4
  20. package/dist/adapters/SQLiteAdapter.d.ts.map +1 -1
  21. package/dist/adapters/SQLiteAdapter.js +12 -12
  22. package/dist/adapters/SQLiteAdapter.js.map +1 -1
  23. package/dist/adapters/index.d.ts +1 -1
  24. package/dist/adapters/index.d.ts.map +1 -1
  25. package/dist/cjs/adapters/MemoryAdapter.d.ts +1 -1
  26. package/dist/cjs/adapters/MemoryAdapter.js +3 -3
  27. package/dist/cjs/adapters/MemoryAdapter.js.map +1 -1
  28. package/dist/cjs/adapters/MongoAdapter.d.ts +1 -1
  29. package/dist/cjs/adapters/MongoAdapter.js +3 -3
  30. package/dist/cjs/adapters/MongoAdapter.js.map +1 -1
  31. package/dist/cjs/adapters/OpenSearchAdapter.js +7 -7
  32. package/dist/cjs/adapters/OpenSearchAdapter.js.map +1 -1
  33. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts +1 -1
  34. package/dist/cjs/adapters/PostgreSQLAdapter.js +10 -10
  35. package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -1
  36. package/dist/cjs/adapters/PrismaAdapter.d.ts +1 -1
  37. package/dist/cjs/adapters/PrismaAdapter.js +4 -4
  38. package/dist/cjs/adapters/PrismaAdapter.js.map +1 -1
  39. package/dist/cjs/adapters/RedisAdapter.d.ts +1 -1
  40. package/dist/cjs/adapters/RedisAdapter.js +3 -3
  41. package/dist/cjs/adapters/RedisAdapter.js.map +1 -1
  42. package/dist/cjs/adapters/SQLiteAdapter.d.ts +4 -4
  43. package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +1 -1
  44. package/dist/cjs/adapters/SQLiteAdapter.js +12 -12
  45. package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -1
  46. package/dist/cjs/adapters/index.d.ts +1 -1
  47. package/dist/cjs/adapters/index.d.ts.map +1 -1
  48. package/dist/cjs/constants/index.d.ts +4 -4
  49. package/dist/cjs/constants/index.js +5 -5
  50. package/dist/cjs/core/Agent.d.ts +22 -22
  51. package/dist/cjs/core/Agent.d.ts.map +1 -1
  52. package/dist/cjs/core/Agent.js +168 -160
  53. package/dist/cjs/core/Agent.js.map +1 -1
  54. package/dist/cjs/core/Events.d.ts +6 -6
  55. package/dist/cjs/core/Events.d.ts.map +1 -1
  56. package/dist/cjs/core/PersistenceManager.d.ts +13 -13
  57. package/dist/cjs/core/PersistenceManager.d.ts.map +1 -1
  58. package/dist/cjs/core/PersistenceManager.js +24 -24
  59. package/dist/cjs/core/PersistenceManager.js.map +1 -1
  60. package/dist/cjs/core/ResponseEngine.d.ts +3 -8
  61. package/dist/cjs/core/ResponseEngine.d.ts.map +1 -1
  62. package/dist/cjs/core/ResponseEngine.js +8 -8
  63. package/dist/cjs/core/ResponseEngine.js.map +1 -1
  64. package/dist/cjs/core/Route.d.ts +17 -17
  65. package/dist/cjs/core/Route.d.ts.map +1 -1
  66. package/dist/cjs/core/Route.js +33 -33
  67. package/dist/cjs/core/Route.js.map +1 -1
  68. package/dist/cjs/core/RoutingEngine.d.ts +31 -31
  69. package/dist/cjs/core/RoutingEngine.d.ts.map +1 -1
  70. package/dist/cjs/core/RoutingEngine.js +196 -196
  71. package/dist/cjs/core/RoutingEngine.js.map +1 -1
  72. package/dist/cjs/core/Step.d.ts +72 -0
  73. package/dist/cjs/core/Step.d.ts.map +1 -0
  74. package/dist/cjs/core/Step.js +150 -0
  75. package/dist/cjs/core/Step.js.map +1 -0
  76. package/dist/cjs/core/ToolExecutor.d.ts +5 -5
  77. package/dist/cjs/core/ToolExecutor.d.ts.map +1 -1
  78. package/dist/cjs/core/ToolExecutor.js +8 -8
  79. package/dist/cjs/core/ToolExecutor.js.map +1 -1
  80. package/dist/cjs/core/Transition.d.ts +14 -14
  81. package/dist/cjs/core/Transition.d.ts.map +1 -1
  82. package/dist/cjs/core/Transition.js +48 -19
  83. package/dist/cjs/core/Transition.js.map +1 -1
  84. package/dist/cjs/index.d.ts +7 -7
  85. package/dist/cjs/index.d.ts.map +1 -1
  86. package/dist/cjs/index.js +8 -8
  87. package/dist/cjs/index.js.map +1 -1
  88. package/dist/cjs/types/agent.d.ts +9 -9
  89. package/dist/cjs/types/agent.d.ts.map +1 -1
  90. package/dist/cjs/types/ai.d.ts +2 -2
  91. package/dist/cjs/types/ai.d.ts.map +1 -1
  92. package/dist/cjs/types/history.d.ts +3 -3
  93. package/dist/cjs/types/history.d.ts.map +1 -1
  94. package/dist/cjs/types/index.d.ts +1 -1
  95. package/dist/cjs/types/index.d.ts.map +1 -1
  96. package/dist/cjs/types/persistence.d.ts +5 -5
  97. package/dist/cjs/types/persistence.d.ts.map +1 -1
  98. package/dist/cjs/types/route.d.ts +57 -52
  99. package/dist/cjs/types/route.d.ts.map +1 -1
  100. package/dist/cjs/types/session.d.ts +27 -27
  101. package/dist/cjs/types/session.d.ts.map +1 -1
  102. package/dist/cjs/types/session.js +48 -50
  103. package/dist/cjs/types/session.js.map +1 -1
  104. package/dist/cjs/types/tool.d.ts +13 -13
  105. package/dist/cjs/types/tool.d.ts.map +1 -1
  106. package/dist/cjs/utils/id.d.ts +8 -3
  107. package/dist/cjs/utils/id.d.ts.map +1 -1
  108. package/dist/cjs/utils/id.js +16 -7
  109. package/dist/cjs/utils/id.js.map +1 -1
  110. package/dist/constants/index.d.ts +4 -4
  111. package/dist/constants/index.js +4 -4
  112. package/dist/core/Agent.d.ts +22 -22
  113. package/dist/core/Agent.d.ts.map +1 -1
  114. package/dist/core/Agent.js +170 -162
  115. package/dist/core/Agent.js.map +1 -1
  116. package/dist/core/Events.d.ts +6 -6
  117. package/dist/core/Events.d.ts.map +1 -1
  118. package/dist/core/PersistenceManager.d.ts +13 -13
  119. package/dist/core/PersistenceManager.d.ts.map +1 -1
  120. package/dist/core/PersistenceManager.js +25 -25
  121. package/dist/core/PersistenceManager.js.map +1 -1
  122. package/dist/core/ResponseEngine.d.ts +3 -8
  123. package/dist/core/ResponseEngine.d.ts.map +1 -1
  124. package/dist/core/ResponseEngine.js +8 -8
  125. package/dist/core/ResponseEngine.js.map +1 -1
  126. package/dist/core/Route.d.ts +17 -17
  127. package/dist/core/Route.d.ts.map +1 -1
  128. package/dist/core/Route.js +33 -33
  129. package/dist/core/Route.js.map +1 -1
  130. package/dist/core/RoutingEngine.d.ts +31 -31
  131. package/dist/core/RoutingEngine.d.ts.map +1 -1
  132. package/dist/core/RoutingEngine.js +197 -197
  133. package/dist/core/RoutingEngine.js.map +1 -1
  134. package/dist/core/Step.d.ts +72 -0
  135. package/dist/core/Step.d.ts.map +1 -0
  136. package/dist/core/Step.js +146 -0
  137. package/dist/core/Step.js.map +1 -0
  138. package/dist/core/ToolExecutor.d.ts +5 -5
  139. package/dist/core/ToolExecutor.d.ts.map +1 -1
  140. package/dist/core/ToolExecutor.js +8 -8
  141. package/dist/core/ToolExecutor.js.map +1 -1
  142. package/dist/core/Transition.d.ts +14 -14
  143. package/dist/core/Transition.d.ts.map +1 -1
  144. package/dist/core/Transition.js +48 -19
  145. package/dist/core/Transition.js.map +1 -1
  146. package/dist/index.d.ts +7 -7
  147. package/dist/index.d.ts.map +1 -1
  148. package/dist/index.js +4 -4
  149. package/dist/index.js.map +1 -1
  150. package/dist/types/agent.d.ts +9 -9
  151. package/dist/types/agent.d.ts.map +1 -1
  152. package/dist/types/ai.d.ts +2 -2
  153. package/dist/types/ai.d.ts.map +1 -1
  154. package/dist/types/history.d.ts +3 -3
  155. package/dist/types/history.d.ts.map +1 -1
  156. package/dist/types/index.d.ts +1 -1
  157. package/dist/types/index.d.ts.map +1 -1
  158. package/dist/types/persistence.d.ts +5 -5
  159. package/dist/types/persistence.d.ts.map +1 -1
  160. package/dist/types/route.d.ts +57 -52
  161. package/dist/types/route.d.ts.map +1 -1
  162. package/dist/types/session.d.ts +27 -27
  163. package/dist/types/session.d.ts.map +1 -1
  164. package/dist/types/session.js +44 -46
  165. package/dist/types/session.js.map +1 -1
  166. package/dist/types/tool.d.ts +13 -13
  167. package/dist/types/tool.d.ts.map +1 -1
  168. package/dist/utils/id.d.ts +8 -3
  169. package/dist/utils/id.d.ts.map +1 -1
  170. package/dist/utils/id.js +14 -6
  171. package/dist/utils/id.js.map +1 -1
  172. package/docs/ADAPTERS.md +21 -21
  173. package/docs/AGENT.md +63 -61
  174. package/docs/API_REFERENCE.md +218 -220
  175. package/docs/ARCHITECTURE.md +99 -104
  176. package/docs/CONTEXT_MANAGEMENT.md +84 -91
  177. package/docs/CONTRIBUTING.md +3 -3
  178. package/docs/DOCS.md +18 -18
  179. package/docs/DOMAINS.md +18 -18
  180. package/docs/EXAMPLES.md +44 -44
  181. package/docs/GETTING_STARTED.md +63 -66
  182. package/docs/PERSISTENCE.md +70 -74
  183. package/docs/PROVIDERS.md +6 -6
  184. package/docs/README.md +6 -6
  185. package/docs/ROUTES.md +218 -220
  186. package/docs/STEPS.md +883 -0
  187. package/examples/business-onboarding.ts +85 -82
  188. package/examples/company-qna-agent.ts +69 -68
  189. package/examples/custom-database-persistence.ts +89 -91
  190. package/examples/declarative-agent.ts +33 -33
  191. package/examples/domain-scoping.ts +20 -20
  192. package/examples/extracted-data-modification.ts +93 -98
  193. package/examples/healthcare-agent.ts +90 -92
  194. package/examples/openai-agent.ts +30 -33
  195. package/examples/opensearch-persistence.ts +46 -48
  196. package/examples/persistent-onboarding.ts +67 -68
  197. package/examples/prisma-persistence.ts +111 -115
  198. package/examples/prisma-schema.example.prisma +3 -3
  199. package/examples/redis-persistence.ts +70 -76
  200. package/examples/route-transitions.ts +72 -48
  201. package/examples/rules-prohibitions.ts +31 -31
  202. package/examples/streaming-agent.ts +29 -29
  203. package/examples/travel-agent.ts +95 -110
  204. package/package.json +1 -1
  205. package/src/adapters/MemoryAdapter.ts +4 -4
  206. package/src/adapters/MongoAdapter.ts +4 -4
  207. package/src/adapters/OpenSearchAdapter.ts +8 -8
  208. package/src/adapters/PostgreSQLAdapter.ts +11 -11
  209. package/src/adapters/PrismaAdapter.ts +5 -5
  210. package/src/adapters/RedisAdapter.ts +4 -4
  211. package/src/adapters/SQLiteAdapter.ts +16 -16
  212. package/src/adapters/index.ts +1 -1
  213. package/src/constants/index.ts +4 -4
  214. package/src/core/Agent.ts +218 -214
  215. package/src/core/Events.ts +12 -12
  216. package/src/core/PersistenceManager.ts +32 -36
  217. package/src/core/ResponseEngine.ts +11 -17
  218. package/src/core/Route.ts +55 -49
  219. package/src/core/RoutingEngine.ts +252 -258
  220. package/src/core/Step.ts +197 -0
  221. package/src/core/ToolExecutor.ts +11 -11
  222. package/src/core/Transition.ts +72 -26
  223. package/src/index.ts +8 -8
  224. package/src/types/agent.ts +9 -9
  225. package/src/types/ai.ts +2 -2
  226. package/src/types/history.ts +3 -3
  227. package/src/types/index.ts +1 -1
  228. package/src/types/persistence.ts +6 -6
  229. package/src/types/route.ts +77 -61
  230. package/src/types/session.ts +75 -78
  231. package/src/types/tool.ts +17 -17
  232. package/src/utils/id.ts +15 -6
  233. package/dist/cjs/core/State.d.ts +0 -72
  234. package/dist/cjs/core/State.d.ts.map +0 -1
  235. package/dist/cjs/core/State.js +0 -148
  236. package/dist/cjs/core/State.js.map +0 -1
  237. package/dist/core/State.d.ts +0 -72
  238. package/dist/core/State.d.ts.map +0 -1
  239. package/dist/core/State.js +0 -144
  240. package/dist/core/State.js.map +0 -1
  241. package/docs/STATES.md +0 -888
  242. 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;
@@ -98,19 +98,19 @@ 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 }),
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({
@@ -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,
@@ -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
 
@@ -482,7 +478,7 @@ import { PrismaClient } from "@prisma/client";
482
478
  const prisma = new PrismaClient();
483
479
  const agent = new Agent({
484
480
  name: "Assistant",
485
- ai: provider,
481
+ provider: provider,
486
482
  persistence: {
487
483
  adapter: new PrismaAdapter({ prisma }),
488
484
  },
@@ -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
@@ -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
  }),
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