@falai/agent 0.9.0-alpha-1 → 0.9.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 (217) hide show
  1. package/README.md +34 -22
  2. package/dist/cjs/src/core/Agent.d.ts +77 -59
  3. package/dist/cjs/src/core/Agent.d.ts.map +1 -1
  4. package/dist/cjs/src/core/Agent.js +284 -1060
  5. package/dist/cjs/src/core/Agent.js.map +1 -1
  6. package/dist/cjs/src/core/PersistenceManager.d.ts.map +1 -1
  7. package/dist/cjs/src/core/PersistenceManager.js +48 -25
  8. package/dist/cjs/src/core/PersistenceManager.js.map +1 -1
  9. package/dist/cjs/src/core/PromptComposer.d.ts +1 -1
  10. package/dist/cjs/src/core/PromptComposer.d.ts.map +1 -1
  11. package/dist/cjs/src/core/PromptComposer.js.map +1 -1
  12. package/dist/cjs/src/core/ResponseEngine.d.ts +13 -12
  13. package/dist/cjs/src/core/ResponseEngine.d.ts.map +1 -1
  14. package/dist/cjs/src/core/ResponseEngine.js +4 -4
  15. package/dist/cjs/src/core/ResponseEngine.js.map +1 -1
  16. package/dist/cjs/src/core/ResponseModal.d.ts +205 -0
  17. package/dist/cjs/src/core/ResponseModal.d.ts.map +1 -0
  18. package/dist/cjs/src/core/ResponseModal.js +1328 -0
  19. package/dist/cjs/src/core/ResponseModal.js.map +1 -0
  20. package/dist/cjs/src/core/ResponsePipeline.d.ts +66 -38
  21. package/dist/cjs/src/core/ResponsePipeline.d.ts.map +1 -1
  22. package/dist/cjs/src/core/ResponsePipeline.js +72 -4
  23. package/dist/cjs/src/core/ResponsePipeline.js.map +1 -1
  24. package/dist/cjs/src/core/Route.d.ts +24 -5
  25. package/dist/cjs/src/core/Route.d.ts.map +1 -1
  26. package/dist/cjs/src/core/Route.js +45 -1
  27. package/dist/cjs/src/core/Route.js.map +1 -1
  28. package/dist/cjs/src/core/RoutingEngine.d.ts +31 -6
  29. package/dist/cjs/src/core/RoutingEngine.d.ts.map +1 -1
  30. package/dist/cjs/src/core/RoutingEngine.js +113 -9
  31. package/dist/cjs/src/core/RoutingEngine.js.map +1 -1
  32. package/dist/cjs/src/core/SessionManager.d.ts +14 -4
  33. package/dist/cjs/src/core/SessionManager.d.ts.map +1 -1
  34. package/dist/cjs/src/core/SessionManager.js +25 -5
  35. package/dist/cjs/src/core/SessionManager.js.map +1 -1
  36. package/dist/cjs/src/core/Step.d.ts +10 -10
  37. package/dist/cjs/src/core/Step.d.ts.map +1 -1
  38. package/dist/cjs/src/core/Step.js.map +1 -1
  39. package/dist/cjs/src/core/ToolExecutor.d.ts +4 -2
  40. package/dist/cjs/src/core/ToolExecutor.d.ts.map +1 -1
  41. package/dist/cjs/src/core/ToolExecutor.js +13 -3
  42. package/dist/cjs/src/core/ToolExecutor.js.map +1 -1
  43. package/dist/cjs/src/index.d.ts +3 -1
  44. package/dist/cjs/src/index.d.ts.map +1 -1
  45. package/dist/cjs/src/index.js +7 -1
  46. package/dist/cjs/src/index.js.map +1 -1
  47. package/dist/cjs/src/types/agent.d.ts +42 -21
  48. package/dist/cjs/src/types/agent.d.ts.map +1 -1
  49. package/dist/cjs/src/types/agent.js.map +1 -1
  50. package/dist/cjs/src/types/ai.d.ts +1 -1
  51. package/dist/cjs/src/types/ai.d.ts.map +1 -1
  52. package/dist/cjs/src/types/index.d.ts +1 -1
  53. package/dist/cjs/src/types/index.d.ts.map +1 -1
  54. package/dist/cjs/src/types/index.js.map +1 -1
  55. package/dist/cjs/src/types/persistence.d.ts +0 -1
  56. package/dist/cjs/src/types/persistence.d.ts.map +1 -1
  57. package/dist/cjs/src/types/route.d.ts +22 -16
  58. package/dist/cjs/src/types/route.d.ts.map +1 -1
  59. package/dist/cjs/src/types/session.d.ts +6 -11
  60. package/dist/cjs/src/types/session.d.ts.map +1 -1
  61. package/dist/cjs/src/types/tool.d.ts +12 -6
  62. package/dist/cjs/src/types/tool.d.ts.map +1 -1
  63. package/dist/cjs/src/utils/clone.d.ts.map +1 -1
  64. package/dist/cjs/src/utils/clone.js +0 -4
  65. package/dist/cjs/src/utils/clone.js.map +1 -1
  66. package/dist/cjs/src/utils/history.d.ts +30 -1
  67. package/dist/cjs/src/utils/history.d.ts.map +1 -1
  68. package/dist/cjs/src/utils/history.js +169 -23
  69. package/dist/cjs/src/utils/history.js.map +1 -1
  70. package/dist/cjs/src/utils/index.d.ts +1 -1
  71. package/dist/cjs/src/utils/index.d.ts.map +1 -1
  72. package/dist/cjs/src/utils/index.js +5 -1
  73. package/dist/cjs/src/utils/index.js.map +1 -1
  74. package/dist/cjs/src/utils/session.d.ts +2 -2
  75. package/dist/cjs/src/utils/session.d.ts.map +1 -1
  76. package/dist/cjs/src/utils/session.js +6 -26
  77. package/dist/cjs/src/utils/session.js.map +1 -1
  78. package/dist/src/core/Agent.d.ts +77 -59
  79. package/dist/src/core/Agent.d.ts.map +1 -1
  80. package/dist/src/core/Agent.js +285 -1061
  81. package/dist/src/core/Agent.js.map +1 -1
  82. package/dist/src/core/PersistenceManager.d.ts.map +1 -1
  83. package/dist/src/core/PersistenceManager.js +48 -25
  84. package/dist/src/core/PersistenceManager.js.map +1 -1
  85. package/dist/src/core/PromptComposer.d.ts +1 -1
  86. package/dist/src/core/PromptComposer.d.ts.map +1 -1
  87. package/dist/src/core/PromptComposer.js.map +1 -1
  88. package/dist/src/core/ResponseEngine.d.ts +13 -12
  89. package/dist/src/core/ResponseEngine.d.ts.map +1 -1
  90. package/dist/src/core/ResponseEngine.js +4 -4
  91. package/dist/src/core/ResponseEngine.js.map +1 -1
  92. package/dist/src/core/ResponseModal.d.ts +205 -0
  93. package/dist/src/core/ResponseModal.d.ts.map +1 -0
  94. package/dist/src/core/ResponseModal.js +1323 -0
  95. package/dist/src/core/ResponseModal.js.map +1 -0
  96. package/dist/src/core/ResponsePipeline.d.ts +66 -38
  97. package/dist/src/core/ResponsePipeline.d.ts.map +1 -1
  98. package/dist/src/core/ResponsePipeline.js +72 -4
  99. package/dist/src/core/ResponsePipeline.js.map +1 -1
  100. package/dist/src/core/Route.d.ts +24 -5
  101. package/dist/src/core/Route.d.ts.map +1 -1
  102. package/dist/src/core/Route.js +45 -1
  103. package/dist/src/core/Route.js.map +1 -1
  104. package/dist/src/core/RoutingEngine.d.ts +31 -6
  105. package/dist/src/core/RoutingEngine.d.ts.map +1 -1
  106. package/dist/src/core/RoutingEngine.js +113 -9
  107. package/dist/src/core/RoutingEngine.js.map +1 -1
  108. package/dist/src/core/SessionManager.d.ts +14 -4
  109. package/dist/src/core/SessionManager.d.ts.map +1 -1
  110. package/dist/src/core/SessionManager.js +25 -5
  111. package/dist/src/core/SessionManager.js.map +1 -1
  112. package/dist/src/core/Step.d.ts +10 -10
  113. package/dist/src/core/Step.d.ts.map +1 -1
  114. package/dist/src/core/Step.js.map +1 -1
  115. package/dist/src/core/ToolExecutor.d.ts +4 -2
  116. package/dist/src/core/ToolExecutor.d.ts.map +1 -1
  117. package/dist/src/core/ToolExecutor.js +13 -3
  118. package/dist/src/core/ToolExecutor.js.map +1 -1
  119. package/dist/src/index.d.ts +3 -1
  120. package/dist/src/index.d.ts.map +1 -1
  121. package/dist/src/index.js +2 -1
  122. package/dist/src/index.js.map +1 -1
  123. package/dist/src/types/agent.d.ts +42 -21
  124. package/dist/src/types/agent.d.ts.map +1 -1
  125. package/dist/src/types/agent.js.map +1 -1
  126. package/dist/src/types/ai.d.ts +1 -1
  127. package/dist/src/types/ai.d.ts.map +1 -1
  128. package/dist/src/types/index.d.ts +1 -1
  129. package/dist/src/types/index.d.ts.map +1 -1
  130. package/dist/src/types/index.js.map +1 -1
  131. package/dist/src/types/persistence.d.ts +0 -1
  132. package/dist/src/types/persistence.d.ts.map +1 -1
  133. package/dist/src/types/route.d.ts +22 -16
  134. package/dist/src/types/route.d.ts.map +1 -1
  135. package/dist/src/types/session.d.ts +6 -11
  136. package/dist/src/types/session.d.ts.map +1 -1
  137. package/dist/src/types/tool.d.ts +12 -6
  138. package/dist/src/types/tool.d.ts.map +1 -1
  139. package/dist/src/utils/clone.d.ts.map +1 -1
  140. package/dist/src/utils/clone.js +0 -4
  141. package/dist/src/utils/clone.js.map +1 -1
  142. package/dist/src/utils/history.d.ts +30 -1
  143. package/dist/src/utils/history.d.ts.map +1 -1
  144. package/dist/src/utils/history.js +165 -23
  145. package/dist/src/utils/history.js.map +1 -1
  146. package/dist/src/utils/index.d.ts +1 -1
  147. package/dist/src/utils/index.d.ts.map +1 -1
  148. package/dist/src/utils/index.js +1 -1
  149. package/dist/src/utils/index.js.map +1 -1
  150. package/dist/src/utils/session.d.ts +2 -2
  151. package/dist/src/utils/session.d.ts.map +1 -1
  152. package/dist/src/utils/session.js +6 -26
  153. package/dist/src/utils/session.js.map +1 -1
  154. package/docs/README.md +5 -4
  155. package/docs/api/README.md +195 -4
  156. package/docs/api/overview.md +232 -13
  157. package/docs/core/agent/README.md +162 -17
  158. package/docs/core/agent/context-management.md +39 -15
  159. package/docs/core/agent/session-management.md +49 -16
  160. package/docs/core/ai-integration/prompt-composition.md +38 -14
  161. package/docs/core/ai-integration/response-processing.md +28 -17
  162. package/docs/core/conversation-flows/data-collection.md +103 -25
  163. package/docs/core/conversation-flows/route-dsl.md +45 -22
  164. package/docs/core/conversation-flows/routes.md +74 -18
  165. package/docs/core/conversation-flows/step-transitions.md +3 -3
  166. package/docs/core/conversation-flows/steps.md +39 -15
  167. package/docs/core/routing/intelligent-routing.md +18 -9
  168. package/docs/core/tools/tool-definition.md +8 -8
  169. package/docs/core/tools/tool-execution.md +26 -26
  170. package/docs/core/tools/tool-scoping.md +5 -5
  171. package/docs/guides/getting-started/README.md +54 -32
  172. package/docs/guides/migration/README.md +72 -0
  173. package/docs/guides/migration/response-modal-refactor.md +518 -0
  174. package/examples/advanced-patterns/knowledge-based-agent.ts +37 -28
  175. package/examples/advanced-patterns/persistent-onboarding.ts +70 -41
  176. package/examples/advanced-patterns/route-lifecycle-hooks.ts +28 -2
  177. package/examples/advanced-patterns/streaming-responses.ts +197 -119
  178. package/examples/ai-providers/anthropic-integration.ts +40 -33
  179. package/examples/ai-providers/openai-integration.ts +25 -25
  180. package/examples/conversation-flows/completion-transitions.ts +36 -32
  181. package/examples/core-concepts/basic-agent.ts +76 -78
  182. package/examples/core-concepts/modern-streaming-api.ts +309 -0
  183. package/examples/core-concepts/schema-driven-extraction.ts +20 -16
  184. package/examples/core-concepts/session-management.ts +65 -53
  185. package/examples/integrations/database-integration.ts +49 -34
  186. package/examples/integrations/healthcare-integration.ts +96 -91
  187. package/examples/integrations/search-integration.ts +79 -82
  188. package/examples/integrations/server-session-management.ts +25 -17
  189. package/examples/persistence/database-persistence.ts +61 -45
  190. package/examples/persistence/memory-sessions.ts +52 -63
  191. package/examples/persistence/redis-persistence.ts +81 -95
  192. package/examples/tools/basic-tools.ts +73 -62
  193. package/examples/tools/data-enrichment-tools.ts +52 -44
  194. package/package.json +1 -1
  195. package/src/core/Agent.ts +396 -1499
  196. package/src/core/PersistenceManager.ts +51 -27
  197. package/src/core/PromptComposer.ts +1 -1
  198. package/src/core/ResponseEngine.ts +21 -19
  199. package/src/core/ResponseModal.ts +1722 -0
  200. package/src/core/ResponsePipeline.ts +175 -60
  201. package/src/core/Route.ts +58 -6
  202. package/src/core/RoutingEngine.ts +174 -27
  203. package/src/core/SessionManager.ts +32 -8
  204. package/src/core/Step.ts +20 -12
  205. package/src/core/ToolExecutor.ts +19 -5
  206. package/src/index.ts +11 -0
  207. package/src/types/agent.ts +47 -23
  208. package/src/types/ai.ts +1 -1
  209. package/src/types/index.ts +2 -0
  210. package/src/types/persistence.ts +0 -1
  211. package/src/types/route.ts +22 -16
  212. package/src/types/session.ts +6 -12
  213. package/src/types/tool.ts +15 -9
  214. package/src/utils/clone.ts +6 -8
  215. package/src/utils/history.ts +190 -27
  216. package/src/utils/index.ts +4 -0
  217. package/src/utils/session.ts +6 -31
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/utils/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/utils/session.ts"],"names":[],"mappings":"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"}
package/docs/README.md CHANGED
@@ -35,7 +35,7 @@ Welcome to the `@falai/agent` documentation! This comprehensive framework enable
35
35
 
36
36
  - **[Routes](./core/conversation-flows/routes.md)** - Route definition, lifecycle & completion
37
37
  - **[Steps](./core/conversation-flows/steps.md)** - Step configuration, data collection & validation
38
- - **[Data Collection](./core/conversation-flows/data-collection.md)** - Schema-driven data extraction
38
+ - **[Data Collection](./core/conversation-flows/data-collection.md)** - Agent-level schema-driven data extraction
39
39
 
40
40
  #### AI Integration
41
41
 
@@ -58,6 +58,7 @@ Welcome to the `@falai/agent` documentation! This comprehensive framework enable
58
58
 
59
59
  - **[Building Agents](./guides/building-agents/)** - Complete agent construction patterns
60
60
  - **[Advanced Patterns](./guides/advanced-patterns/)** - Complex use cases & integrations
61
+ - **[Migration Guides](./guides/migration/)** - Upgrade guides for major changes
61
62
  - **[API Reference](./api/README.md)** - Complete API documentation
62
63
 
63
64
  ## 🎯 Quick Links
@@ -74,7 +75,7 @@ Welcome to the `@falai/agent` documentation! This comprehensive framework enable
74
75
  → See [Route DSL](./core/conversation-flows/route-dsl.md), [Intelligent Routing](./core/routing/intelligent-routing.md), and [Step Transitions](./core/conversation-flows/step-transitions.md)
75
76
 
76
77
  **🎯 Collecting structured data?**
77
- → Learn [Data Collection](./core/conversation-flows/data-collection.md) and [Schema-Driven Extraction](../examples/core-concepts/schema-driven-extraction.ts)
78
+ → Learn [Agent-Level Data Collection](./core/conversation-flows/data-collection.md) and [Schema-Driven Extraction](../examples/core-concepts/schema-driven-extraction.ts)
78
79
 
79
80
  **🔧 Working with tools?**
80
81
  → See [Tool Definition](./core/tools/tool-definition.md), [Tool Execution](./core/tools/tool-execution.md), and [Tool Scoping](./core/tools/tool-scoping.md)
@@ -89,11 +90,11 @@ Welcome to the `@falai/agent` documentation! This comprehensive framework enable
89
90
 
90
91
  - **Agent Architecture**: [Agent](./core/agent/README.md) | [Context](./core/agent/context-management.md) | [Sessions](./core/agent/session-management.md)
91
92
  - **AI Routing System**: [Intelligent Routing](./core/routing/intelligent-routing.md) | [Route DSL](./core/conversation-flows/route-dsl.md) | [Step Transitions](./core/conversation-flows/step-transitions.md)
92
- - **Conversation Flows**: [Routes](./core/conversation-flows/routes.md) | [Steps](./core/conversation-flows/steps.md) | [Data Collection](./core/conversation-flows/data-collection.md)
93
+ - **Conversation Flows**: [Routes](./core/conversation-flows/routes.md) | [Steps](./core/conversation-flows/steps.md) | [Agent-Level Data Collection](./core/conversation-flows/data-collection.md)
93
94
  - **AI Integration**: [Providers](./core/ai-integration/providers.md) | [Prompts](./core/ai-integration/prompt-composition.md) | [Responses](./core/ai-integration/response-processing.md)
94
95
  - **Tools & Execution**: [Tool Definition](./core/tools/tool-definition.md) | [Tool Execution](./core/tools/tool-execution.md) | [Tool Scoping](./core/tools/tool-scoping.md)
95
96
  - **Persistence**: [Session Storage](./core/persistence/session-storage.md) | [Adapters](./core/persistence/adapters.md)
96
- - **Advanced**: [Building Agents](./guides/building-agents/) | [Patterns](./guides/advanced-patterns/) | [API Reference](./api/)
97
+ - **Advanced**: [Building Agents](./guides/building-agents/) | [Patterns](./guides/advanced-patterns/) | [Migration](./guides/migration/) | [API Reference](./api/)
97
98
 
98
99
  ## 💡 Examples by Domain
99
100
 
@@ -17,14 +17,14 @@ Complete API documentation for `@falai/agent`. This framework provides a strongl
17
17
 
18
18
  ## Core Classes
19
19
 
20
- ### `Agent<TContext>`
20
+ ### `Agent<TContext, TData>`
21
21
 
22
- Main agent class for managing conversational AI.
22
+ Main agent class for managing conversational AI with agent-level data collection.
23
23
 
24
24
  #### Constructor
25
25
 
26
26
  ```typescript
27
- new Agent<TContext>(options: AgentOptions<TContext>)
27
+ new Agent<TContext, TData>(options: AgentOptions<TContext, TData>)
28
28
  ```
29
29
 
30
30
  See [Agent](./AGENT.md) for full details.
@@ -33,7 +33,38 @@ See [Agent](./AGENT.md) for full details.
33
33
 
34
34
  ##### `createRoute(options: RouteOptions): Route`
35
35
 
36
- Creates a new conversation route.
36
+ Creates a new conversation route with required fields specification.
37
+
38
+ ##### `getCollectedData(): Partial<TData>`
39
+
40
+ Gets the current agent-level collected data.
41
+
42
+ ```typescript
43
+ const data = agent.getCollectedData();
44
+ console.log(data); // { customerName: "John", email: "john@example.com" }
45
+ ```
46
+
47
+ ##### `updateCollectedData(updates: Partial<TData>): Promise<void>`
48
+
49
+ Updates agent-level collected data and triggers validation.
50
+
51
+ ```typescript
52
+ await agent.updateCollectedData({
53
+ customerId: "CUST-12345",
54
+ priority: "high"
55
+ });
56
+ ```
57
+
58
+ ##### `validateData(data: Partial<TData>): ValidationResult`
59
+
60
+ Validates data against the agent-level schema.
61
+
62
+ ```typescript
63
+ const validation = agent.validateData({ email: "invalid-email" });
64
+ if (!validation.valid) {
65
+ console.log(validation.errors); // Detailed validation errors
66
+ }
67
+ ```
37
68
 
38
69
  ##### `createTerm(term: Term): this`
39
70
 
@@ -47,6 +78,8 @@ Adds a behavioral guideline. Returns `this` for chaining.
47
78
 
48
79
  Generates an AI response with session step management, tool execution, data extraction, and intelligent routing.
49
80
 
81
+ **Note:** This method now delegates to the internal `ResponseModal` class for improved architecture and maintainability.
82
+
50
83
  **Enhanced Response Pipeline:**
51
84
 
52
85
  1. **Tool Execution** - Execute tools if current step has `tool` (enriches context before AI response)
@@ -423,6 +456,8 @@ See also: [Custom Database Integration Example](../examples/custom-database-pers
423
456
 
424
457
  Generates an AI response as a real-time stream for better user experience. Provides the same structured output as `respond()` but delivers it incrementally.
425
458
 
459
+ **Note:** This method now delegates to the internal `ResponseModal` class for improved architecture and maintainability.
460
+
426
461
  ```typescript
427
462
  interface StreamChunk {
428
463
  /** The incremental text delta */
@@ -484,6 +519,68 @@ for await (const chunk of agent.respondStream({ history, session })) {
484
519
  }
485
520
  ```
486
521
 
522
+ ##### `stream(message?: string, options?: StreamOptions<TContext>): AsyncGenerator<AgentResponseStreamChunk<TData>>`
523
+
524
+ **NEW:** Modern streaming API that provides a simple interface similar to `chat()` but returns a stream. This is the recommended way to implement streaming responses.
525
+
526
+ ```typescript
527
+ interface StreamOptions<TContext = unknown> {
528
+ contextOverride?: Partial<TContext>;
529
+ signal?: AbortSignal;
530
+ history?: History; // Optional: override session history
531
+ }
532
+ ```
533
+
534
+ **Key Features:**
535
+
536
+ - 🎯 **Simple Interface**: Just `agent.stream("message")` - no complex parameters
537
+ - 🔄 **Automatic Session Management**: Handles conversation history automatically
538
+ - 🌊 **Real-time Streaming**: Same performance as `respondStream()` but easier to use
539
+ - 🛑 **Cancellable**: Supports AbortSignal for cancellation
540
+
541
+ **Example:**
542
+
543
+ ```typescript
544
+ // Simple streaming - automatically manages session history
545
+ for await (const chunk of agent.stream("Hello, how are you?")) {
546
+ if (chunk.delta) {
547
+ process.stdout.write(chunk.delta);
548
+ }
549
+
550
+ if (chunk.done) {
551
+ console.log("\n✅ Stream complete!");
552
+ // Session history is automatically updated
553
+ }
554
+ }
555
+
556
+ // With cancellation
557
+ const controller = new AbortController();
558
+ setTimeout(() => controller.abort(), 5000); // Cancel after 5s
559
+
560
+ for await (const chunk of agent.stream("Tell me a long story", {
561
+ signal: controller.signal
562
+ })) {
563
+ process.stdout.write(chunk.delta);
564
+ }
565
+ ```
566
+
567
+ **Migration from `respondStream()`:**
568
+
569
+ ```typescript
570
+ // Old way (still supported)
571
+ for await (const chunk of agent.respondStream({
572
+ history: agent.session.getHistory(),
573
+ session: await agent.session.getOrCreate()
574
+ })) {
575
+ // Handle chunk
576
+ }
577
+
578
+ // New way (recommended)
579
+ for await (const chunk of agent.stream("Your message")) {
580
+ // Handle chunk - session management is automatic
581
+ }
582
+ ```
583
+
487
584
  **With Cancellation:**
488
585
 
489
586
  ```typescript
@@ -551,6 +648,100 @@ Agent's identity template (readonly).
551
648
 
552
649
  ---
553
650
 
651
+ ### `ResponseModal<TContext, TData>`
652
+
653
+ **NEW:** Internal class that handles all response generation logic for the Agent. This class centralizes response processing, provides unified streaming and non-streaming APIs, and improves maintainability.
654
+
655
+ **Note:** This class is primarily used internally by the Agent class. Most users should use the Agent's response methods (`respond`, `respondStream`, `stream`, `chat`) rather than accessing ResponseModal directly.
656
+
657
+ #### Constructor
658
+
659
+ ```typescript
660
+ new ResponseModal<TContext, TData>(
661
+ agent: Agent<TContext, TData>,
662
+ options?: ResponseModalOptions
663
+ )
664
+
665
+ interface ResponseModalOptions {
666
+ /** Maximum number of tool loops allowed during response generation */
667
+ maxToolLoops?: number;
668
+ /** Enable automatic session saving after response generation */
669
+ enableAutoSave?: boolean;
670
+ /** Enable debug mode for detailed logging */
671
+ debugMode?: boolean;
672
+ }
673
+ ```
674
+
675
+ #### Methods
676
+
677
+ ##### `respond(params: RespondParams<TContext, TData>): Promise<AgentResponse<TData>>`
678
+
679
+ Generates a non-streaming response using unified logic. This method consolidates all response generation logic including routing, tool execution, and data collection.
680
+
681
+ ##### `respondStream(params: RespondParams<TContext, TData>): AsyncGenerator<AgentResponseStreamChunk<TData>>`
682
+
683
+ Generates a streaming response using unified logic. Provides the same functionality as `respond()` but delivers results incrementally.
684
+
685
+ ##### `stream(message?: string, options?: StreamOptions<TContext>): AsyncGenerator<AgentResponseStreamChunk<TData>>`
686
+
687
+ Modern streaming API with automatic session management. This is the recommended way to implement streaming responses.
688
+
689
+ ```typescript
690
+ // Simple usage
691
+ for await (const chunk of responseModal.stream("Hello")) {
692
+ console.log(chunk.delta);
693
+ }
694
+
695
+ // With options
696
+ for await (const chunk of responseModal.stream("Hello", {
697
+ contextOverride: { userId: "123" },
698
+ signal: abortController.signal
699
+ })) {
700
+ console.log(chunk.delta);
701
+ }
702
+ ```
703
+
704
+ ##### `generate(message?: string, options?: GenerateOptions<TContext>): Promise<AgentResponse<TData>>`
705
+
706
+ Modern non-streaming API equivalent to `chat()` but more explicit. Provides automatic session management for non-streaming responses.
707
+
708
+ ```typescript
709
+ // Simple usage
710
+ const response = await responseModal.generate("Hello");
711
+ console.log(response.message);
712
+
713
+ // With options
714
+ const response = await responseModal.generate("Hello", {
715
+ contextOverride: { userId: "123" }
716
+ });
717
+ ```
718
+
719
+ #### Error Handling
720
+
721
+ ResponseModal includes comprehensive error handling with the `ResponseGenerationError` class:
722
+
723
+ ```typescript
724
+ try {
725
+ const response = await responseModal.respond(params);
726
+ } catch (error) {
727
+ if (ResponseGenerationError.isResponseGenerationError(error)) {
728
+ console.log("Response generation failed:", error.message);
729
+ console.log("Phase:", error.details?.phase);
730
+ console.log("Original error:", error.details?.originalError);
731
+ }
732
+ }
733
+ ```
734
+
735
+ #### Architecture Benefits
736
+
737
+ - **Separation of Concerns**: Agent focuses on configuration and orchestration, ResponseModal handles response generation
738
+ - **Unified Logic**: Both streaming and non-streaming responses use the same underlying logic
739
+ - **Modern APIs**: Provides simple `stream()` and `generate()` methods alongside legacy compatibility
740
+ - **Error Handling**: Comprehensive error handling with detailed context
741
+ - **Performance**: Optimized response pipeline with minimal duplication
742
+
743
+ ---
744
+
554
745
  ### `Route`
555
746
 
556
747
  Represents a conversation flow with steps and transitions.
@@ -6,6 +6,7 @@ Complete API documentation for `@falai/agent`. This framework provides a strongl
6
6
 
7
7
  - [Core Classes](#core-classes)
8
8
  - [Agent](#agent)
9
+ - [ResponseModal](#responsemodal)
9
10
  - [Route](#route)
10
11
  - [Step](#step)
11
12
  - [RoutingEngine](#routingengine)
@@ -23,12 +24,12 @@ Complete API documentation for `@falai/agent`. This framework provides a strongl
23
24
 
24
25
  ### Agent
25
26
 
26
- The central orchestrator class that manages conversation flow, routing, and tool execution.
27
+ The central orchestrator class that manages conversation flow, routing, tool execution, and agent-level data collection.
27
28
 
28
29
  #### Constructor
29
30
 
30
31
  ```typescript
31
- new Agent<TContext = unknown>(options: AgentOptions<TContext>)
32
+ new Agent<TContext = unknown, TData = unknown>(options: AgentOptions<TContext, TData>)
32
33
  ```
33
34
 
34
35
  #### Properties
@@ -44,10 +45,10 @@ new Agent<TContext = unknown>(options: AgentOptions<TContext>)
44
45
  ##### Route Management
45
46
 
46
47
  ```typescript
47
- createRoute<TData = unknown>(options: RouteOptions<TContext, TData>): Route<TContext, TData>
48
+ createRoute(options: RouteOptions<TContext, TData>): Route<TContext, TData>
48
49
  ```
49
50
 
50
- Creates a new conversation route with the specified options.
51
+ Creates a new conversation route with required fields specification that references the agent-level schema.
51
52
 
52
53
  ##### Context Management
53
54
 
@@ -63,6 +64,26 @@ getContext(): Promise<TContext | undefined>
63
64
 
64
65
  Gets current context, fetching from provider if configured.
65
66
 
67
+ ##### Agent-Level Data Management
68
+
69
+ ```typescript
70
+ getCollectedData(): Partial<TData>
71
+ ```
72
+
73
+ Gets the current agent-level collected data.
74
+
75
+ ```typescript
76
+ updateCollectedData(updates: Partial<TData>): Promise<void>
77
+ ```
78
+
79
+ Updates agent-level collected data and triggers validation and lifecycle hooks.
80
+
81
+ ```typescript
82
+ validateData(data: Partial<TData>): ValidationResult
83
+ ```
84
+
85
+ Validates data against the agent-level schema, returning detailed validation results.
86
+
66
87
  ##### Response Generation
67
88
 
68
89
  ```typescript
@@ -97,7 +118,20 @@ respondStream(params: {
97
118
  }>
98
119
  ```
99
120
 
100
- Generates a streaming response with real-time updates.
121
+ Generates a streaming response with real-time updates. **Note:** Now delegates to internal ResponseModal class.
122
+
123
+ ```typescript
124
+ stream(message?: string, options?: StreamOptions<TContext>): AsyncGenerator<AgentResponseStreamChunk<TData>>
125
+ ```
126
+
127
+ **NEW:** Modern streaming API with automatic session management. Recommended for new implementations.
128
+
129
+ ```typescript
130
+ // Simple streaming
131
+ for await (const chunk of agent.stream("Hello")) {
132
+ console.log(chunk.delta);
133
+ }
134
+ ```
101
135
 
102
136
  ##### Tool Management
103
137
 
@@ -148,9 +182,60 @@ hasPersistence(): boolean
148
182
 
149
183
  ---
150
184
 
185
+ ### ResponseModal
186
+
187
+ **NEW:** Internal class that centralizes all response generation logic for improved architecture and maintainability.
188
+
189
+ #### Constructor
190
+
191
+ ```typescript
192
+ new ResponseModal<TContext = unknown, TData = unknown>(
193
+ agent: Agent<TContext, TData>,
194
+ options?: ResponseModalOptions
195
+ )
196
+ ```
197
+
198
+ #### Methods
199
+
200
+ ##### Modern APIs (Recommended)
201
+
202
+ ```typescript
203
+ stream(message?: string, options?: StreamOptions<TContext>): AsyncGenerator<AgentResponseStreamChunk<TData>>
204
+ generate(message?: string, options?: GenerateOptions<TContext>): Promise<AgentResponse<TData>>
205
+ ```
206
+
207
+ Modern streaming and non-streaming APIs with automatic session management.
208
+
209
+ ##### Legacy APIs (Backward Compatible)
210
+
211
+ ```typescript
212
+ respond(params: RespondParams<TContext, TData>): Promise<AgentResponse<TData>>
213
+ respondStream(params: RespondParams<TContext, TData>): AsyncGenerator<AgentResponseStreamChunk<TData>>
214
+ ```
215
+
216
+ Legacy APIs that maintain full backward compatibility with existing code.
217
+
218
+ ##### Error Handling
219
+
220
+ ```typescript
221
+ ResponseGenerationError: Error class for response-specific errors
222
+ ```
223
+
224
+ Comprehensive error handling with detailed context and phase information.
225
+
226
+ #### Key Features
227
+
228
+ - **Unified Logic**: Both streaming and non-streaming use the same underlying logic
229
+ - **Modern APIs**: Simple `stream()` and `generate()` methods for new code
230
+ - **Backward Compatibility**: Existing `respond()` and `respondStream()` methods work unchanged
231
+ - **Error Handling**: Detailed error context with phase and original error information
232
+ - **Performance**: Optimized response pipeline with minimal code duplication
233
+
234
+ ---
235
+
151
236
  ### Route
152
237
 
153
- Represents a conversational journey with structured steps and data collection.
238
+ Represents a conversational journey with required fields specification and steps that collect data into the agent-level schema.
154
239
 
155
240
  #### Constructor
156
241
 
@@ -177,6 +262,26 @@ getStep(stepId: string): Step<TContext, TData> | undefined
177
262
  getAllSteps(): Step<TContext, TData>[]
178
263
  ```
179
264
 
265
+ ##### Route Completion Logic
266
+
267
+ ```typescript
268
+ isComplete(data: Partial<TData>): boolean
269
+ ```
270
+
271
+ Checks if the route is complete based on agent-level data.
272
+
273
+ ```typescript
274
+ getMissingRequiredFields(data: Partial<TData>): (keyof TData)[]
275
+ ```
276
+
277
+ Returns the fields still needed for route completion.
278
+
279
+ ```typescript
280
+ getCompletionProgress(data: Partial<TData>): number
281
+ ```
282
+
283
+ Returns completion progress as a number between 0 and 1.
284
+
180
285
  ##### Data Collection
181
286
 
182
287
  ```typescript
@@ -559,23 +664,28 @@ getSnapshot(): { sessions: SessionData[]; messages: MessageData[] }
559
664
  ### Core Types
560
665
 
561
666
  ```typescript
562
- interface AgentOptions<TContext = unknown> {
667
+ interface AgentOptions<TContext = unknown, TData = unknown> {
563
668
  name: string;
564
669
  provider: AiProvider;
565
670
  description?: string;
566
671
  goal?: string;
567
- personality?: Template<TContext>;
568
- identity?: Template<TContext>;
672
+ personality?: Template<TContext, TData>;
673
+ identity?: Template<TContext, TData>;
569
674
  context?: TContext;
570
675
  contextProvider?: ContextProvider<TContext>;
571
- hooks?: ContextLifecycleHooks<TContext>;
676
+
677
+ // NEW: Agent-level data schema and initial data
678
+ schema?: StructuredSchema;
679
+ initialData?: Partial<TData>;
680
+
681
+ hooks?: ContextLifecycleHooks<TContext, TData>;
572
682
  debug?: boolean;
573
683
  session?: SessionState;
574
684
  persistence?: PersistenceConfig;
575
685
  terms?: Term<TContext>[];
576
686
  guidelines?: Guideline<TContext>[];
577
- tools?: Tool<TContext, unknown[], unknown, unknown>[];
578
- routes?: RouteOptions<TContext, unknown>[];
687
+ tools?: Tool<TContext, unknown[], unknown, TData>[];
688
+ routes?: RouteOptions<TContext, TData>[];
579
689
  knowledgeBase?: Record<string, unknown>;
580
690
  }
581
691
 
@@ -588,7 +698,14 @@ interface RouteOptions<TContext = unknown, TData = unknown> {
588
698
  conditions?: Template<TContext, TData>[];
589
699
  rules?: Template<TContext, TData>[];
590
700
  prohibitions?: Template<TContext, TData>[];
591
- schema?: StructuredSchema;
701
+
702
+ // NEW: Required fields for route completion (replaces schema)
703
+ requiredFields?: (keyof TData)[];
704
+ optionalFields?: (keyof TData)[];
705
+
706
+ // REMOVED: schema (now at agent level)
707
+ // schema?: StructuredSchema;
708
+
592
709
  initialData?: Partial<TData>;
593
710
  steps?: StepOptions<TContext, TData>[];
594
711
  initialStep?: Omit<StepOptions<TContext, TData>, "step">;
@@ -795,4 +912,106 @@ generateStepId(routeId: string, description?: string): string
795
912
  generateToolId(name: string): string
796
913
  ```
797
914
 
915
+ ## Agent-Level Data Collection Example
916
+
917
+ Here's a comprehensive example showing the new agent-level data collection architecture:
918
+
919
+ ```typescript
920
+ import { Agent, OpenAIProvider } from "@falai/agent";
921
+
922
+ // Define comprehensive agent-level data interface
923
+ interface CustomerServiceData {
924
+ // Customer identification
925
+ customerId?: string;
926
+ customerName?: string;
927
+ email?: string;
928
+ phone?: string;
929
+
930
+ // Issue tracking
931
+ issueType?: 'booking' | 'billing' | 'technical' | 'other';
932
+ issueDescription?: string;
933
+ priority?: 'low' | 'medium' | 'high';
934
+
935
+ // Feedback
936
+ rating?: number;
937
+ comments?: string;
938
+ recommendToFriend?: boolean;
939
+ }
940
+
941
+ // Create agent with centralized schema
942
+ const agent = new Agent<{}, CustomerServiceData>({
943
+ name: "Customer Service Agent",
944
+ provider: new OpenAIProvider({ apiKey: process.env.OPENAI_API_KEY, model: "gpt-4" }),
945
+
946
+ // Agent-level schema defines all possible data fields
947
+ schema: {
948
+ type: "object",
949
+ properties: {
950
+ customerId: { type: "string" },
951
+ customerName: { type: "string" },
952
+ email: { type: "string", format: "email" },
953
+ phone: { type: "string" },
954
+ issueType: { type: "string", enum: ["booking", "billing", "technical", "other"] },
955
+ issueDescription: { type: "string" },
956
+ priority: { type: "string", enum: ["low", "medium", "high"] },
957
+ rating: { type: "number", minimum: 1, maximum: 5 },
958
+ comments: { type: "string" },
959
+ recommendToFriend: { type: "boolean" }
960
+ }
961
+ },
962
+
963
+ // Agent-level data validation and enrichment
964
+ hooks: {
965
+ onDataUpdate: async (data, previousData) => {
966
+ // Auto-set priority based on issue type
967
+ if (data.issueType === 'billing' && !data.priority) {
968
+ data.priority = 'high';
969
+ }
970
+
971
+ // Enrich customer data
972
+ if (data.customerName && !data.customerId) {
973
+ data.customerId = await lookupCustomerId(data.customerName);
974
+ }
975
+
976
+ return data;
977
+ }
978
+ }
979
+ });
980
+
981
+ // Routes specify required fields instead of schemas
982
+ const supportRoute = agent.createRoute({
983
+ title: "Customer Support",
984
+ requiredFields: ["customerName", "email", "issueType", "issueDescription"],
985
+ optionalFields: ["phone", "priority"],
986
+
987
+ initialStep: {
988
+ prompt: "I'm here to help with your issue. Can you tell me your name and email?",
989
+ collect: ["customerName", "email"]
990
+ }
991
+ });
992
+
993
+ const feedbackRoute = agent.createRoute({
994
+ title: "Feedback Collection",
995
+ requiredFields: ["customerName", "email", "rating"],
996
+ optionalFields: ["comments", "recommendToFriend"],
997
+
998
+ initialStep: {
999
+ prompt: "I'd love to get your feedback. What's your name and email?",
1000
+ collect: ["customerName", "email"]
1001
+ }
1002
+ });
1003
+
1004
+ // Cross-route data sharing example
1005
+ const response1 = await agent.respond("Hi, I'm John Doe, email john@example.com, I have a billing issue");
1006
+ // Agent data: { customerName: "John Doe", email: "john@example.com", issueType: "billing" }
1007
+
1008
+ const response2 = await agent.respond("Actually, I want to leave feedback instead. I'd rate you 5 stars.");
1009
+ // Feedback route completes immediately: already has name, email, and now rating
1010
+ // { customerName: "John Doe", email: "john@example.com", rating: 5 }
1011
+
1012
+ // Check route completion
1013
+ console.log(feedbackRoute.isComplete(agent.getCollectedData())); // true
1014
+ console.log(feedbackRoute.getCompletionProgress(agent.getCollectedData())); // 1.0
1015
+ ```
1016
+
798
1017
  This API reference covers the complete @falai/agent framework. For more detailed examples and usage patterns, see the [examples directory](../../examples/) and [guides](../../docs/guides/).