@falai/agent 1.1.0 → 1.1.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 (122) hide show
  1. package/dist/adapters/MemoryAdapter.d.ts.map +1 -1
  2. package/dist/adapters/MemoryAdapter.js +2 -1
  3. package/dist/adapters/MemoryAdapter.js.map +1 -1
  4. package/dist/adapters/MongoAdapter.d.ts.map +1 -1
  5. package/dist/adapters/MongoAdapter.js +2 -1
  6. package/dist/adapters/MongoAdapter.js.map +1 -1
  7. package/dist/adapters/OpenSearchAdapter.d.ts.map +1 -1
  8. package/dist/adapters/OpenSearchAdapter.js +2 -1
  9. package/dist/adapters/OpenSearchAdapter.js.map +1 -1
  10. package/dist/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  11. package/dist/adapters/PostgreSQLAdapter.js +2 -1
  12. package/dist/adapters/PostgreSQLAdapter.js.map +1 -1
  13. package/dist/adapters/PrismaAdapter.d.ts.map +1 -1
  14. package/dist/adapters/PrismaAdapter.js +2 -1
  15. package/dist/adapters/PrismaAdapter.js.map +1 -1
  16. package/dist/adapters/RedisAdapter.d.ts.map +1 -1
  17. package/dist/adapters/RedisAdapter.js.map +1 -1
  18. package/dist/adapters/SQLiteAdapter.d.ts.map +1 -1
  19. package/dist/adapters/SQLiteAdapter.js.map +1 -1
  20. package/dist/cjs/adapters/MemoryAdapter.d.ts.map +1 -1
  21. package/dist/cjs/adapters/MemoryAdapter.js +2 -1
  22. package/dist/cjs/adapters/MemoryAdapter.js.map +1 -1
  23. package/dist/cjs/adapters/MongoAdapter.d.ts.map +1 -1
  24. package/dist/cjs/adapters/MongoAdapter.js +2 -1
  25. package/dist/cjs/adapters/MongoAdapter.js.map +1 -1
  26. package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +1 -1
  27. package/dist/cjs/adapters/OpenSearchAdapter.js +2 -1
  28. package/dist/cjs/adapters/OpenSearchAdapter.js.map +1 -1
  29. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  30. package/dist/cjs/adapters/PostgreSQLAdapter.js +2 -1
  31. package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -1
  32. package/dist/cjs/adapters/PrismaAdapter.d.ts.map +1 -1
  33. package/dist/cjs/adapters/PrismaAdapter.js +2 -1
  34. package/dist/cjs/adapters/PrismaAdapter.js.map +1 -1
  35. package/dist/cjs/adapters/RedisAdapter.d.ts.map +1 -1
  36. package/dist/cjs/adapters/RedisAdapter.js.map +1 -1
  37. package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +1 -1
  38. package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -1
  39. package/dist/cjs/core/Agent.d.ts +202 -67
  40. package/dist/cjs/core/Agent.d.ts.map +1 -1
  41. package/dist/cjs/core/Agent.js +366 -158
  42. package/dist/cjs/core/Agent.js.map +1 -1
  43. package/dist/cjs/core/BatchExecutor.js +5 -6
  44. package/dist/cjs/core/BatchExecutor.js.map +1 -1
  45. package/dist/cjs/core/BatchPromptBuilder.d.ts.map +1 -1
  46. package/dist/cjs/core/BatchPromptBuilder.js +5 -2
  47. package/dist/cjs/core/BatchPromptBuilder.js.map +1 -1
  48. package/dist/cjs/core/ResponseEngine.d.ts.map +1 -1
  49. package/dist/cjs/core/ResponseEngine.js +6 -3
  50. package/dist/cjs/core/ResponseEngine.js.map +1 -1
  51. package/dist/cjs/core/ResponseModal.d.ts.map +1 -1
  52. package/dist/cjs/core/ResponseModal.js +18 -17
  53. package/dist/cjs/core/ResponseModal.js.map +1 -1
  54. package/dist/cjs/core/RoutingEngine.d.ts.map +1 -1
  55. package/dist/cjs/core/RoutingEngine.js +8 -73
  56. package/dist/cjs/core/RoutingEngine.js.map +1 -1
  57. package/dist/cjs/core/SessionManager.d.ts.map +1 -1
  58. package/dist/cjs/core/SessionManager.js +4 -11
  59. package/dist/cjs/core/SessionManager.js.map +1 -1
  60. package/dist/cjs/index.d.ts +1 -1
  61. package/dist/cjs/index.d.ts.map +1 -1
  62. package/dist/cjs/index.js +3 -2
  63. package/dist/cjs/index.js.map +1 -1
  64. package/dist/cjs/utils/session.d.ts +6 -0
  65. package/dist/cjs/utils/session.d.ts.map +1 -1
  66. package/dist/cjs/utils/session.js +26 -8
  67. package/dist/cjs/utils/session.js.map +1 -1
  68. package/dist/core/Agent.d.ts +202 -67
  69. package/dist/core/Agent.d.ts.map +1 -1
  70. package/dist/core/Agent.js +366 -158
  71. package/dist/core/Agent.js.map +1 -1
  72. package/dist/core/BatchExecutor.js +6 -7
  73. package/dist/core/BatchExecutor.js.map +1 -1
  74. package/dist/core/BatchPromptBuilder.d.ts.map +1 -1
  75. package/dist/core/BatchPromptBuilder.js +5 -2
  76. package/dist/core/BatchPromptBuilder.js.map +1 -1
  77. package/dist/core/ResponseEngine.d.ts.map +1 -1
  78. package/dist/core/ResponseEngine.js +6 -3
  79. package/dist/core/ResponseEngine.js.map +1 -1
  80. package/dist/core/ResponseModal.d.ts.map +1 -1
  81. package/dist/core/ResponseModal.js +18 -17
  82. package/dist/core/ResponseModal.js.map +1 -1
  83. package/dist/core/RoutingEngine.d.ts.map +1 -1
  84. package/dist/core/RoutingEngine.js +8 -73
  85. package/dist/core/RoutingEngine.js.map +1 -1
  86. package/dist/core/SessionManager.d.ts.map +1 -1
  87. package/dist/core/SessionManager.js +4 -11
  88. package/dist/core/SessionManager.js.map +1 -1
  89. package/dist/index.d.ts +1 -1
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.js +1 -1
  92. package/dist/index.js.map +1 -1
  93. package/dist/utils/session.d.ts +6 -0
  94. package/dist/utils/session.d.ts.map +1 -1
  95. package/dist/utils/session.js +26 -8
  96. package/dist/utils/session.js.map +1 -1
  97. package/docs/api/README.md +33 -4
  98. package/docs/api/overview.md +9 -5
  99. package/docs/architecture/data-extraction-flow.md +17 -19
  100. package/docs/core/conversation-flows/data-collection.md +9 -3
  101. package/docs/core/conversation-flows/route-dsl.md +8 -1
  102. package/docs/core/error-handling.md +3 -4
  103. package/docs/core/persistence/session-storage.md +12 -0
  104. package/examples/integrations/database-integration.ts +10 -9
  105. package/examples/persistence/custom-adapter.ts +12 -15
  106. package/package.json +2 -2
  107. package/src/adapters/MemoryAdapter.ts +6 -8
  108. package/src/adapters/MongoAdapter.ts +6 -8
  109. package/src/adapters/OpenSearchAdapter.ts +6 -8
  110. package/src/adapters/PostgreSQLAdapter.ts +6 -8
  111. package/src/adapters/PrismaAdapter.ts +4 -6
  112. package/src/adapters/RedisAdapter.ts +4 -7
  113. package/src/adapters/SQLiteAdapter.ts +6 -9
  114. package/src/core/Agent.ts +427 -195
  115. package/src/core/BatchExecutor.ts +129 -129
  116. package/src/core/BatchPromptBuilder.ts +41 -38
  117. package/src/core/ResponseEngine.ts +56 -53
  118. package/src/core/ResponseModal.ts +79 -81
  119. package/src/core/RoutingEngine.ts +67 -149
  120. package/src/core/SessionManager.ts +4 -13
  121. package/src/index.ts +11 -11
  122. package/src/utils/session.ts +48 -10
package/src/index.ts CHANGED
@@ -9,11 +9,11 @@ export { Agent } from "./core/Agent";
9
9
  export { Route } from "./core/Route";
10
10
  export { Step } from "./core/Step";
11
11
  export { ResponseModal } from "./core/ResponseModal";
12
- export type {
13
- ResponseModalOptions,
14
- RespondParams,
15
- StreamOptions,
16
- GenerateOptions
12
+ export type {
13
+ ResponseModalOptions,
14
+ RespondParams,
15
+ StreamOptions,
16
+ GenerateOptions
17
17
  } from "./core/ResponseModal";
18
18
  export { adaptEvent, convertHistoryToEvents } from "./core/Events";
19
19
  export { PersistenceManager } from "./core/PersistenceManager";
@@ -73,11 +73,11 @@ export { END_ROUTE, END_ROUTE_ID } from "./constants";
73
73
  // Utils
74
74
  export { generateRouteId, generateStepId, generateToolId } from "./utils/id";
75
75
  export { formatKnowledgeBase } from "./utils/template";
76
- export {
77
- ConditionEvaluator,
78
- createConditionEvaluator,
79
- extractAIContextStrings,
80
- hasProgrammaticConditions
76
+ export {
77
+ ConditionEvaluator,
78
+ createConditionEvaluator,
79
+ extractAIContextStrings,
80
+ hasProgrammaticConditions
81
81
  } from "./utils/condition";
82
82
  export {
83
83
  normalizeHistory,
@@ -163,4 +163,4 @@ export type {
163
163
  BatchExecutionError,
164
164
  } from "./types";
165
165
  export { CompositionMode, EventKind, MessageRole } from "./types";
166
- export { createSession, enterRoute, enterStep, mergeCollected } from "./utils";
166
+ export { createSession, createSessionId, enterRoute, enterStep, mergeCollected } from "./utils";
@@ -4,19 +4,57 @@ import type { CollectedStateData } from "../types/persistence";
4
4
 
5
5
  /**
6
6
  * Helper to create a new session
7
+ *
8
+ * Overload 1: Create with optional sessionId and metadata
7
9
  * @param sessionId - Optional session ID (e.g., from database)
8
10
  * @param metadata - Optional metadata to attach
11
+ *
12
+ * Overload 2: Create from a partial session state (merged with defaults)
13
+ * @param state - Partial session state to merge with defaults
9
14
  */
10
15
  export function createSession<TData = Record<string, unknown>>(
11
16
  sessionId?: string,
12
17
  metadata?: SessionState<TData>["metadata"]
18
+ ): SessionState<TData>;
19
+ export function createSession<TData = Record<string, unknown>>(
20
+ state: Partial<SessionState<TData>>
21
+ ): SessionState<TData>;
22
+ export function createSession<TData = Record<string, unknown>>(
23
+ sessionIdOrState?: string | Partial<SessionState<TData>>,
24
+ metadata?: SessionState<TData>["metadata"]
13
25
  ): SessionState<TData> {
26
+ // Overload 2: partial state object
27
+ if (typeof sessionIdOrState === "object" && sessionIdOrState !== null) {
28
+ const state = sessionIdOrState;
29
+ const now = new Date();
30
+ const id =
31
+ state.id ||
32
+ `session_${Date.now()}_${Math.random().toString(36).slice(2)}`;
33
+
34
+ return {
35
+ id,
36
+ data: state.data ?? ({} as Partial<TData>),
37
+ routeHistory: state.routeHistory ?? [],
38
+ currentRoute: state.currentRoute,
39
+ currentStep: state.currentStep,
40
+ pendingTransition: state.pendingTransition,
41
+ history: state.history,
42
+ metadata: {
43
+ createdAt: now,
44
+ lastUpdatedAt: now,
45
+ ...state.metadata,
46
+ },
47
+ };
48
+ }
49
+
50
+ // Overload 1: sessionId + metadata
14
51
  const id =
15
- sessionId || `session_${Date.now()}_${Math.random().toString(36).slice(2)}`;
52
+ sessionIdOrState ||
53
+ `session_${Date.now()}_${Math.random().toString(36).slice(2)}`;
16
54
 
17
55
  return {
18
56
  id,
19
- data: {} as Partial<TData>, // Agent-level data structure
57
+ data: {} as Partial<TData>,
20
58
  routeHistory: [],
21
59
  metadata: {
22
60
  ...metadata,
@@ -184,17 +222,17 @@ export function sessionDataToStep<TData = Record<string, unknown>>(
184
222
  id: sessionId,
185
223
  currentRoute: data.currentRoute
186
224
  ? {
187
- id: data.currentRoute,
188
- title: collectedData.currentRouteTitle || data.currentRoute,
189
- enteredAt: new Date(),
190
- }
225
+ id: data.currentRoute,
226
+ title: collectedData.currentRouteTitle || data.currentRoute,
227
+ enteredAt: new Date(),
228
+ }
191
229
  : undefined,
192
230
  currentStep: data.currentStep
193
231
  ? {
194
- id: data.currentStep,
195
- description: collectedData.currentStepDescription || undefined,
196
- enteredAt: new Date(),
197
- }
232
+ id: data.currentStep,
233
+ description: collectedData.currentStepDescription || undefined,
234
+ enteredAt: new Date(),
235
+ }
198
236
  : undefined,
199
237
  data: collectedData.data || {},
200
238
  routeHistory: collectedData.routeHistory || [],