@falai/agent 1.1.0 → 1.1.1
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/dist/adapters/MemoryAdapter.d.ts.map +1 -1
- package/dist/adapters/MemoryAdapter.js +2 -1
- package/dist/adapters/MemoryAdapter.js.map +1 -1
- package/dist/adapters/MongoAdapter.d.ts.map +1 -1
- package/dist/adapters/MongoAdapter.js +2 -1
- package/dist/adapters/MongoAdapter.js.map +1 -1
- package/dist/adapters/OpenSearchAdapter.d.ts.map +1 -1
- package/dist/adapters/OpenSearchAdapter.js +2 -1
- package/dist/adapters/OpenSearchAdapter.js.map +1 -1
- package/dist/adapters/PostgreSQLAdapter.d.ts.map +1 -1
- package/dist/adapters/PostgreSQLAdapter.js +2 -1
- package/dist/adapters/PostgreSQLAdapter.js.map +1 -1
- package/dist/adapters/PrismaAdapter.d.ts.map +1 -1
- package/dist/adapters/PrismaAdapter.js +2 -1
- package/dist/adapters/PrismaAdapter.js.map +1 -1
- package/dist/adapters/RedisAdapter.d.ts.map +1 -1
- package/dist/adapters/RedisAdapter.js.map +1 -1
- package/dist/adapters/SQLiteAdapter.d.ts.map +1 -1
- package/dist/adapters/SQLiteAdapter.js.map +1 -1
- package/dist/cjs/adapters/MemoryAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/MemoryAdapter.js +2 -1
- package/dist/cjs/adapters/MemoryAdapter.js.map +1 -1
- package/dist/cjs/adapters/MongoAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/MongoAdapter.js +2 -1
- package/dist/cjs/adapters/MongoAdapter.js.map +1 -1
- package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/OpenSearchAdapter.js +2 -1
- package/dist/cjs/adapters/OpenSearchAdapter.js.map +1 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.js +2 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -1
- package/dist/cjs/adapters/PrismaAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/PrismaAdapter.js +2 -1
- package/dist/cjs/adapters/PrismaAdapter.js.map +1 -1
- package/dist/cjs/adapters/RedisAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/RedisAdapter.js.map +1 -1
- package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -1
- package/dist/cjs/core/BatchExecutor.d.ts.map +1 -1
- package/dist/cjs/core/BatchExecutor.js +1 -4
- package/dist/cjs/core/BatchExecutor.js.map +1 -1
- package/dist/cjs/core/SessionManager.d.ts.map +1 -1
- package/dist/cjs/core/SessionManager.js +4 -11
- package/dist/cjs/core/SessionManager.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +3 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/utils/session.d.ts +6 -0
- package/dist/cjs/utils/session.d.ts.map +1 -1
- package/dist/cjs/utils/session.js +26 -8
- package/dist/cjs/utils/session.js.map +1 -1
- package/dist/core/BatchExecutor.d.ts.map +1 -1
- package/dist/core/BatchExecutor.js +2 -5
- package/dist/core/BatchExecutor.js.map +1 -1
- package/dist/core/SessionManager.d.ts.map +1 -1
- package/dist/core/SessionManager.js +4 -11
- package/dist/core/SessionManager.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/session.d.ts +6 -0
- package/dist/utils/session.d.ts.map +1 -1
- package/dist/utils/session.js +26 -8
- package/dist/utils/session.js.map +1 -1
- package/docs/api/README.md +31 -2
- package/docs/api/overview.md +8 -4
- package/docs/core/conversation-flows/data-collection.md +7 -1
- package/docs/core/conversation-flows/route-dsl.md +8 -1
- package/docs/core/persistence/session-storage.md +12 -0
- package/examples/integrations/database-integration.ts +10 -9
- package/examples/persistence/custom-adapter.ts +12 -15
- package/package.json +1 -1
- package/src/adapters/MemoryAdapter.ts +6 -8
- package/src/adapters/MongoAdapter.ts +6 -8
- package/src/adapters/OpenSearchAdapter.ts +6 -8
- package/src/adapters/PostgreSQLAdapter.ts +6 -8
- package/src/adapters/PrismaAdapter.ts +4 -6
- package/src/adapters/RedisAdapter.ts +4 -7
- package/src/adapters/SQLiteAdapter.ts +6 -9
- package/src/core/BatchExecutor.ts +124 -127
- package/src/core/SessionManager.ts +4 -13
- package/src/index.ts +11 -11
- package/src/utils/session.ts +48 -10
|
@@ -10,6 +10,7 @@ import type { History, HistoryItem } from "../types/history";
|
|
|
10
10
|
import { PersistenceManager } from "./PersistenceManager";
|
|
11
11
|
import type { PersistenceAdapter } from "../types/persistence";
|
|
12
12
|
import type { Agent } from "./Agent";
|
|
13
|
+
import { createSession } from "../utils";
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* SessionManager handles session lifecycle and conversation history
|
|
@@ -93,20 +94,10 @@ export class SessionManager<TData = unknown> {
|
|
|
93
94
|
* Create a new session with optional custom ID
|
|
94
95
|
*/
|
|
95
96
|
private async create(sessionId?: string): Promise<SessionState<TData>> {
|
|
96
|
-
const
|
|
97
|
-
sessionId
|
|
98
|
-
`session_${Date.now()}_${Math.random().toString(36).slice(2)}`;
|
|
99
|
-
|
|
100
|
-
const session: SessionState<TData> = {
|
|
101
|
-
id,
|
|
102
|
-
data: {} as Partial<TData>, // Agent-level data structure
|
|
103
|
-
routeHistory: [],
|
|
97
|
+
const session = createSession<TData>({
|
|
98
|
+
id: sessionId,
|
|
104
99
|
history: [], // Session manages its own history
|
|
105
|
-
|
|
106
|
-
createdAt: new Date(),
|
|
107
|
-
lastUpdatedAt: new Date(),
|
|
108
|
-
},
|
|
109
|
-
};
|
|
100
|
+
});
|
|
110
101
|
|
|
111
102
|
this.currentSession = session;
|
|
112
103
|
|
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";
|
package/src/utils/session.ts
CHANGED
|
@@ -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
|
-
|
|
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>,
|
|
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
|
-
|
|
188
|
-
|
|
189
|
-
|
|
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
|
-
|
|
195
|
-
|
|
196
|
-
|
|
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 || [],
|