@falai/agent 0.8.0 → 0.8.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/cjs/core/Agent.d.ts +8 -8
- package/dist/cjs/core/Agent.d.ts.map +1 -1
- package/dist/cjs/core/Agent.js +2 -2
- package/dist/cjs/core/Agent.js.map +1 -1
- package/dist/cjs/core/PersistenceManager.d.ts +10 -10
- package/dist/cjs/core/PersistenceManager.d.ts.map +1 -1
- package/dist/cjs/core/PersistenceManager.js +9 -9
- package/dist/cjs/core/PersistenceManager.js.map +1 -1
- package/dist/cjs/core/RoutingEngine.d.ts +4 -4
- package/dist/cjs/core/RoutingEngine.d.ts.map +1 -1
- package/dist/cjs/core/RoutingEngine.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/types/agent.d.ts +2 -2
- package/dist/cjs/types/agent.d.ts.map +1 -1
- package/dist/cjs/types/session.d.ts +9 -9
- package/dist/cjs/types/session.d.ts.map +1 -1
- package/dist/cjs/types/session.js +2 -2
- package/dist/cjs/types/session.js.map +1 -1
- package/dist/core/Agent.d.ts +8 -8
- package/dist/core/Agent.d.ts.map +1 -1
- package/dist/core/Agent.js +2 -2
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/PersistenceManager.d.ts +10 -10
- package/dist/core/PersistenceManager.d.ts.map +1 -1
- package/dist/core/PersistenceManager.js +9 -9
- package/dist/core/PersistenceManager.js.map +1 -1
- package/dist/core/RoutingEngine.d.ts +4 -4
- package/dist/core/RoutingEngine.d.ts.map +1 -1
- package/dist/core/RoutingEngine.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/types/agent.d.ts +2 -2
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/session.d.ts +9 -9
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types/session.js +2 -2
- package/dist/types/session.js.map +1 -1
- package/docs/ADAPTERS.md +1 -1
- package/docs/AGENT.md +2 -2
- package/docs/API_REFERENCE.md +15 -15
- package/docs/CONTEXT_MANAGEMENT.md +3 -3
- package/docs/PERSISTENCE.md +7 -7
- package/examples/custom-database-persistence.ts +6 -6
- package/examples/opensearch-persistence.ts +1 -1
- package/examples/prisma-persistence.ts +1 -1
- package/examples/redis-persistence.ts +2 -2
- package/examples/route-transitions.ts +3 -3
- package/package.json +1 -1
- package/src/core/Agent.ts +15 -15
- package/src/core/PersistenceManager.ts +13 -13
- package/src/core/RoutingEngine.ts +6 -6
- package/src/index.ts +1 -1
- package/src/types/agent.ts +2 -2
- package/src/types/session.ts +15 -15
|
@@ -14,7 +14,7 @@ import type {
|
|
|
14
14
|
MessageRepository,
|
|
15
15
|
} from "../types/persistence";
|
|
16
16
|
import type { Event } from "../types/history";
|
|
17
|
-
import type {
|
|
17
|
+
import type { SessionState } from "../types/session";
|
|
18
18
|
import {
|
|
19
19
|
createSession,
|
|
20
20
|
sessionStepToData,
|
|
@@ -223,12 +223,12 @@ export class PersistenceManager {
|
|
|
223
223
|
}
|
|
224
224
|
|
|
225
225
|
/**
|
|
226
|
-
* Save
|
|
227
|
-
* Converts
|
|
226
|
+
* Save SessionState to database
|
|
227
|
+
* Converts SessionState to SessionData and persists it
|
|
228
228
|
*/
|
|
229
|
-
async
|
|
229
|
+
async saveSessionState<TData = Record<string, unknown>>(
|
|
230
230
|
sessionId: string,
|
|
231
|
-
sessionStep:
|
|
231
|
+
sessionStep: SessionState<TData>
|
|
232
232
|
): Promise<SessionData | null> {
|
|
233
233
|
const persistenceData = sessionStepToData(sessionStep);
|
|
234
234
|
|
|
@@ -241,12 +241,12 @@ export class PersistenceManager {
|
|
|
241
241
|
}
|
|
242
242
|
|
|
243
243
|
/**
|
|
244
|
-
* Load
|
|
245
|
-
* Converts SessionData to
|
|
244
|
+
* Load SessionState from database
|
|
245
|
+
* Converts SessionData to SessionState
|
|
246
246
|
*/
|
|
247
|
-
async
|
|
247
|
+
async loadSessionState<TData = Record<string, unknown>>(
|
|
248
248
|
sessionId: string
|
|
249
|
-
): Promise<
|
|
249
|
+
): Promise<SessionState<TData> | null> {
|
|
250
250
|
const sessionData = await this.sessionRepository.findById(sessionId);
|
|
251
251
|
|
|
252
252
|
if (!sessionData) {
|
|
@@ -272,18 +272,18 @@ export class PersistenceManager {
|
|
|
272
272
|
}
|
|
273
273
|
|
|
274
274
|
/**
|
|
275
|
-
* Create session with
|
|
276
|
-
* Returns both SessionData and initialized
|
|
275
|
+
* Create session with SessionState support
|
|
276
|
+
* Returns both SessionData and initialized SessionState
|
|
277
277
|
*/
|
|
278
278
|
async createSessionWithStep<TData = Record<string, unknown>>(
|
|
279
279
|
options: CreateSessionOptions
|
|
280
280
|
): Promise<{
|
|
281
281
|
sessionData: SessionData;
|
|
282
|
-
sessionStep:
|
|
282
|
+
sessionStep: SessionState<TData>;
|
|
283
283
|
}> {
|
|
284
284
|
const sessionData = await this.createSession(options);
|
|
285
285
|
|
|
286
|
-
// Create
|
|
286
|
+
// Create SessionState with database session ID
|
|
287
287
|
const sessionStep = createSession<TData>(sessionData.id, {
|
|
288
288
|
createdAt: sessionData.createdAt,
|
|
289
289
|
lastUpdatedAt: sessionData.updatedAt,
|
|
@@ -3,7 +3,7 @@ import type { Route } from "./Route";
|
|
|
3
3
|
import type { Step } from "./Step";
|
|
4
4
|
import type { StructuredSchema } from "../types/schema";
|
|
5
5
|
import type { RoutingDecision } from "../types/routing";
|
|
6
|
-
import type {
|
|
6
|
+
import type { SessionState } from "../types/session";
|
|
7
7
|
import type { AiProvider } from "../types/ai";
|
|
8
8
|
import { enterRoute, mergeCollected } from "../types/session";
|
|
9
9
|
import { PromptComposer } from "./PromptComposer";
|
|
@@ -42,7 +42,7 @@ export class RoutingEngine<TContext = unknown> {
|
|
|
42
42
|
*/
|
|
43
43
|
private async decideSingleRouteStep(params: {
|
|
44
44
|
route: Route<TContext, unknown>;
|
|
45
|
-
session:
|
|
45
|
+
session: SessionState;
|
|
46
46
|
history: Event[];
|
|
47
47
|
agentMeta?: {
|
|
48
48
|
name?: string;
|
|
@@ -57,7 +57,7 @@ export class RoutingEngine<TContext = unknown> {
|
|
|
57
57
|
selectedRoute?: Route<TContext>;
|
|
58
58
|
selectedStep?: Step<TContext>;
|
|
59
59
|
responseDirectives?: string[];
|
|
60
|
-
session:
|
|
60
|
+
session: SessionState;
|
|
61
61
|
isRouteComplete?: boolean;
|
|
62
62
|
}> {
|
|
63
63
|
const { route, session, history, agentMeta, provider, context, signal } =
|
|
@@ -404,7 +404,7 @@ export class RoutingEngine<TContext = unknown> {
|
|
|
404
404
|
*/
|
|
405
405
|
async decideRouteAndStep(params: {
|
|
406
406
|
routes: Route<TContext, unknown>[];
|
|
407
|
-
session:
|
|
407
|
+
session: SessionState;
|
|
408
408
|
history: Event[];
|
|
409
409
|
agentMeta?: {
|
|
410
410
|
name?: string;
|
|
@@ -419,7 +419,7 @@ export class RoutingEngine<TContext = unknown> {
|
|
|
419
419
|
selectedRoute?: Route<TContext>;
|
|
420
420
|
selectedStep?: Step<TContext>;
|
|
421
421
|
responseDirectives?: string[];
|
|
422
|
-
session:
|
|
422
|
+
session: SessionState;
|
|
423
423
|
isRouteComplete?: boolean;
|
|
424
424
|
}> {
|
|
425
425
|
const { routes, session, history, agentMeta, provider, context, signal } =
|
|
@@ -821,7 +821,7 @@ export class RoutingEngine<TContext = unknown> {
|
|
|
821
821
|
description?: string;
|
|
822
822
|
personality?: string;
|
|
823
823
|
},
|
|
824
|
-
session?:
|
|
824
|
+
session?: SessionState,
|
|
825
825
|
activeRouteSteps?: Array<{
|
|
826
826
|
stepId: string;
|
|
827
827
|
description: string;
|
package/src/index.ts
CHANGED
|
@@ -99,7 +99,7 @@ export type {
|
|
|
99
99
|
RouteCompletionHandler,
|
|
100
100
|
} from "./types/route";
|
|
101
101
|
|
|
102
|
-
export type {
|
|
102
|
+
export type { SessionState, PendingTransition } from "./types/session";
|
|
103
103
|
export {
|
|
104
104
|
createSession,
|
|
105
105
|
enterRoute,
|
package/src/types/agent.ts
CHANGED
|
@@ -6,7 +6,7 @@ import type { AiProvider } from "./ai";
|
|
|
6
6
|
import type { ToolRef } from "./tool";
|
|
7
7
|
import type { RouteOptions } from "./route";
|
|
8
8
|
import type { PersistenceConfig } from "./persistence";
|
|
9
|
-
import type {
|
|
9
|
+
import type { SessionState } from "./session";
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Composition mode determines how the agent processes and structures responses
|
|
@@ -80,7 +80,7 @@ export interface AgentOptions<TContext = unknown> {
|
|
|
80
80
|
/** Default context data available to the agent */
|
|
81
81
|
context?: TContext;
|
|
82
82
|
/** Optional current session for convenience methods */
|
|
83
|
-
session?:
|
|
83
|
+
session?: SessionState;
|
|
84
84
|
/** Context provider function for always-fresh context (alternative to static context) */
|
|
85
85
|
contextProvider?: ContextProvider<TContext>;
|
|
86
86
|
/** Lifecycle hooks for context management */
|
package/src/types/session.ts
CHANGED
|
@@ -18,7 +18,7 @@ export interface PendingTransition {
|
|
|
18
18
|
* Session step tracks the current position in the conversation flow
|
|
19
19
|
* and data collected during the route progression
|
|
20
20
|
*/
|
|
21
|
-
export interface
|
|
21
|
+
export interface SessionState<TData = Record<string, unknown>> {
|
|
22
22
|
/** Unique session identifier (useful for persistence) */
|
|
23
23
|
id?: string;
|
|
24
24
|
|
|
@@ -78,8 +78,8 @@ export interface SessionStep<TData = Record<string, unknown>> {
|
|
|
78
78
|
*/
|
|
79
79
|
export function createSession<TData = Record<string, unknown>>(
|
|
80
80
|
sessionId?: string,
|
|
81
|
-
metadata?:
|
|
82
|
-
):
|
|
81
|
+
metadata?: SessionState<TData>["metadata"]
|
|
82
|
+
): SessionState<TData> {
|
|
83
83
|
return {
|
|
84
84
|
id: sessionId,
|
|
85
85
|
data: {},
|
|
@@ -98,10 +98,10 @@ export function createSession<TData = Record<string, unknown>>(
|
|
|
98
98
|
* Preserves collected data per route in dataByRoute map
|
|
99
99
|
*/
|
|
100
100
|
export function enterRoute<TData = Record<string, unknown>>(
|
|
101
|
-
session:
|
|
101
|
+
session: SessionState<TData>,
|
|
102
102
|
routeId: string,
|
|
103
103
|
routeTitle: string
|
|
104
|
-
):
|
|
104
|
+
): SessionState<TData> {
|
|
105
105
|
// Save current route's collected data before switching
|
|
106
106
|
const dataByRoute = { ...session.dataByRoute };
|
|
107
107
|
if (
|
|
@@ -157,10 +157,10 @@ export function enterRoute<TData = Record<string, unknown>>(
|
|
|
157
157
|
* Helper to update session with new step
|
|
158
158
|
*/
|
|
159
159
|
export function enterStep<TData = Record<string, unknown>>(
|
|
160
|
-
session:
|
|
160
|
+
session: SessionState<TData>,
|
|
161
161
|
stepId: string,
|
|
162
162
|
stepDescription?: string
|
|
163
|
-
):
|
|
163
|
+
): SessionState<TData> {
|
|
164
164
|
return {
|
|
165
165
|
...session,
|
|
166
166
|
currentStep: {
|
|
@@ -180,9 +180,9 @@ export function enterStep<TData = Record<string, unknown>>(
|
|
|
180
180
|
* Updates both the data field and the dataByRoute map
|
|
181
181
|
*/
|
|
182
182
|
export function mergeCollected<TData = Record<string, unknown>>(
|
|
183
|
-
session:
|
|
183
|
+
session: SessionState<TData>,
|
|
184
184
|
data: Partial<unknown>
|
|
185
|
-
):
|
|
185
|
+
): SessionState<TData> {
|
|
186
186
|
const newCollected = {
|
|
187
187
|
...session.data,
|
|
188
188
|
...data,
|
|
@@ -206,11 +206,11 @@ export function mergeCollected<TData = Record<string, unknown>>(
|
|
|
206
206
|
}
|
|
207
207
|
|
|
208
208
|
/**
|
|
209
|
-
* Helper to convert
|
|
209
|
+
* Helper to convert SessionState to persistence-friendly format
|
|
210
210
|
* Used when saving to database
|
|
211
211
|
*/
|
|
212
212
|
export function sessionStepToData<TData = Record<string, unknown>>(
|
|
213
|
-
session:
|
|
213
|
+
session: SessionState<TData>
|
|
214
214
|
): {
|
|
215
215
|
currentRoute?: string;
|
|
216
216
|
currentStep?: string;
|
|
@@ -231,7 +231,7 @@ export function sessionStepToData<TData = Record<string, unknown>>(
|
|
|
231
231
|
}
|
|
232
232
|
|
|
233
233
|
/**
|
|
234
|
-
* Helper to convert database SessionData back to
|
|
234
|
+
* Helper to convert database SessionData back to SessionState
|
|
235
235
|
* Used when loading from database
|
|
236
236
|
* @param sessionId - The database session ID
|
|
237
237
|
* @param data - The database session data
|
|
@@ -243,7 +243,7 @@ export function sessionDataToStep<TData = Record<string, unknown>>(
|
|
|
243
243
|
currentStep?: string;
|
|
244
244
|
collectedData?: Record<string, unknown>;
|
|
245
245
|
}
|
|
246
|
-
):
|
|
246
|
+
): SessionState<TData> {
|
|
247
247
|
const collectedData = data.collectedData || {};
|
|
248
248
|
|
|
249
249
|
return {
|
|
@@ -268,7 +268,7 @@ export function sessionDataToStep<TData = Record<string, unknown>>(
|
|
|
268
268
|
dataByRoute:
|
|
269
269
|
(collectedData.dataByRoute as Record<string, Partial<unknown>>) || {}, // Restore per-route data
|
|
270
270
|
routeHistory:
|
|
271
|
-
(collectedData.routeHistory as
|
|
272
|
-
metadata: (collectedData.metadata as
|
|
271
|
+
(collectedData.routeHistory as SessionState<TData>["routeHistory"]) || [],
|
|
272
|
+
metadata: (collectedData.metadata as SessionState<TData>["metadata"]) || {},
|
|
273
273
|
};
|
|
274
274
|
}
|