@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
package/dist/index.d.ts
CHANGED
|
@@ -41,7 +41,7 @@ export { CompositionMode } from "./types/agent";
|
|
|
41
41
|
export type { Event, EmittedEvent, MessageEventData, ToolEventData, StatusEventData, Participant, } from "./types/history";
|
|
42
42
|
export { EventKind, EventSource } from "./types/history";
|
|
43
43
|
export type { RouteRef, StepRef, RouteOptions, TransitionSpec, TransitionResult, RouteTransitionConfig, RouteCompletionHandler, } from "./types/route";
|
|
44
|
-
export type {
|
|
44
|
+
export type { SessionState, PendingTransition } from "./types/session";
|
|
45
45
|
export { createSession, enterRoute, enterStep, mergeCollected, } from "./types/session";
|
|
46
46
|
export type { ToolContext, ToolResult, ToolHandler, ToolRef, } from "./types/tool";
|
|
47
47
|
export type { AiProvider, GenerateMessageInput, GenerateMessageOutput, AgentStructuredResponse, ReasoningConfig, } from "./types/ai";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types/agent.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import type { AiProvider } from "./ai";
|
|
|
5
5
|
import type { ToolRef } from "./tool";
|
|
6
6
|
import type { RouteOptions } from "./route";
|
|
7
7
|
import type { PersistenceConfig } from "./persistence";
|
|
8
|
-
import type {
|
|
8
|
+
import type { SessionState } from "./session";
|
|
9
9
|
/**
|
|
10
10
|
* Composition mode determines how the agent processes and structures responses
|
|
11
11
|
*/
|
|
@@ -66,7 +66,7 @@ export interface AgentOptions<TContext = unknown> {
|
|
|
66
66
|
/** Default context data available to the agent */
|
|
67
67
|
context?: TContext;
|
|
68
68
|
/** Optional current session for convenience methods */
|
|
69
|
-
session?:
|
|
69
|
+
session?: SessionState;
|
|
70
70
|
/** Context provider function for always-fresh context (alternative to static context) */
|
|
71
71
|
contextProvider?: ContextProvider<TContext>;
|
|
72
72
|
/** Lifecycle hooks for context management */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/types/agent.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/types/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/types/session.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export interface PendingTransition {
|
|
|
16
16
|
* Session step tracks the current position in the conversation flow
|
|
17
17
|
* and data collected during the route progression
|
|
18
18
|
*/
|
|
19
|
-
export interface
|
|
19
|
+
export interface SessionState<TData = Record<string, unknown>> {
|
|
20
20
|
/** Unique session identifier (useful for persistence) */
|
|
21
21
|
id?: string;
|
|
22
22
|
/** Current route the conversation is in */
|
|
@@ -66,32 +66,32 @@ export interface SessionStep<TData = Record<string, unknown>> {
|
|
|
66
66
|
* @param sessionId - Optional session ID (e.g., from database)
|
|
67
67
|
* @param metadata - Optional metadata to attach
|
|
68
68
|
*/
|
|
69
|
-
export declare function createSession<TData = Record<string, unknown>>(sessionId?: string, metadata?:
|
|
69
|
+
export declare function createSession<TData = Record<string, unknown>>(sessionId?: string, metadata?: SessionState<TData>["metadata"]): SessionState<TData>;
|
|
70
70
|
/**
|
|
71
71
|
* Helper to update session with new route
|
|
72
72
|
* Preserves collected data per route in dataByRoute map
|
|
73
73
|
*/
|
|
74
|
-
export declare function enterRoute<TData = Record<string, unknown>>(session:
|
|
74
|
+
export declare function enterRoute<TData = Record<string, unknown>>(session: SessionState<TData>, routeId: string, routeTitle: string): SessionState<TData>;
|
|
75
75
|
/**
|
|
76
76
|
* Helper to update session with new step
|
|
77
77
|
*/
|
|
78
|
-
export declare function enterStep<TData = Record<string, unknown>>(session:
|
|
78
|
+
export declare function enterStep<TData = Record<string, unknown>>(session: SessionState<TData>, stepId: string, stepDescription?: string): SessionState<TData>;
|
|
79
79
|
/**
|
|
80
80
|
* Helper to merge collected data into session
|
|
81
81
|
* Updates both the data field and the dataByRoute map
|
|
82
82
|
*/
|
|
83
|
-
export declare function mergeCollected<TData = Record<string, unknown>>(session:
|
|
83
|
+
export declare function mergeCollected<TData = Record<string, unknown>>(session: SessionState<TData>, data: Partial<unknown>): SessionState<TData>;
|
|
84
84
|
/**
|
|
85
|
-
* Helper to convert
|
|
85
|
+
* Helper to convert SessionState to persistence-friendly format
|
|
86
86
|
* Used when saving to database
|
|
87
87
|
*/
|
|
88
|
-
export declare function sessionStepToData<TData = Record<string, unknown>>(session:
|
|
88
|
+
export declare function sessionStepToData<TData = Record<string, unknown>>(session: SessionState<TData>): {
|
|
89
89
|
currentRoute?: string;
|
|
90
90
|
currentStep?: string;
|
|
91
91
|
collectedData: Record<string, unknown>;
|
|
92
92
|
};
|
|
93
93
|
/**
|
|
94
|
-
* Helper to convert database SessionData back to
|
|
94
|
+
* Helper to convert database SessionData back to SessionState
|
|
95
95
|
* Used when loading from database
|
|
96
96
|
* @param sessionId - The database session ID
|
|
97
97
|
* @param data - The database session data
|
|
@@ -100,5 +100,5 @@ export declare function sessionDataToStep<TData = Record<string, unknown>>(sessi
|
|
|
100
100
|
currentRoute?: string;
|
|
101
101
|
currentStep?: string;
|
|
102
102
|
collectedData?: Record<string, unknown>;
|
|
103
|
-
}):
|
|
103
|
+
}): SessionState<TData>;
|
|
104
104
|
//# sourceMappingURL=session.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/types/session.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,MAAM,EAAE,gBAAgB,GAAG,QAAQ,CAAC;CACrC;AAED;;;GAGG;AACH,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/types/session.ts"],"names":[],"mappings":"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"}
|
package/dist/types/session.js
CHANGED
|
@@ -109,7 +109,7 @@ export function mergeCollected(session, data) {
|
|
|
109
109
|
};
|
|
110
110
|
}
|
|
111
111
|
/**
|
|
112
|
-
* Helper to convert
|
|
112
|
+
* Helper to convert SessionState to persistence-friendly format
|
|
113
113
|
* Used when saving to database
|
|
114
114
|
*/
|
|
115
115
|
export function sessionStepToData(session) {
|
|
@@ -127,7 +127,7 @@ export function sessionStepToData(session) {
|
|
|
127
127
|
};
|
|
128
128
|
}
|
|
129
129
|
/**
|
|
130
|
-
* Helper to convert database SessionData back to
|
|
130
|
+
* Helper to convert database SessionData back to SessionState
|
|
131
131
|
* Used when loading from database
|
|
132
132
|
* @param sessionId - The database session ID
|
|
133
133
|
* @param data - The database session data
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/types/session.ts"],"names":[],"mappings":"AAAA;;GAEG;AAuEH;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,SAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/types/session.ts"],"names":[],"mappings":"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"}
|
package/docs/ADAPTERS.md
CHANGED
|
@@ -206,7 +206,7 @@ export class MyCustomAdapter implements PersistenceAdapter {
|
|
|
206
206
|
|
|
207
207
|
All adapters are fully typed with **zero `any` types** (except for Prisma's dynamic model access):
|
|
208
208
|
|
|
209
|
-
- Generic client interfaces with `
|
|
209
|
+
- Generic client interfaces with `SessionState<TData>` support
|
|
210
210
|
- Typed repository methods
|
|
211
211
|
- Full IDE autocomplete
|
|
212
212
|
- Type-safe data extraction throughout
|
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?: SessionState;
|
|
29
29
|
|
|
30
30
|
// Context provider for always-fresh context
|
|
31
31
|
contextProvider?: () => Promise<TContext> | TContext;
|
|
@@ -522,7 +522,7 @@ const agent = new Agent<MyContext>({
|
|
|
522
522
|
goal?: string,
|
|
523
523
|
provider: AiProvider,
|
|
524
524
|
context?: MyContext,
|
|
525
|
-
session?:
|
|
525
|
+
session?: SessionState, // Optional current session
|
|
526
526
|
maxEngineIterations?: number,
|
|
527
527
|
compositionMode?: CompositionMode,
|
|
528
528
|
terms?: Term[],
|
package/docs/API_REFERENCE.md
CHANGED
|
@@ -91,7 +91,7 @@ const routeData = agent.getData("onboarding");
|
|
|
91
91
|
|
|
92
92
|
- `session`: Session step to use as current session
|
|
93
93
|
|
|
94
|
-
##### `getCurrentSession():
|
|
94
|
+
##### `getCurrentSession(): SessionState | undefined`
|
|
95
95
|
|
|
96
96
|
Gets the currently set session.
|
|
97
97
|
|
|
@@ -119,7 +119,7 @@ Generates an AI response with session step management, data extraction, and inte
|
|
|
119
119
|
```typescript
|
|
120
120
|
interface RespondInput<TContext> {
|
|
121
121
|
history: Event[];
|
|
122
|
-
session?:
|
|
122
|
+
session?: SessionState; // NEW: Session step for conversation tracking
|
|
123
123
|
contextOverride?: Partial<TContext>;
|
|
124
124
|
signal?: AbortSignal;
|
|
125
125
|
}
|
|
@@ -128,7 +128,7 @@ interface RespondOutput {
|
|
|
128
128
|
/** The message to send to the user */
|
|
129
129
|
message: string;
|
|
130
130
|
/** Updated session step (includes collected data, current route/step) */
|
|
131
|
-
session?:
|
|
131
|
+
session?: SessionState;
|
|
132
132
|
/** Tool calls executed during response (for debugging) */
|
|
133
133
|
toolCalls?: Array<{
|
|
134
134
|
toolName: string;
|
|
@@ -192,13 +192,13 @@ const response2 = await agent.respond({
|
|
|
192
192
|
**Example with Custom Database (Manual):**
|
|
193
193
|
|
|
194
194
|
```typescript
|
|
195
|
-
import { createSession,
|
|
195
|
+
import { createSession, SessionState } from "@falai/agent";
|
|
196
196
|
|
|
197
197
|
// Load from your custom database
|
|
198
198
|
const dbSession = await yourDb.sessions.findOne({ id: sessionId });
|
|
199
199
|
|
|
200
200
|
// Restore or create session step
|
|
201
|
-
let agentSession:
|
|
201
|
+
let agentSession: SessionState<YourDataType>;
|
|
202
202
|
|
|
203
203
|
if (dbSession && dbSession.currentRoute && dbSession.collectedData) {
|
|
204
204
|
// Restore existing session from database
|
|
@@ -372,7 +372,7 @@ interface StreamChunk {
|
|
|
372
372
|
/** Whether this is the final chunk */
|
|
373
373
|
done: boolean;
|
|
374
374
|
/** Updated session step (includes collected data, current route/step) */
|
|
375
|
-
session?:
|
|
375
|
+
session?: SessionState;
|
|
376
376
|
/** Tool calls requested by the agent (only in final chunk) */
|
|
377
377
|
toolCalls?: Array<{
|
|
378
378
|
toolName: string;
|
|
@@ -1745,12 +1745,12 @@ interface ToolResult<TReturn> {
|
|
|
1745
1745
|
|
|
1746
1746
|
## Types
|
|
1747
1747
|
|
|
1748
|
-
### `
|
|
1748
|
+
### `SessionState<TData>`
|
|
1749
1749
|
|
|
1750
1750
|
Tracks the current position in the conversation flow and data collected during route progression.
|
|
1751
1751
|
|
|
1752
1752
|
```typescript
|
|
1753
|
-
interface
|
|
1753
|
+
interface SessionState<TData = Record<string, unknown>> {
|
|
1754
1754
|
/** Unique session identifier (useful for persistence) */
|
|
1755
1755
|
id?: string;
|
|
1756
1756
|
|
|
@@ -1843,7 +1843,7 @@ console.log(response.session?.data.destination); // Type-safe!
|
|
|
1843
1843
|
|
|
1844
1844
|
### Session Helper Functions
|
|
1845
1845
|
|
|
1846
|
-
#### `createSession<TData>(sessionId?, metadata?):
|
|
1846
|
+
#### `createSession<TData>(sessionId?, metadata?): SessionState<TData>`
|
|
1847
1847
|
|
|
1848
1848
|
Creates a new session step object.
|
|
1849
1849
|
|
|
@@ -1868,7 +1868,7 @@ const session = createSession<OnboardingData>("session_123", {
|
|
|
1868
1868
|
});
|
|
1869
1869
|
```
|
|
1870
1870
|
|
|
1871
|
-
#### `enterRoute<TData>(session, routeId, routeTitle):
|
|
1871
|
+
#### `enterRoute<TData>(session, routeId, routeTitle): SessionState<TData>`
|
|
1872
1872
|
|
|
1873
1873
|
Updates session when entering a new route. Automatically:
|
|
1874
1874
|
|
|
@@ -1889,7 +1889,7 @@ console.log(session.currentRoute?.title); // "Book a Flight"
|
|
|
1889
1889
|
console.log(session.data); // {} (reset for new route)
|
|
1890
1890
|
```
|
|
1891
1891
|
|
|
1892
|
-
#### `enterStep<TData>(session, stepId, description?):
|
|
1892
|
+
#### `enterStep<TData>(session, stepId, description?): SessionState<TData>`
|
|
1893
1893
|
|
|
1894
1894
|
Updates session when entering a new step within a route.
|
|
1895
1895
|
|
|
@@ -1902,7 +1902,7 @@ console.log(session.currentStep?.id); // "ask_destination"
|
|
|
1902
1902
|
console.log(session.currentStep?.description); // "Ask where to fly"
|
|
1903
1903
|
```
|
|
1904
1904
|
|
|
1905
|
-
#### `mergeData<TData>(session, data):
|
|
1905
|
+
#### `mergeData<TData>(session, data): SessionState<TData>`
|
|
1906
1906
|
|
|
1907
1907
|
Merges new collected data into session. Updates timestamps automatically.
|
|
1908
1908
|
|
|
@@ -1919,7 +1919,7 @@ console.log(session.data); // { destination: "Paris", departureDate: "2025-06-15
|
|
|
1919
1919
|
|
|
1920
1920
|
#### `sessionStepToData<TData>(session): object`
|
|
1921
1921
|
|
|
1922
|
-
Converts
|
|
1922
|
+
Converts SessionState to persistence-friendly format for database storage.
|
|
1923
1923
|
|
|
1924
1924
|
**Returns:**
|
|
1925
1925
|
|
|
@@ -1952,9 +1952,9 @@ await db.sessions.update(session.id!, {
|
|
|
1952
1952
|
});
|
|
1953
1953
|
```
|
|
1954
1954
|
|
|
1955
|
-
#### `sessionDataToStep<TData>(sessionId, data):
|
|
1955
|
+
#### `sessionDataToStep<TData>(sessionId, data): SessionState<TData>`
|
|
1956
1956
|
|
|
1957
|
-
Converts database data back to
|
|
1957
|
+
Converts database data back to SessionState for resuming conversations.
|
|
1958
1958
|
|
|
1959
1959
|
**Parameters:**
|
|
1960
1960
|
|
|
@@ -15,7 +15,7 @@ Session step tracks three key aspects of a conversation:
|
|
|
15
15
|
3. **Collected data** - Structured data collected so far
|
|
16
16
|
|
|
17
17
|
```typescript
|
|
18
|
-
import { createSession,
|
|
18
|
+
import { createSession, SessionState } from "@falai/agent";
|
|
19
19
|
|
|
20
20
|
// Define your data extraction type
|
|
21
21
|
interface FlightData {
|
|
@@ -61,7 +61,7 @@ import {
|
|
|
61
61
|
enterRoute,
|
|
62
62
|
enterStep,
|
|
63
63
|
mergeData,
|
|
64
|
-
type
|
|
64
|
+
type SessionState,
|
|
65
65
|
} from "@falai/agent";
|
|
66
66
|
|
|
67
67
|
// Create a new session
|
|
@@ -84,7 +84,7 @@ session = mergeData(session, {
|
|
|
84
84
|
### Session Step Structure
|
|
85
85
|
|
|
86
86
|
```typescript
|
|
87
|
-
interface
|
|
87
|
+
interface SessionState<TData = unknown> {
|
|
88
88
|
currentRoute?: {
|
|
89
89
|
id: string;
|
|
90
90
|
title: string;
|
package/docs/PERSISTENCE.md
CHANGED
|
@@ -270,7 +270,7 @@ await agent.updateContext({ preferences: { theme: "dark" } });
|
|
|
270
270
|
|
|
271
271
|
## Session Step Integration
|
|
272
272
|
|
|
273
|
-
The new architecture automatically saves and loads `
|
|
273
|
+
The new architecture automatically saves and loads `SessionState<TData>` which includes:
|
|
274
274
|
|
|
275
275
|
- **Current route and step** - Track conversation progress
|
|
276
276
|
- **Collected data** - All data collected via `schema` and `collect` fields
|
|
@@ -280,7 +280,7 @@ The new architecture automatically saves and loads `SessionStep<TData>` which in
|
|
|
280
280
|
### How It Works
|
|
281
281
|
|
|
282
282
|
1. **Auto-Save**: When `autoSave: true`, session step is automatically persisted after each `respond()` call
|
|
283
|
-
2. **Conversion**: `
|
|
283
|
+
2. **Conversion**: `SessionState` is automatically converted to `SessionData` for storage
|
|
284
284
|
3. **Recovery**: Load session step from database to resume conversations
|
|
285
285
|
|
|
286
286
|
### Create Session with Step
|
|
@@ -303,14 +303,14 @@ const { sessionData, sessionStep } =
|
|
|
303
303
|
|
|
304
304
|
```typescript
|
|
305
305
|
// Manual save (not needed if autoSave: true)
|
|
306
|
-
await persistence.
|
|
306
|
+
await persistence.saveSessionState(sessionId, sessionStep);
|
|
307
307
|
```
|
|
308
308
|
|
|
309
309
|
### Load Session Step
|
|
310
310
|
|
|
311
311
|
```typescript
|
|
312
312
|
// Load session step from database
|
|
313
|
-
const sessionStep = await persistence.
|
|
313
|
+
const sessionStep = await persistence.loadSessionState<YourDataType>(sessionId);
|
|
314
314
|
|
|
315
315
|
// Load message history
|
|
316
316
|
const history = await persistence.loadSessionHistory(sessionId);
|
|
@@ -374,10 +374,10 @@ const { sessionData, sessionStep } =
|
|
|
374
374
|
});
|
|
375
375
|
|
|
376
376
|
// Save session step (NEW!)
|
|
377
|
-
await persistence.
|
|
377
|
+
await persistence.saveSessionState(sessionId, sessionStep);
|
|
378
378
|
|
|
379
379
|
// Load session step (NEW!)
|
|
380
|
-
const sessionStep = await persistence.
|
|
380
|
+
const sessionStep = await persistence.loadSessionState<YourDataType>(sessionId);
|
|
381
381
|
|
|
382
382
|
// Create session (legacy)
|
|
383
383
|
await persistence.createSession({
|
|
@@ -531,7 +531,7 @@ await persistence.saveMessage({
|
|
|
531
531
|
2. ✅ **Enable `autoSave: true`** - Automatically persist session step after each response
|
|
532
532
|
3. ✅ **Define extraction schemas** - Use `schema` in routes for structured data collection
|
|
533
533
|
4. ✅ **Pass session step** - Always pass `session` parameter to `agent.respond()`
|
|
534
|
-
5. ✅ **Load session step** - Use `
|
|
534
|
+
5. ✅ **Load session step** - Use `loadSessionState()` to resume conversations
|
|
535
535
|
6. ✅ **Store collected data** - Leverage `collectedData.data` for user input tracking
|
|
536
536
|
7. ✅ **Index frequently queried fields** - Add database indexes on `userId`, `status`, etc.
|
|
537
537
|
8. ✅ **Use cascading deletes** - Clean up messages automatically when deleting sessions
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
createMessageEvent,
|
|
17
17
|
EventSource,
|
|
18
18
|
createSession,
|
|
19
|
-
|
|
19
|
+
SessionState,
|
|
20
20
|
MessageEventData,
|
|
21
21
|
Event,
|
|
22
22
|
END_ROUTE,
|
|
@@ -218,9 +218,9 @@ async function example() {
|
|
|
218
218
|
}
|
|
219
219
|
|
|
220
220
|
/**
|
|
221
|
-
* Convert database session to agent
|
|
221
|
+
* Convert database session to agent SessionState
|
|
222
222
|
*/
|
|
223
|
-
let agentSession:
|
|
223
|
+
let agentSession: SessionState<OnboardingData>;
|
|
224
224
|
|
|
225
225
|
if (dbSession.currentRoute && dbSession.collectedData) {
|
|
226
226
|
// Restore existing session from database
|
|
@@ -248,7 +248,7 @@ async function example() {
|
|
|
248
248
|
>) || {},
|
|
249
249
|
routeHistory:
|
|
250
250
|
(dbSession.collectedData
|
|
251
|
-
?.routeHistory as
|
|
251
|
+
?.routeHistory as SessionState<OnboardingData>["routeHistory"]) || [],
|
|
252
252
|
metadata: {
|
|
253
253
|
sessionId: dbSession.id,
|
|
254
254
|
userId,
|
|
@@ -404,7 +404,7 @@ async function example() {
|
|
|
404
404
|
if (!reloadedDbSession) throw new Error("Session not found");
|
|
405
405
|
|
|
406
406
|
// Reconstruct session step
|
|
407
|
-
const recoveredSession:
|
|
407
|
+
const recoveredSession: SessionState<OnboardingData> = {
|
|
408
408
|
currentRoute: reloadedDbSession.currentRoute
|
|
409
409
|
? {
|
|
410
410
|
id: reloadedDbSession.currentRoute,
|
|
@@ -430,7 +430,7 @@ async function example() {
|
|
|
430
430
|
>) || {},
|
|
431
431
|
routeHistory:
|
|
432
432
|
(reloadedDbSession.collectedData
|
|
433
|
-
?.routeHistory as
|
|
433
|
+
?.routeHistory as SessionState<OnboardingData>["routeHistory"]) || [],
|
|
434
434
|
metadata: {
|
|
435
435
|
sessionId: reloadedDbSession.id,
|
|
436
436
|
userId,
|
|
@@ -248,7 +248,7 @@ async function example() {
|
|
|
248
248
|
|
|
249
249
|
// Load session from OpenSearch
|
|
250
250
|
console.log("\n--- Loading Session from OpenSearch ---");
|
|
251
|
-
const loadedSession = await persistence.
|
|
251
|
+
const loadedSession = await persistence.loadSessionState<ComplaintData>(
|
|
252
252
|
sessionData.id
|
|
253
253
|
);
|
|
254
254
|
|
|
@@ -333,7 +333,7 @@ async function example() {
|
|
|
333
333
|
* Load session step from database (demonstrates persistence)
|
|
334
334
|
*/
|
|
335
335
|
console.log("\n--- Loading Session from Database ---");
|
|
336
|
-
const loadedSession = await persistence.
|
|
336
|
+
const loadedSession = await persistence.loadSessionState<FlightBookingData>(
|
|
337
337
|
dbSessionId
|
|
338
338
|
);
|
|
339
339
|
|
|
@@ -251,7 +251,7 @@ async function example() {
|
|
|
251
251
|
|
|
252
252
|
// Load session step from Redis (demonstrates persistence)
|
|
253
253
|
console.log("\n--- Loading Session from Redis ---");
|
|
254
|
-
const loadedSession = await persistence.
|
|
254
|
+
const loadedSession = await persistence.loadSessionState<SupportTicketData>(
|
|
255
255
|
sessionData.id
|
|
256
256
|
);
|
|
257
257
|
|
|
@@ -433,7 +433,7 @@ async function sessionRecoveryExample() {
|
|
|
433
433
|
console.log("\n--- User Reconnects ---");
|
|
434
434
|
|
|
435
435
|
// Load session from Redis
|
|
436
|
-
const recoveredSession = await persistence.
|
|
436
|
+
const recoveredSession = await persistence.loadSessionState<OrderData>(
|
|
437
437
|
sessionId
|
|
438
438
|
);
|
|
439
439
|
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
createMessageEvent,
|
|
15
15
|
EventSource,
|
|
16
16
|
END_ROUTE,
|
|
17
|
-
type
|
|
17
|
+
type SessionState,
|
|
18
18
|
} from "../src/index";
|
|
19
19
|
|
|
20
20
|
// Type definitions for our booking data
|
|
@@ -138,7 +138,7 @@ async function main() {
|
|
|
138
138
|
console.log("\n=== Route Transitions Example ===\n");
|
|
139
139
|
|
|
140
140
|
// Conversation 1: User provides all booking info at once
|
|
141
|
-
let session:
|
|
141
|
+
let session: SessionState | undefined;
|
|
142
142
|
let history = [
|
|
143
143
|
createMessageEvent(
|
|
144
144
|
EventSource.CUSTOMER,
|
|
@@ -209,7 +209,7 @@ async function main() {
|
|
|
209
209
|
console.log("\n=== Manual Transition Example ===\n");
|
|
210
210
|
|
|
211
211
|
// Demonstrate manual transition using agent.nextStepRoute()
|
|
212
|
-
let session2:
|
|
212
|
+
let session2: SessionState | undefined;
|
|
213
213
|
let history2 = [
|
|
214
214
|
createMessageEvent(
|
|
215
215
|
EventSource.CUSTOMER,
|
package/package.json
CHANGED
package/src/core/Agent.ts
CHANGED
|
@@ -6,7 +6,7 @@ import type { AgentOptions, Term, Guideline, Capability } from "../types/agent";
|
|
|
6
6
|
import type { Event, StepRef } from "../types/index";
|
|
7
7
|
import type { RouteOptions } from "../types/route";
|
|
8
8
|
|
|
9
|
-
import type {
|
|
9
|
+
import type { SessionState } from "../types/session";
|
|
10
10
|
import type { AgentStructuredResponse } from "../types/ai";
|
|
11
11
|
import {
|
|
12
12
|
createSession,
|
|
@@ -42,7 +42,7 @@ export class Agent<TContext = unknown> {
|
|
|
42
42
|
private persistenceManager: PersistenceManager | undefined;
|
|
43
43
|
private routingEngine: RoutingEngine<TContext>;
|
|
44
44
|
private responseEngine: ResponseEngine<TContext>;
|
|
45
|
-
private currentSession?:
|
|
45
|
+
private currentSession?: SessionState;
|
|
46
46
|
|
|
47
47
|
/**
|
|
48
48
|
* Dynamic domain property - populated via addDomain
|
|
@@ -236,9 +236,9 @@ export class Agent<TContext = unknown> {
|
|
|
236
236
|
* @internal
|
|
237
237
|
*/
|
|
238
238
|
private async updateData<TData = unknown>(
|
|
239
|
-
session:
|
|
239
|
+
session: SessionState<TData>,
|
|
240
240
|
collectedUpdate: Partial<TData>
|
|
241
|
-
): Promise<
|
|
241
|
+
): Promise<SessionState<TData>> {
|
|
242
242
|
const previousCollected = { ...session.data };
|
|
243
243
|
|
|
244
244
|
// Merge new collected data
|
|
@@ -279,14 +279,14 @@ export class Agent<TContext = unknown> {
|
|
|
279
279
|
async *respondStream(params: {
|
|
280
280
|
history: Event[];
|
|
281
281
|
step?: StepRef;
|
|
282
|
-
session?:
|
|
282
|
+
session?: SessionState;
|
|
283
283
|
contextOverride?: Partial<TContext>;
|
|
284
284
|
signal?: AbortSignal;
|
|
285
285
|
}): AsyncGenerator<{
|
|
286
286
|
delta: string;
|
|
287
287
|
accumulated: string;
|
|
288
288
|
done: boolean;
|
|
289
|
-
session?:
|
|
289
|
+
session?: SessionState;
|
|
290
290
|
toolCalls?: Array<{ toolName: string; arguments: Record<string, unknown> }>;
|
|
291
291
|
isRouteComplete?: boolean;
|
|
292
292
|
}> {
|
|
@@ -548,7 +548,7 @@ export class Agent<TContext = unknown> {
|
|
|
548
548
|
session.id &&
|
|
549
549
|
this.options.persistence?.autoSave !== false
|
|
550
550
|
) {
|
|
551
|
-
await this.persistenceManager.
|
|
551
|
+
await this.persistenceManager.saveSessionState(session.id, session);
|
|
552
552
|
logger.debug(
|
|
553
553
|
`[Agent] Auto-saved session step to persistence: ${session.id}`
|
|
554
554
|
);
|
|
@@ -740,12 +740,12 @@ export class Agent<TContext = unknown> {
|
|
|
740
740
|
async respond(params: {
|
|
741
741
|
history: Event[];
|
|
742
742
|
step?: StepRef;
|
|
743
|
-
session?:
|
|
743
|
+
session?: SessionState;
|
|
744
744
|
contextOverride?: Partial<TContext>;
|
|
745
745
|
signal?: AbortSignal;
|
|
746
746
|
}): Promise<{
|
|
747
747
|
message: string;
|
|
748
|
-
session?:
|
|
748
|
+
session?: SessionState;
|
|
749
749
|
toolCalls?: Array<{ toolName: string; arguments: Record<string, unknown> }>;
|
|
750
750
|
isRouteComplete?: boolean;
|
|
751
751
|
}> {
|
|
@@ -1142,7 +1142,7 @@ export class Agent<TContext = unknown> {
|
|
|
1142
1142
|
session.id &&
|
|
1143
1143
|
this.options.persistence?.autoSave !== false
|
|
1144
1144
|
) {
|
|
1145
|
-
await this.persistenceManager.
|
|
1145
|
+
await this.persistenceManager.saveSessionState(session.id, session);
|
|
1146
1146
|
logger.debug(
|
|
1147
1147
|
`[Agent] Auto-saved session step to persistence: ${session.id}`
|
|
1148
1148
|
);
|
|
@@ -1250,14 +1250,14 @@ export class Agent<TContext = unknown> {
|
|
|
1250
1250
|
* Set the current session for convenience methods
|
|
1251
1251
|
* @param session - Session step to use for subsequent calls
|
|
1252
1252
|
*/
|
|
1253
|
-
setCurrentSession(session:
|
|
1253
|
+
setCurrentSession(session: SessionState): void {
|
|
1254
1254
|
this.currentSession = session;
|
|
1255
1255
|
}
|
|
1256
1256
|
|
|
1257
1257
|
/**
|
|
1258
1258
|
* Get the current session (if set)
|
|
1259
1259
|
*/
|
|
1260
|
-
getCurrentSession():
|
|
1260
|
+
getCurrentSession(): SessionState | undefined {
|
|
1261
1261
|
return this.currentSession;
|
|
1262
1262
|
}
|
|
1263
1263
|
|
|
@@ -1305,9 +1305,9 @@ export class Agent<TContext = unknown> {
|
|
|
1305
1305
|
*/
|
|
1306
1306
|
nextStepRoute(
|
|
1307
1307
|
routeIdOrTitle: string,
|
|
1308
|
-
session?:
|
|
1308
|
+
session?: SessionState,
|
|
1309
1309
|
condition?: string
|
|
1310
|
-
):
|
|
1310
|
+
): SessionState {
|
|
1311
1311
|
const targetSession = session || this.currentSession;
|
|
1312
1312
|
|
|
1313
1313
|
if (!targetSession) {
|
|
@@ -1329,7 +1329,7 @@ export class Agent<TContext = unknown> {
|
|
|
1329
1329
|
);
|
|
1330
1330
|
}
|
|
1331
1331
|
|
|
1332
|
-
const updatedSession:
|
|
1332
|
+
const updatedSession: SessionState = {
|
|
1333
1333
|
...targetSession,
|
|
1334
1334
|
pendingTransition: {
|
|
1335
1335
|
targetRouteId: targetRoute.id,
|