@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.
- package/README.md +34 -22
- package/dist/cjs/src/core/Agent.d.ts +77 -59
- package/dist/cjs/src/core/Agent.d.ts.map +1 -1
- package/dist/cjs/src/core/Agent.js +284 -1060
- package/dist/cjs/src/core/Agent.js.map +1 -1
- package/dist/cjs/src/core/PersistenceManager.d.ts.map +1 -1
- package/dist/cjs/src/core/PersistenceManager.js +48 -25
- package/dist/cjs/src/core/PersistenceManager.js.map +1 -1
- package/dist/cjs/src/core/PromptComposer.d.ts +1 -1
- package/dist/cjs/src/core/PromptComposer.d.ts.map +1 -1
- package/dist/cjs/src/core/PromptComposer.js.map +1 -1
- package/dist/cjs/src/core/ResponseEngine.d.ts +13 -12
- package/dist/cjs/src/core/ResponseEngine.d.ts.map +1 -1
- package/dist/cjs/src/core/ResponseEngine.js +4 -4
- package/dist/cjs/src/core/ResponseEngine.js.map +1 -1
- package/dist/cjs/src/core/ResponseModal.d.ts +205 -0
- package/dist/cjs/src/core/ResponseModal.d.ts.map +1 -0
- package/dist/cjs/src/core/ResponseModal.js +1328 -0
- package/dist/cjs/src/core/ResponseModal.js.map +1 -0
- package/dist/cjs/src/core/ResponsePipeline.d.ts +66 -38
- package/dist/cjs/src/core/ResponsePipeline.d.ts.map +1 -1
- package/dist/cjs/src/core/ResponsePipeline.js +72 -4
- package/dist/cjs/src/core/ResponsePipeline.js.map +1 -1
- package/dist/cjs/src/core/Route.d.ts +24 -5
- package/dist/cjs/src/core/Route.d.ts.map +1 -1
- package/dist/cjs/src/core/Route.js +45 -1
- package/dist/cjs/src/core/Route.js.map +1 -1
- package/dist/cjs/src/core/RoutingEngine.d.ts +31 -6
- package/dist/cjs/src/core/RoutingEngine.d.ts.map +1 -1
- package/dist/cjs/src/core/RoutingEngine.js +113 -9
- package/dist/cjs/src/core/RoutingEngine.js.map +1 -1
- package/dist/cjs/src/core/SessionManager.d.ts +14 -4
- package/dist/cjs/src/core/SessionManager.d.ts.map +1 -1
- package/dist/cjs/src/core/SessionManager.js +25 -5
- package/dist/cjs/src/core/SessionManager.js.map +1 -1
- package/dist/cjs/src/core/Step.d.ts +10 -10
- package/dist/cjs/src/core/Step.d.ts.map +1 -1
- package/dist/cjs/src/core/Step.js.map +1 -1
- package/dist/cjs/src/core/ToolExecutor.d.ts +4 -2
- package/dist/cjs/src/core/ToolExecutor.d.ts.map +1 -1
- package/dist/cjs/src/core/ToolExecutor.js +13 -3
- package/dist/cjs/src/core/ToolExecutor.js.map +1 -1
- package/dist/cjs/src/index.d.ts +3 -1
- package/dist/cjs/src/index.d.ts.map +1 -1
- package/dist/cjs/src/index.js +7 -1
- package/dist/cjs/src/index.js.map +1 -1
- package/dist/cjs/src/types/agent.d.ts +42 -21
- package/dist/cjs/src/types/agent.d.ts.map +1 -1
- package/dist/cjs/src/types/agent.js.map +1 -1
- package/dist/cjs/src/types/ai.d.ts +1 -1
- package/dist/cjs/src/types/ai.d.ts.map +1 -1
- package/dist/cjs/src/types/index.d.ts +1 -1
- package/dist/cjs/src/types/index.d.ts.map +1 -1
- package/dist/cjs/src/types/index.js.map +1 -1
- package/dist/cjs/src/types/persistence.d.ts +0 -1
- package/dist/cjs/src/types/persistence.d.ts.map +1 -1
- package/dist/cjs/src/types/route.d.ts +22 -16
- package/dist/cjs/src/types/route.d.ts.map +1 -1
- package/dist/cjs/src/types/session.d.ts +6 -11
- package/dist/cjs/src/types/session.d.ts.map +1 -1
- package/dist/cjs/src/types/tool.d.ts +12 -6
- package/dist/cjs/src/types/tool.d.ts.map +1 -1
- package/dist/cjs/src/utils/clone.d.ts.map +1 -1
- package/dist/cjs/src/utils/clone.js +0 -4
- package/dist/cjs/src/utils/clone.js.map +1 -1
- package/dist/cjs/src/utils/history.d.ts +30 -1
- package/dist/cjs/src/utils/history.d.ts.map +1 -1
- package/dist/cjs/src/utils/history.js +169 -23
- package/dist/cjs/src/utils/history.js.map +1 -1
- package/dist/cjs/src/utils/index.d.ts +1 -1
- package/dist/cjs/src/utils/index.d.ts.map +1 -1
- package/dist/cjs/src/utils/index.js +5 -1
- package/dist/cjs/src/utils/index.js.map +1 -1
- package/dist/cjs/src/utils/session.d.ts +2 -2
- package/dist/cjs/src/utils/session.d.ts.map +1 -1
- package/dist/cjs/src/utils/session.js +6 -26
- package/dist/cjs/src/utils/session.js.map +1 -1
- package/dist/src/core/Agent.d.ts +77 -59
- package/dist/src/core/Agent.d.ts.map +1 -1
- package/dist/src/core/Agent.js +285 -1061
- package/dist/src/core/Agent.js.map +1 -1
- package/dist/src/core/PersistenceManager.d.ts.map +1 -1
- package/dist/src/core/PersistenceManager.js +48 -25
- package/dist/src/core/PersistenceManager.js.map +1 -1
- package/dist/src/core/PromptComposer.d.ts +1 -1
- package/dist/src/core/PromptComposer.d.ts.map +1 -1
- package/dist/src/core/PromptComposer.js.map +1 -1
- package/dist/src/core/ResponseEngine.d.ts +13 -12
- package/dist/src/core/ResponseEngine.d.ts.map +1 -1
- package/dist/src/core/ResponseEngine.js +4 -4
- package/dist/src/core/ResponseEngine.js.map +1 -1
- package/dist/src/core/ResponseModal.d.ts +205 -0
- package/dist/src/core/ResponseModal.d.ts.map +1 -0
- package/dist/src/core/ResponseModal.js +1323 -0
- package/dist/src/core/ResponseModal.js.map +1 -0
- package/dist/src/core/ResponsePipeline.d.ts +66 -38
- package/dist/src/core/ResponsePipeline.d.ts.map +1 -1
- package/dist/src/core/ResponsePipeline.js +72 -4
- package/dist/src/core/ResponsePipeline.js.map +1 -1
- package/dist/src/core/Route.d.ts +24 -5
- package/dist/src/core/Route.d.ts.map +1 -1
- package/dist/src/core/Route.js +45 -1
- package/dist/src/core/Route.js.map +1 -1
- package/dist/src/core/RoutingEngine.d.ts +31 -6
- package/dist/src/core/RoutingEngine.d.ts.map +1 -1
- package/dist/src/core/RoutingEngine.js +113 -9
- package/dist/src/core/RoutingEngine.js.map +1 -1
- package/dist/src/core/SessionManager.d.ts +14 -4
- package/dist/src/core/SessionManager.d.ts.map +1 -1
- package/dist/src/core/SessionManager.js +25 -5
- package/dist/src/core/SessionManager.js.map +1 -1
- package/dist/src/core/Step.d.ts +10 -10
- package/dist/src/core/Step.d.ts.map +1 -1
- package/dist/src/core/Step.js.map +1 -1
- package/dist/src/core/ToolExecutor.d.ts +4 -2
- package/dist/src/core/ToolExecutor.d.ts.map +1 -1
- package/dist/src/core/ToolExecutor.js +13 -3
- package/dist/src/core/ToolExecutor.js.map +1 -1
- package/dist/src/index.d.ts +3 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/types/agent.d.ts +42 -21
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/agent.js.map +1 -1
- package/dist/src/types/ai.d.ts +1 -1
- package/dist/src/types/ai.d.ts.map +1 -1
- package/dist/src/types/index.d.ts +1 -1
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/index.js.map +1 -1
- package/dist/src/types/persistence.d.ts +0 -1
- package/dist/src/types/persistence.d.ts.map +1 -1
- package/dist/src/types/route.d.ts +22 -16
- package/dist/src/types/route.d.ts.map +1 -1
- package/dist/src/types/session.d.ts +6 -11
- package/dist/src/types/session.d.ts.map +1 -1
- package/dist/src/types/tool.d.ts +12 -6
- package/dist/src/types/tool.d.ts.map +1 -1
- package/dist/src/utils/clone.d.ts.map +1 -1
- package/dist/src/utils/clone.js +0 -4
- package/dist/src/utils/clone.js.map +1 -1
- package/dist/src/utils/history.d.ts +30 -1
- package/dist/src/utils/history.d.ts.map +1 -1
- package/dist/src/utils/history.js +165 -23
- package/dist/src/utils/history.js.map +1 -1
- package/dist/src/utils/index.d.ts +1 -1
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/index.js +1 -1
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/utils/session.d.ts +2 -2
- package/dist/src/utils/session.d.ts.map +1 -1
- package/dist/src/utils/session.js +6 -26
- package/dist/src/utils/session.js.map +1 -1
- package/docs/README.md +5 -4
- package/docs/api/README.md +195 -4
- package/docs/api/overview.md +232 -13
- package/docs/core/agent/README.md +162 -17
- package/docs/core/agent/context-management.md +39 -15
- package/docs/core/agent/session-management.md +49 -16
- package/docs/core/ai-integration/prompt-composition.md +38 -14
- package/docs/core/ai-integration/response-processing.md +28 -17
- package/docs/core/conversation-flows/data-collection.md +103 -25
- package/docs/core/conversation-flows/route-dsl.md +45 -22
- package/docs/core/conversation-flows/routes.md +74 -18
- package/docs/core/conversation-flows/step-transitions.md +3 -3
- package/docs/core/conversation-flows/steps.md +39 -15
- package/docs/core/routing/intelligent-routing.md +18 -9
- package/docs/core/tools/tool-definition.md +8 -8
- package/docs/core/tools/tool-execution.md +26 -26
- package/docs/core/tools/tool-scoping.md +5 -5
- package/docs/guides/getting-started/README.md +54 -32
- package/docs/guides/migration/README.md +72 -0
- package/docs/guides/migration/response-modal-refactor.md +518 -0
- package/examples/advanced-patterns/knowledge-based-agent.ts +37 -28
- package/examples/advanced-patterns/persistent-onboarding.ts +70 -41
- package/examples/advanced-patterns/route-lifecycle-hooks.ts +28 -2
- package/examples/advanced-patterns/streaming-responses.ts +197 -119
- package/examples/ai-providers/anthropic-integration.ts +40 -33
- package/examples/ai-providers/openai-integration.ts +25 -25
- package/examples/conversation-flows/completion-transitions.ts +36 -32
- package/examples/core-concepts/basic-agent.ts +76 -78
- package/examples/core-concepts/modern-streaming-api.ts +309 -0
- package/examples/core-concepts/schema-driven-extraction.ts +20 -16
- package/examples/core-concepts/session-management.ts +65 -53
- package/examples/integrations/database-integration.ts +49 -34
- package/examples/integrations/healthcare-integration.ts +96 -91
- package/examples/integrations/search-integration.ts +79 -82
- package/examples/integrations/server-session-management.ts +25 -17
- package/examples/persistence/database-persistence.ts +61 -45
- package/examples/persistence/memory-sessions.ts +52 -63
- package/examples/persistence/redis-persistence.ts +81 -95
- package/examples/tools/basic-tools.ts +73 -62
- package/examples/tools/data-enrichment-tools.ts +52 -44
- package/package.json +1 -1
- package/src/core/Agent.ts +396 -1499
- package/src/core/PersistenceManager.ts +51 -27
- package/src/core/PromptComposer.ts +1 -1
- package/src/core/ResponseEngine.ts +21 -19
- package/src/core/ResponseModal.ts +1722 -0
- package/src/core/ResponsePipeline.ts +175 -60
- package/src/core/Route.ts +58 -6
- package/src/core/RoutingEngine.ts +174 -27
- package/src/core/SessionManager.ts +32 -8
- package/src/core/Step.ts +20 -12
- package/src/core/ToolExecutor.ts +19 -5
- package/src/index.ts +11 -0
- package/src/types/agent.ts +47 -23
- package/src/types/ai.ts +1 -1
- package/src/types/index.ts +2 -0
- package/src/types/persistence.ts +0 -1
- package/src/types/route.ts +22 -16
- package/src/types/session.ts +6 -12
- package/src/types/tool.ts +15 -9
- package/src/utils/clone.ts +6 -8
- package/src/utils/history.ts +190 -27
- package/src/utils/index.ts +4 -0
- package/src/utils/session.ts +6 -31
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/utils/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAIpC;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,SAAkB,EAClB,QAA0C;IAE1C,MAAM,EAAE,GACN,SAAS,IAAI,WAAW,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAE9E,OAAO;QACL,EAAE;QACF,IAAI,EAAE,EAAoB
|
|
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)** -
|
|
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
|
|
package/docs/api/README.md
CHANGED
|
@@ -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.
|
package/docs/api/overview.md
CHANGED
|
@@ -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
|
|
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
|
|
48
|
+
createRoute(options: RouteOptions<TContext, TData>): Route<TContext, TData>
|
|
48
49
|
```
|
|
49
50
|
|
|
50
|
-
Creates a new conversation route with the
|
|
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
|
|
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
|
-
|
|
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,
|
|
578
|
-
routes?: RouteOptions<TContext,
|
|
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
|
-
|
|
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/).
|