@falai/agent 0.6.9 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -59
- package/dist/adapters/MemoryAdapter.js +2 -2
- package/dist/adapters/MemoryAdapter.js.map +1 -1
- package/dist/adapters/MongoAdapter.js +2 -2
- package/dist/adapters/MongoAdapter.js.map +1 -1
- package/dist/adapters/OpenSearchAdapter.js +7 -7
- package/dist/adapters/OpenSearchAdapter.js.map +1 -1
- package/dist/adapters/PostgreSQLAdapter.js +9 -9
- package/dist/adapters/PostgreSQLAdapter.js.map +1 -1
- package/dist/adapters/PrismaAdapter.js +3 -3
- package/dist/adapters/PrismaAdapter.js.map +1 -1
- package/dist/adapters/RedisAdapter.js +2 -2
- package/dist/adapters/RedisAdapter.js.map +1 -1
- package/dist/adapters/SQLiteAdapter.d.ts +3 -3
- package/dist/adapters/SQLiteAdapter.d.ts.map +1 -1
- package/dist/adapters/SQLiteAdapter.js +11 -11
- package/dist/adapters/SQLiteAdapter.js.map +1 -1
- package/dist/adapters/index.d.ts +1 -1
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/cjs/adapters/MemoryAdapter.js +2 -2
- package/dist/cjs/adapters/MemoryAdapter.js.map +1 -1
- package/dist/cjs/adapters/MongoAdapter.js +2 -2
- package/dist/cjs/adapters/MongoAdapter.js.map +1 -1
- package/dist/cjs/adapters/OpenSearchAdapter.js +7 -7
- package/dist/cjs/adapters/OpenSearchAdapter.js.map +1 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.js +9 -9
- package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -1
- package/dist/cjs/adapters/PrismaAdapter.js +3 -3
- package/dist/cjs/adapters/PrismaAdapter.js.map +1 -1
- package/dist/cjs/adapters/RedisAdapter.js +2 -2
- package/dist/cjs/adapters/RedisAdapter.js.map +1 -1
- package/dist/cjs/adapters/SQLiteAdapter.d.ts +3 -3
- package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/SQLiteAdapter.js +11 -11
- package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -1
- package/dist/cjs/adapters/index.d.ts +1 -1
- package/dist/cjs/adapters/index.d.ts.map +1 -1
- package/dist/cjs/constants/index.d.ts +4 -4
- package/dist/cjs/constants/index.js +5 -5
- package/dist/cjs/core/Agent.d.ts +22 -22
- package/dist/cjs/core/Agent.d.ts.map +1 -1
- package/dist/cjs/core/Agent.js +160 -152
- package/dist/cjs/core/Agent.js.map +1 -1
- package/dist/cjs/core/Events.d.ts +6 -6
- package/dist/cjs/core/Events.d.ts.map +1 -1
- package/dist/cjs/core/PersistenceManager.d.ts +13 -13
- package/dist/cjs/core/PersistenceManager.d.ts.map +1 -1
- package/dist/cjs/core/PersistenceManager.js +24 -24
- package/dist/cjs/core/PersistenceManager.js.map +1 -1
- package/dist/cjs/core/ResponseEngine.d.ts +3 -8
- package/dist/cjs/core/ResponseEngine.d.ts.map +1 -1
- package/dist/cjs/core/ResponseEngine.js +8 -8
- package/dist/cjs/core/ResponseEngine.js.map +1 -1
- package/dist/cjs/core/Route.d.ts +17 -17
- package/dist/cjs/core/Route.d.ts.map +1 -1
- package/dist/cjs/core/Route.js +33 -33
- package/dist/cjs/core/Route.js.map +1 -1
- package/dist/cjs/core/RoutingEngine.d.ts +30 -30
- package/dist/cjs/core/RoutingEngine.d.ts.map +1 -1
- package/dist/cjs/core/RoutingEngine.js +192 -192
- package/dist/cjs/core/RoutingEngine.js.map +1 -1
- package/dist/cjs/core/Step.d.ts +72 -0
- package/dist/cjs/core/Step.d.ts.map +1 -0
- package/dist/cjs/core/Step.js +150 -0
- package/dist/cjs/core/Step.js.map +1 -0
- package/dist/cjs/core/ToolExecutor.d.ts +5 -5
- package/dist/cjs/core/ToolExecutor.d.ts.map +1 -1
- package/dist/cjs/core/ToolExecutor.js +8 -8
- package/dist/cjs/core/ToolExecutor.js.map +1 -1
- package/dist/cjs/core/Transition.d.ts +14 -14
- package/dist/cjs/core/Transition.d.ts.map +1 -1
- package/dist/cjs/core/Transition.js +48 -19
- package/dist/cjs/core/Transition.js.map +1 -1
- package/dist/cjs/index.d.ts +7 -7
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +8 -8
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/agent.d.ts +8 -8
- package/dist/cjs/types/agent.d.ts.map +1 -1
- package/dist/cjs/types/ai.d.ts +2 -2
- package/dist/cjs/types/ai.d.ts.map +1 -1
- package/dist/cjs/types/history.d.ts +3 -3
- package/dist/cjs/types/history.d.ts.map +1 -1
- package/dist/cjs/types/index.d.ts +1 -1
- package/dist/cjs/types/index.d.ts.map +1 -1
- package/dist/cjs/types/persistence.d.ts +5 -5
- package/dist/cjs/types/persistence.d.ts.map +1 -1
- package/dist/cjs/types/route.d.ts +57 -52
- package/dist/cjs/types/route.d.ts.map +1 -1
- package/dist/cjs/types/session.d.ts +27 -27
- package/dist/cjs/types/session.d.ts.map +1 -1
- package/dist/cjs/types/session.js +48 -50
- package/dist/cjs/types/session.js.map +1 -1
- package/dist/cjs/types/tool.d.ts +13 -13
- package/dist/cjs/types/tool.d.ts.map +1 -1
- package/dist/cjs/utils/id.d.ts +8 -3
- package/dist/cjs/utils/id.d.ts.map +1 -1
- package/dist/cjs/utils/id.js +16 -7
- package/dist/cjs/utils/id.js.map +1 -1
- package/dist/constants/index.d.ts +4 -4
- package/dist/constants/index.js +4 -4
- package/dist/core/Agent.d.ts +22 -22
- package/dist/core/Agent.d.ts.map +1 -1
- package/dist/core/Agent.js +162 -154
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/Events.d.ts +6 -6
- package/dist/core/Events.d.ts.map +1 -1
- package/dist/core/PersistenceManager.d.ts +13 -13
- package/dist/core/PersistenceManager.d.ts.map +1 -1
- package/dist/core/PersistenceManager.js +25 -25
- package/dist/core/PersistenceManager.js.map +1 -1
- package/dist/core/ResponseEngine.d.ts +3 -8
- package/dist/core/ResponseEngine.d.ts.map +1 -1
- package/dist/core/ResponseEngine.js +8 -8
- package/dist/core/ResponseEngine.js.map +1 -1
- package/dist/core/Route.d.ts +17 -17
- package/dist/core/Route.d.ts.map +1 -1
- package/dist/core/Route.js +33 -33
- package/dist/core/Route.js.map +1 -1
- package/dist/core/RoutingEngine.d.ts +30 -30
- package/dist/core/RoutingEngine.d.ts.map +1 -1
- package/dist/core/RoutingEngine.js +193 -193
- package/dist/core/RoutingEngine.js.map +1 -1
- package/dist/core/Step.d.ts +72 -0
- package/dist/core/Step.d.ts.map +1 -0
- package/dist/core/Step.js +146 -0
- package/dist/core/Step.js.map +1 -0
- package/dist/core/ToolExecutor.d.ts +5 -5
- package/dist/core/ToolExecutor.d.ts.map +1 -1
- package/dist/core/ToolExecutor.js +8 -8
- package/dist/core/ToolExecutor.js.map +1 -1
- package/dist/core/Transition.d.ts +14 -14
- package/dist/core/Transition.d.ts.map +1 -1
- package/dist/core/Transition.js +48 -19
- package/dist/core/Transition.js.map +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/types/agent.d.ts +8 -8
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/ai.d.ts +2 -2
- package/dist/types/ai.d.ts.map +1 -1
- package/dist/types/history.d.ts +3 -3
- package/dist/types/history.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/persistence.d.ts +5 -5
- package/dist/types/persistence.d.ts.map +1 -1
- package/dist/types/route.d.ts +57 -52
- package/dist/types/route.d.ts.map +1 -1
- package/dist/types/session.d.ts +27 -27
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types/session.js +44 -46
- package/dist/types/session.js.map +1 -1
- package/dist/types/tool.d.ts +13 -13
- package/dist/types/tool.d.ts.map +1 -1
- package/dist/utils/id.d.ts +8 -3
- package/dist/utils/id.d.ts.map +1 -1
- package/dist/utils/id.js +14 -6
- package/dist/utils/id.js.map +1 -1
- package/docs/ADAPTERS.md +21 -21
- package/docs/AGENT.md +57 -55
- package/docs/API_REFERENCE.md +218 -220
- package/docs/ARCHITECTURE.md +99 -104
- package/docs/CONTEXT_MANAGEMENT.md +81 -88
- package/docs/DOCS.md +18 -18
- package/docs/DOMAINS.md +16 -16
- package/docs/EXAMPLES.md +43 -43
- package/docs/GETTING_STARTED.md +60 -63
- package/docs/PERSISTENCE.md +66 -70
- package/docs/PROVIDERS.md +2 -2
- package/docs/README.md +6 -6
- package/docs/ROUTES.md +218 -220
- package/docs/STEPS.md +883 -0
- package/examples/business-onboarding.ts +84 -81
- package/examples/company-qna-agent.ts +68 -67
- package/examples/custom-database-persistence.ts +87 -89
- package/examples/declarative-agent.ts +32 -32
- package/examples/domain-scoping.ts +18 -18
- package/examples/extracted-data-modification.ts +92 -97
- package/examples/healthcare-agent.ts +89 -91
- package/examples/openai-agent.ts +29 -32
- package/examples/opensearch-persistence.ts +43 -45
- package/examples/persistent-onboarding.ts +65 -66
- package/examples/prisma-persistence.ts +108 -112
- package/examples/prisma-schema.example.prisma +3 -3
- package/examples/redis-persistence.ts +67 -73
- package/examples/route-transitions.ts +71 -47
- package/examples/rules-prohibitions.ts +28 -28
- package/examples/streaming-agent.ts +24 -24
- package/examples/travel-agent.ts +94 -109
- package/package.json +1 -1
- package/src/adapters/MemoryAdapter.ts +3 -3
- package/src/adapters/MongoAdapter.ts +3 -3
- package/src/adapters/OpenSearchAdapter.ts +8 -8
- package/src/adapters/PostgreSQLAdapter.ts +10 -10
- package/src/adapters/PrismaAdapter.ts +4 -4
- package/src/adapters/RedisAdapter.ts +3 -3
- package/src/adapters/SQLiteAdapter.ts +15 -15
- package/src/adapters/index.ts +1 -1
- package/src/constants/index.ts +4 -4
- package/src/core/Agent.ts +210 -206
- package/src/core/Events.ts +12 -12
- package/src/core/PersistenceManager.ts +32 -36
- package/src/core/ResponseEngine.ts +11 -17
- package/src/core/Route.ts +55 -49
- package/src/core/RoutingEngine.ts +244 -252
- package/src/core/Step.ts +197 -0
- package/src/core/ToolExecutor.ts +11 -11
- package/src/core/Transition.ts +72 -26
- package/src/index.ts +8 -8
- package/src/types/agent.ts +8 -8
- package/src/types/ai.ts +2 -2
- package/src/types/history.ts +3 -3
- package/src/types/index.ts +1 -1
- package/src/types/persistence.ts +6 -6
- package/src/types/route.ts +77 -61
- package/src/types/session.ts +75 -78
- package/src/types/tool.ts +17 -17
- package/src/utils/id.ts +15 -6
- package/dist/cjs/core/State.d.ts +0 -72
- package/dist/cjs/core/State.d.ts.map +0 -1
- package/dist/cjs/core/State.js +0 -148
- package/dist/cjs/core/State.js.map +0 -1
- package/dist/core/State.d.ts +0 -72
- package/dist/core/State.d.ts.map +0 -1
- package/dist/core/State.js +0 -144
- package/dist/core/State.js.map +0 -1
- package/docs/STATES.md +0 -888
- package/src/core/State.ts +0 -212
package/docs/AGENT.md
CHANGED
|
@@ -25,7 +25,7 @@ interface AgentOptions<TContext = unknown> {
|
|
|
25
25
|
context?: TContext;
|
|
26
26
|
|
|
27
27
|
// Optional current session for convenience methods
|
|
28
|
-
session?:
|
|
28
|
+
session?: SessionStep;
|
|
29
29
|
|
|
30
30
|
// Context provider for always-fresh context
|
|
31
31
|
contextProvider?: () => Promise<TContext> | TContext;
|
|
@@ -40,9 +40,9 @@ interface AgentOptions<TContext = unknown> {
|
|
|
40
40
|
newContext: TContext,
|
|
41
41
|
previousContext: TContext
|
|
42
42
|
) => Promise<void> | void;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
onDataUpdate?: (
|
|
44
|
+
data: Record<string, unknown>,
|
|
45
|
+
previousData: Record<string, unknown>
|
|
46
46
|
) => Promise<Record<string, unknown>> | Record<string, unknown>;
|
|
47
47
|
};
|
|
48
48
|
|
|
@@ -54,7 +54,7 @@ interface AgentOptions<TContext = unknown> {
|
|
|
54
54
|
}
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
-
### Example: Data-Driven Agent with Session
|
|
57
|
+
### Example: Data-Driven Agent with Session Step
|
|
58
58
|
|
|
59
59
|
```typescript
|
|
60
60
|
// Define your data extraction types
|
|
@@ -66,20 +66,20 @@ interface FlightData {
|
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
const agent = new Agent<FlightBookingContext>({
|
|
69
|
-
name:
|
|
70
|
-
description:
|
|
71
|
-
goal:
|
|
72
|
-
ai: new GeminiProvider({ apiKey:
|
|
69
|
+
name: "FlightBot",
|
|
70
|
+
description: "Helpful flight booking assistant",
|
|
71
|
+
goal: "Book flights efficiently",
|
|
72
|
+
ai: new GeminiProvider({ apiKey: "...", model: "..." }),
|
|
73
73
|
|
|
74
74
|
// Static context
|
|
75
75
|
context: {
|
|
76
|
-
userId:
|
|
76
|
+
userId: "123",
|
|
77
77
|
availableFlights: [],
|
|
78
78
|
},
|
|
79
79
|
|
|
80
80
|
// Optional: Set initial session for convenience methods
|
|
81
81
|
session: createSession<FlightData>({
|
|
82
|
-
|
|
82
|
+
data: { destination: "Paris" }, // Pre-populate with known data
|
|
83
83
|
}),
|
|
84
84
|
|
|
85
85
|
// Enhanced lifecycle hooks
|
|
@@ -90,40 +90,40 @@ const agent = new Agent<FlightBookingContext>({
|
|
|
90
90
|
return { ...ctx, userCredits: freshUser.credits };
|
|
91
91
|
},
|
|
92
92
|
|
|
93
|
-
// Validate and enrich
|
|
94
|
-
|
|
93
|
+
// Validate and enrich collected data
|
|
94
|
+
onDataUpdate: async (data, previous) => {
|
|
95
95
|
// Normalize passenger count
|
|
96
|
-
if (
|
|
97
|
-
if (
|
|
96
|
+
if (data.passengers < 1) data.passengers = 1;
|
|
97
|
+
if (data.passengers > 9) data.passengers = 9;
|
|
98
98
|
|
|
99
99
|
// Auto-trigger flight search when we have enough data
|
|
100
|
-
if (
|
|
101
|
-
|
|
100
|
+
if (data.destination && data.departureDate && data.passengers) {
|
|
101
|
+
data.shouldSearchFlights = true;
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
-
return
|
|
104
|
+
return data;
|
|
105
105
|
},
|
|
106
106
|
},
|
|
107
107
|
|
|
108
108
|
// Declarative routes with data extraction
|
|
109
109
|
routes: [
|
|
110
110
|
{
|
|
111
|
-
title:
|
|
112
|
-
description:
|
|
113
|
-
conditions: [
|
|
114
|
-
|
|
115
|
-
type:
|
|
111
|
+
title: "Book Flight",
|
|
112
|
+
description: "Help user book a flight",
|
|
113
|
+
conditions: ["User wants to book a flight"],
|
|
114
|
+
schema: {
|
|
115
|
+
type: "object",
|
|
116
116
|
properties: {
|
|
117
|
-
destination: { type:
|
|
118
|
-
departureDate: { type:
|
|
119
|
-
passengers: { type:
|
|
117
|
+
destination: { type: "string" },
|
|
118
|
+
departureDate: { type: "string" },
|
|
119
|
+
passengers: { type: "number", minimum: 1, maximum: 9 },
|
|
120
120
|
cabinClass: {
|
|
121
|
-
type:
|
|
122
|
-
enum: [
|
|
123
|
-
default:
|
|
121
|
+
type: "string",
|
|
122
|
+
enum: ["economy", "business", "first"],
|
|
123
|
+
default: "economy",
|
|
124
124
|
},
|
|
125
125
|
},
|
|
126
|
-
required: [
|
|
126
|
+
required: ["destination", "departureDate", "passengers"],
|
|
127
127
|
},
|
|
128
128
|
},
|
|
129
129
|
],
|
|
@@ -131,44 +131,46 @@ const agent = new Agent<FlightBookingContext>({
|
|
|
131
131
|
// Domain glossary
|
|
132
132
|
terms: [
|
|
133
133
|
{
|
|
134
|
-
name:
|
|
135
|
-
description:
|
|
136
|
-
synonyms: [
|
|
134
|
+
name: "Premium Plan",
|
|
135
|
+
description: "Our top-tier subscription at $99/month",
|
|
136
|
+
synonyms: ["pro plan", "premium subscription"],
|
|
137
137
|
},
|
|
138
138
|
],
|
|
139
139
|
|
|
140
140
|
// Behavioral guidelines
|
|
141
141
|
guidelines: [
|
|
142
142
|
{
|
|
143
|
-
action:
|
|
143
|
+
action: "Always be polite and professional",
|
|
144
144
|
enabled: true,
|
|
145
145
|
},
|
|
146
146
|
{
|
|
147
|
-
condition:
|
|
148
|
-
action:
|
|
147
|
+
condition: "User seems frustrated",
|
|
148
|
+
action: "Apologize sincerely and offer to escalate to human support",
|
|
149
149
|
enabled: true,
|
|
150
150
|
},
|
|
151
151
|
],
|
|
152
152
|
|
|
153
153
|
capabilities: [
|
|
154
|
-
{ title:
|
|
154
|
+
{ title: "Ticket Management", description: "Create and track tickets" },
|
|
155
155
|
],
|
|
156
156
|
});
|
|
157
157
|
|
|
158
158
|
// Option 1: Use session passed to respond (traditional)
|
|
159
159
|
let session = createSession<FlightData>();
|
|
160
160
|
const response = await agent.respond({ history, session });
|
|
161
|
-
console.log(response.session?.
|
|
161
|
+
console.log(response.session?.data); // Data flight data
|
|
162
162
|
|
|
163
163
|
// Option 2: Use session set in constructor (convenience methods)
|
|
164
164
|
// Since we set session in constructor, no need to pass it!
|
|
165
165
|
const response2 = await agent.respond({ history });
|
|
166
|
-
console.log(agent.
|
|
166
|
+
console.log(agent.getData()); // Uses constructor session
|
|
167
167
|
|
|
168
168
|
// Option 3: Override session for specific calls
|
|
169
|
-
const customSession = createSession<FlightData>({
|
|
169
|
+
const customSession = createSession<FlightData>({
|
|
170
|
+
data: { destination: "Tokyo" },
|
|
171
|
+
});
|
|
170
172
|
const response3 = await agent.respond({ history, session: customSession });
|
|
171
|
-
console.log(response3.session?.
|
|
173
|
+
console.log(response3.session?.data); // Uses custom session
|
|
172
174
|
```
|
|
173
175
|
|
|
174
176
|
````
|
|
@@ -177,7 +179,7 @@ console.log(response3.session?.extracted); // Uses custom session
|
|
|
177
179
|
|
|
178
180
|
## 💾 Session Management
|
|
179
181
|
|
|
180
|
-
The agent supports flexible session management for conversation
|
|
182
|
+
The agent supports flexible session management for conversation step tracking:
|
|
181
183
|
|
|
182
184
|
### Constructor Session (Optional)
|
|
183
185
|
|
|
@@ -188,13 +190,13 @@ const agent = new Agent({
|
|
|
188
190
|
name: 'Bot',
|
|
189
191
|
ai: provider,
|
|
190
192
|
session: createSession<MyData>({
|
|
191
|
-
|
|
193
|
+
data: { name: 'John' }, // Pre-populate data
|
|
192
194
|
}),
|
|
193
195
|
});
|
|
194
196
|
|
|
195
197
|
// Use convenience methods without passing session
|
|
196
198
|
const response = await agent.respond({ history });
|
|
197
|
-
const data = agent.
|
|
199
|
+
const data = agent.getData(); // Uses constructor session
|
|
198
200
|
```
|
|
199
201
|
|
|
200
202
|
### Runtime Session Management
|
|
@@ -204,8 +206,8 @@ const data = agent.getExtractedData(); // Uses constructor session
|
|
|
204
206
|
agent.setCurrentSession(session);
|
|
205
207
|
|
|
206
208
|
// Use without passing session parameter
|
|
207
|
-
const
|
|
208
|
-
const routeData = agent.
|
|
209
|
+
const data = agent.getData();
|
|
210
|
+
const routeData = agent.getData('onboarding');
|
|
209
211
|
|
|
210
212
|
// Override for specific calls
|
|
211
213
|
const response = await agent.respond({ history, session: customSession });
|
|
@@ -216,15 +218,15 @@ agent.clearCurrentSession();
|
|
|
216
218
|
|
|
217
219
|
### Session Preservation
|
|
218
220
|
|
|
219
|
-
When switching routes,
|
|
221
|
+
When switching routes, collected data is preserved in `dataByRoute`:
|
|
220
222
|
|
|
221
223
|
```typescript
|
|
222
224
|
// User switches from onboarding to booking
|
|
223
225
|
const response = await agent.respond({ history }); // Switches routes
|
|
224
226
|
|
|
225
227
|
// Access data from previous routes
|
|
226
|
-
const onboardingData = agent.
|
|
227
|
-
const bookingData = agent.
|
|
228
|
+
const onboardingData = agent.getData('onboarding');
|
|
229
|
+
const bookingData = agent.getData('booking');
|
|
228
230
|
```
|
|
229
231
|
|
|
230
232
|
---
|
|
@@ -232,7 +234,7 @@ const bookingData = agent.getExtractedData('booking');
|
|
|
232
234
|
## 🛤️ Route Agent
|
|
233
235
|
|
|
234
236
|
```typescript
|
|
235
|
-
interface RouteOptions<
|
|
237
|
+
interface RouteOptions<TData = unknown> {
|
|
236
238
|
// Required
|
|
237
239
|
title: string;
|
|
238
240
|
|
|
@@ -246,15 +248,15 @@ interface RouteOptions<TExtracted = unknown> {
|
|
|
246
248
|
prohibitions?: string[]; // Absolute prohibitions the agent MUST NEVER do
|
|
247
249
|
|
|
248
250
|
// NEW: Schema-first data extraction
|
|
249
|
-
|
|
251
|
+
schema?: {
|
|
250
252
|
type: "object";
|
|
251
253
|
properties: Record<string, any>;
|
|
252
254
|
required?: string[];
|
|
253
255
|
additionalProperties?: boolean;
|
|
254
256
|
};
|
|
255
257
|
|
|
256
|
-
// NEW: Pre-populate
|
|
257
|
-
initialData?: Partial<
|
|
258
|
+
// NEW: Pre-populate collected data when entering route
|
|
259
|
+
initialData?: Partial<TData>;
|
|
258
260
|
}
|
|
259
261
|
````
|
|
260
262
|
|
|
@@ -472,7 +474,7 @@ route.createGuideline({ condition: "...", action: "..." });
|
|
|
472
474
|
### Use Fluent When:
|
|
473
475
|
|
|
474
476
|
- ✅ Logic is **dynamic** or **conditional**
|
|
475
|
-
- ✅ Building routes with **complex
|
|
477
|
+
- ✅ Building routes with **complex step machines**
|
|
476
478
|
- ✅ Adding features **based on runtime conditions**
|
|
477
479
|
- ✅ You prefer **step-by-step construction**
|
|
478
480
|
|
|
@@ -520,7 +522,7 @@ const agent = new Agent<MyContext>({
|
|
|
520
522
|
goal?: string,
|
|
521
523
|
ai: AiProvider,
|
|
522
524
|
context?: MyContext,
|
|
523
|
-
session?:
|
|
525
|
+
session?: SessionStep, // Optional current session
|
|
524
526
|
maxEngineIterations?: number,
|
|
525
527
|
compositionMode?: CompositionMode,
|
|
526
528
|
terms?: Term[],
|