@falai/agent 0.9.0-alpha-1 → 0.9.0-alpha-2

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 (166) hide show
  1. package/README.md +34 -22
  2. package/dist/cjs/src/core/Agent.d.ts +52 -24
  3. package/dist/cjs/src/core/Agent.d.ts.map +1 -1
  4. package/dist/cjs/src/core/Agent.js +266 -39
  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/ResponsePipeline.d.ts +66 -38
  17. package/dist/cjs/src/core/ResponsePipeline.d.ts.map +1 -1
  18. package/dist/cjs/src/core/ResponsePipeline.js +71 -3
  19. package/dist/cjs/src/core/ResponsePipeline.js.map +1 -1
  20. package/dist/cjs/src/core/Route.d.ts +24 -5
  21. package/dist/cjs/src/core/Route.d.ts.map +1 -1
  22. package/dist/cjs/src/core/Route.js +45 -1
  23. package/dist/cjs/src/core/Route.js.map +1 -1
  24. package/dist/cjs/src/core/RoutingEngine.d.ts +31 -6
  25. package/dist/cjs/src/core/RoutingEngine.d.ts.map +1 -1
  26. package/dist/cjs/src/core/RoutingEngine.js +113 -9
  27. package/dist/cjs/src/core/RoutingEngine.js.map +1 -1
  28. package/dist/cjs/src/core/SessionManager.d.ts +14 -4
  29. package/dist/cjs/src/core/SessionManager.d.ts.map +1 -1
  30. package/dist/cjs/src/core/SessionManager.js +25 -5
  31. package/dist/cjs/src/core/SessionManager.js.map +1 -1
  32. package/dist/cjs/src/core/Step.d.ts +10 -10
  33. package/dist/cjs/src/core/Step.d.ts.map +1 -1
  34. package/dist/cjs/src/core/Step.js.map +1 -1
  35. package/dist/cjs/src/core/ToolExecutor.d.ts +4 -2
  36. package/dist/cjs/src/core/ToolExecutor.d.ts.map +1 -1
  37. package/dist/cjs/src/core/ToolExecutor.js +13 -3
  38. package/dist/cjs/src/core/ToolExecutor.js.map +1 -1
  39. package/dist/cjs/src/types/agent.d.ts +41 -21
  40. package/dist/cjs/src/types/agent.d.ts.map +1 -1
  41. package/dist/cjs/src/types/agent.js.map +1 -1
  42. package/dist/cjs/src/types/index.d.ts +1 -1
  43. package/dist/cjs/src/types/index.d.ts.map +1 -1
  44. package/dist/cjs/src/types/index.js.map +1 -1
  45. package/dist/cjs/src/types/persistence.d.ts +0 -1
  46. package/dist/cjs/src/types/persistence.d.ts.map +1 -1
  47. package/dist/cjs/src/types/route.d.ts +22 -16
  48. package/dist/cjs/src/types/route.d.ts.map +1 -1
  49. package/dist/cjs/src/types/session.d.ts +6 -11
  50. package/dist/cjs/src/types/session.d.ts.map +1 -1
  51. package/dist/cjs/src/types/tool.d.ts +12 -6
  52. package/dist/cjs/src/types/tool.d.ts.map +1 -1
  53. package/dist/cjs/src/utils/session.d.ts +2 -2
  54. package/dist/cjs/src/utils/session.d.ts.map +1 -1
  55. package/dist/cjs/src/utils/session.js +6 -26
  56. package/dist/cjs/src/utils/session.js.map +1 -1
  57. package/dist/src/core/Agent.d.ts +52 -24
  58. package/dist/src/core/Agent.d.ts.map +1 -1
  59. package/dist/src/core/Agent.js +266 -39
  60. package/dist/src/core/Agent.js.map +1 -1
  61. package/dist/src/core/PersistenceManager.d.ts.map +1 -1
  62. package/dist/src/core/PersistenceManager.js +48 -25
  63. package/dist/src/core/PersistenceManager.js.map +1 -1
  64. package/dist/src/core/PromptComposer.d.ts +1 -1
  65. package/dist/src/core/PromptComposer.d.ts.map +1 -1
  66. package/dist/src/core/PromptComposer.js.map +1 -1
  67. package/dist/src/core/ResponseEngine.d.ts +13 -12
  68. package/dist/src/core/ResponseEngine.d.ts.map +1 -1
  69. package/dist/src/core/ResponseEngine.js +4 -4
  70. package/dist/src/core/ResponseEngine.js.map +1 -1
  71. package/dist/src/core/ResponsePipeline.d.ts +66 -38
  72. package/dist/src/core/ResponsePipeline.d.ts.map +1 -1
  73. package/dist/src/core/ResponsePipeline.js +71 -3
  74. package/dist/src/core/ResponsePipeline.js.map +1 -1
  75. package/dist/src/core/Route.d.ts +24 -5
  76. package/dist/src/core/Route.d.ts.map +1 -1
  77. package/dist/src/core/Route.js +45 -1
  78. package/dist/src/core/Route.js.map +1 -1
  79. package/dist/src/core/RoutingEngine.d.ts +31 -6
  80. package/dist/src/core/RoutingEngine.d.ts.map +1 -1
  81. package/dist/src/core/RoutingEngine.js +113 -9
  82. package/dist/src/core/RoutingEngine.js.map +1 -1
  83. package/dist/src/core/SessionManager.d.ts +14 -4
  84. package/dist/src/core/SessionManager.d.ts.map +1 -1
  85. package/dist/src/core/SessionManager.js +25 -5
  86. package/dist/src/core/SessionManager.js.map +1 -1
  87. package/dist/src/core/Step.d.ts +10 -10
  88. package/dist/src/core/Step.d.ts.map +1 -1
  89. package/dist/src/core/Step.js.map +1 -1
  90. package/dist/src/core/ToolExecutor.d.ts +4 -2
  91. package/dist/src/core/ToolExecutor.d.ts.map +1 -1
  92. package/dist/src/core/ToolExecutor.js +13 -3
  93. package/dist/src/core/ToolExecutor.js.map +1 -1
  94. package/dist/src/types/agent.d.ts +41 -21
  95. package/dist/src/types/agent.d.ts.map +1 -1
  96. package/dist/src/types/agent.js.map +1 -1
  97. package/dist/src/types/index.d.ts +1 -1
  98. package/dist/src/types/index.d.ts.map +1 -1
  99. package/dist/src/types/index.js.map +1 -1
  100. package/dist/src/types/persistence.d.ts +0 -1
  101. package/dist/src/types/persistence.d.ts.map +1 -1
  102. package/dist/src/types/route.d.ts +22 -16
  103. package/dist/src/types/route.d.ts.map +1 -1
  104. package/dist/src/types/session.d.ts +6 -11
  105. package/dist/src/types/session.d.ts.map +1 -1
  106. package/dist/src/types/tool.d.ts +12 -6
  107. package/dist/src/types/tool.d.ts.map +1 -1
  108. package/dist/src/utils/session.d.ts +2 -2
  109. package/dist/src/utils/session.d.ts.map +1 -1
  110. package/dist/src/utils/session.js +6 -26
  111. package/dist/src/utils/session.js.map +1 -1
  112. package/docs/README.md +3 -3
  113. package/docs/api/README.md +35 -4
  114. package/docs/api/overview.md +166 -12
  115. package/docs/core/agent/README.md +162 -17
  116. package/docs/core/agent/context-management.md +39 -15
  117. package/docs/core/agent/session-management.md +49 -16
  118. package/docs/core/ai-integration/prompt-composition.md +38 -14
  119. package/docs/core/ai-integration/response-processing.md +28 -17
  120. package/docs/core/conversation-flows/data-collection.md +103 -25
  121. package/docs/core/conversation-flows/route-dsl.md +45 -22
  122. package/docs/core/conversation-flows/routes.md +74 -18
  123. package/docs/core/conversation-flows/step-transitions.md +3 -3
  124. package/docs/core/conversation-flows/steps.md +39 -15
  125. package/docs/core/routing/intelligent-routing.md +18 -9
  126. package/docs/core/tools/tool-definition.md +8 -8
  127. package/docs/core/tools/tool-execution.md +26 -26
  128. package/docs/core/tools/tool-scoping.md +5 -5
  129. package/docs/guides/getting-started/README.md +54 -32
  130. package/examples/advanced-patterns/knowledge-based-agent.ts +37 -28
  131. package/examples/advanced-patterns/persistent-onboarding.ts +70 -41
  132. package/examples/advanced-patterns/route-lifecycle-hooks.ts +28 -2
  133. package/examples/advanced-patterns/streaming-responses.ts +28 -23
  134. package/examples/ai-providers/anthropic-integration.ts +40 -33
  135. package/examples/ai-providers/openai-integration.ts +25 -25
  136. package/examples/conversation-flows/completion-transitions.ts +36 -32
  137. package/examples/core-concepts/basic-agent.ts +76 -78
  138. package/examples/core-concepts/schema-driven-extraction.ts +20 -16
  139. package/examples/core-concepts/session-management.ts +65 -53
  140. package/examples/integrations/database-integration.ts +49 -34
  141. package/examples/integrations/healthcare-integration.ts +96 -91
  142. package/examples/integrations/search-integration.ts +79 -82
  143. package/examples/integrations/server-session-management.ts +25 -17
  144. package/examples/persistence/database-persistence.ts +61 -45
  145. package/examples/persistence/memory-sessions.ts +52 -63
  146. package/examples/persistence/redis-persistence.ts +81 -95
  147. package/examples/tools/basic-tools.ts +73 -62
  148. package/examples/tools/data-enrichment-tools.ts +52 -44
  149. package/package.json +1 -1
  150. package/src/core/Agent.ts +418 -128
  151. package/src/core/PersistenceManager.ts +51 -27
  152. package/src/core/PromptComposer.ts +1 -1
  153. package/src/core/ResponseEngine.ts +21 -19
  154. package/src/core/ResponsePipeline.ts +174 -59
  155. package/src/core/Route.ts +58 -6
  156. package/src/core/RoutingEngine.ts +174 -27
  157. package/src/core/SessionManager.ts +32 -8
  158. package/src/core/Step.ts +20 -12
  159. package/src/core/ToolExecutor.ts +19 -5
  160. package/src/types/agent.ts +46 -23
  161. package/src/types/index.ts +2 -0
  162. package/src/types/persistence.ts +0 -1
  163. package/src/types/route.ts +22 -16
  164. package/src/types/session.ts +6 -12
  165. package/src/types/tool.ts +15 -9
  166. package/src/utils/session.ts +6 -31
@@ -45,7 +45,7 @@ interface FlightData {
45
45
  // ==============================================================================
46
46
 
47
47
  // Tool 1: Convert city names to airport codes
48
- const enrichDestinationTool: Tool<FlightBookingContext, [], void, FlightData> =
48
+ const enrichDestinationTool: Tool<FlightBookingContext, FlightData, [], void> =
49
49
  {
50
50
  id: "enrich_destination",
51
51
  name: "Destination Code Lookup",
@@ -84,7 +84,7 @@ const enrichDestinationTool: Tool<FlightBookingContext, [], void, FlightData> =
84
84
  };
85
85
 
86
86
  // Tool 2: Parse and validate dates
87
- const validateDateTool: Tool<FlightBookingContext, [], void, FlightData> = {
87
+ const validateDateTool: Tool<FlightBookingContext, FlightData, [], void> = {
88
88
  id: "validate_date",
89
89
  name: "Date Parser & Validator",
90
90
  description:
@@ -139,7 +139,7 @@ const validateDateTool: Tool<FlightBookingContext, [], void, FlightData> = {
139
139
  };
140
140
 
141
141
  // Tool 3: Search for flights (triggered by flag)
142
- const searchFlightsTool: Tool<FlightBookingContext, [], void, FlightData> = {
142
+ const searchFlightsTool: Tool<FlightBookingContext, FlightData, [], void> = {
143
143
  id: "search_flights",
144
144
  name: "Flight Availability Search",
145
145
  description: "Search for available flights based on collected data",
@@ -188,7 +188,7 @@ const searchFlightsTool: Tool<FlightBookingContext, [], void, FlightData> = {
188
188
  };
189
189
 
190
190
  // Tool 4: Book the flight
191
- const bookFlightTool: Tool<FlightBookingContext, [], void, FlightData> = {
191
+ const bookFlightTool: Tool<FlightBookingContext, FlightData, [], void> = {
192
192
  id: "book_flight",
193
193
  name: "Flight Booking Processor",
194
194
  description: "Finalize the flight booking",
@@ -252,7 +252,45 @@ function onDataUpdate(
252
252
  // AGENT SETUP
253
253
  // ==============================================================================
254
254
 
255
- const agent = new Agent<FlightBookingContext>({
255
+ // Define flight booking schema
256
+ const flightBookingSchema = {
257
+ type: "object",
258
+ properties: {
259
+ destination: {
260
+ type: "string",
261
+ description: "City or airport the user wants to fly to",
262
+ },
263
+ destinationCode: {
264
+ type: "string",
265
+ description: "IATA airport code (enriched by tool)",
266
+ },
267
+ departureDate: {
268
+ type: "string",
269
+ description: "When the user wants to depart",
270
+ },
271
+ departureDateParsed: {
272
+ type: "string",
273
+ description: "Parsed ISO date (enriched by tool)",
274
+ },
275
+ passengers: {
276
+ type: "number",
277
+ minimum: 1,
278
+ maximum: 9,
279
+ },
280
+ cabinClass: {
281
+ type: "string",
282
+ enum: ["economy", "business", "first"],
283
+ default: "economy",
284
+ },
285
+ shouldSearchFlights: {
286
+ type: "boolean",
287
+ description: "Flag to trigger flight search",
288
+ },
289
+ },
290
+ required: ["destination", "departureDate", "passengers"],
291
+ };
292
+
293
+ const agent = new Agent<FlightBookingContext, FlightData>({
256
294
  name: "Flight Booking Agent",
257
295
  goal: "Help users book flights efficiently",
258
296
  description: "I help you find and book flights",
@@ -261,55 +299,25 @@ const agent = new Agent<FlightBookingContext>({
261
299
  model: "gpt-5o-mini",
262
300
  }),
263
301
  context: {},
302
+ // NEW: Agent-level schema
303
+ schema: flightBookingSchema,
264
304
  hooks: {
265
305
  onDataUpdate, // Validation & enrichment hook
266
306
  },
267
307
  });
268
308
 
269
309
  // Define route with data extraction
270
- const bookingRoute = agent.createRoute<FlightData>({
310
+ const bookingRoute = agent.createRoute({
271
311
  title: "Book Flight",
272
312
  description: "Help user book a flight",
273
313
  conditions: [
274
314
  "User wants to book a flight",
275
315
  "User mentions flying, traveling, or booking",
276
316
  ],
277
- schema: {
278
- type: "object",
279
- properties: {
280
- destination: {
281
- type: "string",
282
- description: "City or airport the user wants to fly to",
283
- },
284
- destinationCode: {
285
- type: "string",
286
- description: "IATA airport code (enriched by tool)",
287
- },
288
- departureDate: {
289
- type: "string",
290
- description: "When the user wants to depart",
291
- },
292
- departureDateParsed: {
293
- type: "string",
294
- description: "Parsed ISO date (enriched by tool)",
295
- },
296
- passengers: {
297
- type: "number",
298
- minimum: 1,
299
- maximum: 9,
300
- },
301
- cabinClass: {
302
- type: "string",
303
- enum: ["economy", "business", "first"],
304
- default: "economy",
305
- },
306
- shouldSearchFlights: {
307
- type: "boolean",
308
- description: "Flag to trigger flight search",
309
- },
310
- },
311
- required: ["destination", "departureDate", "passengers"],
312
- },
317
+ // NEW: Required fields for route completion
318
+ requiredFields: ["destination", "departureDate", "passengers"],
319
+ // NEW: Optional fields that enhance the experience
320
+ optionalFields: ["destinationCode", "departureDateParsed", "cabinClass", "shouldSearchFlights"],
313
321
  });
314
322
 
315
323
  // Step 1: Collect destination
@@ -389,14 +397,14 @@ async function main() {
389
397
 
390
398
  console.log("\n=== RESPONSE ===");
391
399
  console.log("Message:", response.message);
392
- console.log("Data:", agent.session.getData<FlightData>());
400
+ console.log("Data:", agent.session.getData());
393
401
  console.log("Context:", agent["context"]);
394
402
 
395
403
  await agent.session.addMessage("assistant", response.message);
396
404
 
397
405
  if (response.isRouteComplete) {
398
406
  console.log("\n✅ Flight booking complete!");
399
- await sendBookingConfirmation(agent.session.getData<FlightData>());
407
+ await sendBookingConfirmation(agent.session.getData());
400
408
  }
401
409
 
402
410
  /*
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@falai/agent",
3
- "version": "0.9.0-alpha-1",
3
+ "version": "0.9.0-alpha-2",
4
4
  "description": "Standalone, strongly-typed AI Agent framework with route DSL and AI provider strategy",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/index.js",