@falai/agent 0.6.8 → 0.7.0
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/README.md +62 -59
- package/dist/adapters/MemoryAdapter.js +2 -2
- package/dist/adapters/MemoryAdapter.js.map +1 -1
- package/dist/adapters/MongoAdapter.js +2 -2
- package/dist/adapters/MongoAdapter.js.map +1 -1
- package/dist/adapters/OpenSearchAdapter.js +7 -7
- package/dist/adapters/OpenSearchAdapter.js.map +1 -1
- package/dist/adapters/PostgreSQLAdapter.js +9 -9
- package/dist/adapters/PostgreSQLAdapter.js.map +1 -1
- package/dist/adapters/PrismaAdapter.js +3 -3
- package/dist/adapters/PrismaAdapter.js.map +1 -1
- package/dist/adapters/RedisAdapter.js +2 -2
- package/dist/adapters/RedisAdapter.js.map +1 -1
- package/dist/adapters/SQLiteAdapter.d.ts +3 -3
- package/dist/adapters/SQLiteAdapter.d.ts.map +1 -1
- package/dist/adapters/SQLiteAdapter.js +11 -11
- package/dist/adapters/SQLiteAdapter.js.map +1 -1
- package/dist/adapters/index.d.ts +1 -1
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/cjs/adapters/MemoryAdapter.js +2 -2
- package/dist/cjs/adapters/MemoryAdapter.js.map +1 -1
- package/dist/cjs/adapters/MongoAdapter.js +2 -2
- package/dist/cjs/adapters/MongoAdapter.js.map +1 -1
- package/dist/cjs/adapters/OpenSearchAdapter.js +7 -7
- package/dist/cjs/adapters/OpenSearchAdapter.js.map +1 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.js +9 -9
- package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -1
- package/dist/cjs/adapters/PrismaAdapter.js +3 -3
- package/dist/cjs/adapters/PrismaAdapter.js.map +1 -1
- package/dist/cjs/adapters/RedisAdapter.js +2 -2
- package/dist/cjs/adapters/RedisAdapter.js.map +1 -1
- package/dist/cjs/adapters/SQLiteAdapter.d.ts +3 -3
- package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/SQLiteAdapter.js +11 -11
- package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -1
- package/dist/cjs/adapters/index.d.ts +1 -1
- package/dist/cjs/adapters/index.d.ts.map +1 -1
- package/dist/cjs/constants/index.d.ts +4 -4
- package/dist/cjs/constants/index.js +5 -5
- package/dist/cjs/core/Agent.d.ts +22 -22
- package/dist/cjs/core/Agent.d.ts.map +1 -1
- package/dist/cjs/core/Agent.js +160 -152
- package/dist/cjs/core/Agent.js.map +1 -1
- package/dist/cjs/core/Events.d.ts +6 -6
- package/dist/cjs/core/Events.d.ts.map +1 -1
- package/dist/cjs/core/PersistenceManager.d.ts +13 -13
- package/dist/cjs/core/PersistenceManager.d.ts.map +1 -1
- package/dist/cjs/core/PersistenceManager.js +24 -24
- package/dist/cjs/core/PersistenceManager.js.map +1 -1
- package/dist/cjs/core/ResponseEngine.d.ts +3 -8
- package/dist/cjs/core/ResponseEngine.d.ts.map +1 -1
- package/dist/cjs/core/ResponseEngine.js +8 -8
- package/dist/cjs/core/ResponseEngine.js.map +1 -1
- package/dist/cjs/core/Route.d.ts +17 -17
- package/dist/cjs/core/Route.d.ts.map +1 -1
- package/dist/cjs/core/Route.js +33 -33
- package/dist/cjs/core/Route.js.map +1 -1
- package/dist/cjs/core/RoutingEngine.d.ts +30 -30
- package/dist/cjs/core/RoutingEngine.d.ts.map +1 -1
- package/dist/cjs/core/RoutingEngine.js +192 -192
- package/dist/cjs/core/RoutingEngine.js.map +1 -1
- package/dist/cjs/core/Step.d.ts +72 -0
- package/dist/cjs/core/Step.d.ts.map +1 -0
- package/dist/cjs/core/Step.js +150 -0
- package/dist/cjs/core/Step.js.map +1 -0
- package/dist/cjs/core/ToolExecutor.d.ts +5 -5
- package/dist/cjs/core/ToolExecutor.d.ts.map +1 -1
- package/dist/cjs/core/ToolExecutor.js +8 -8
- package/dist/cjs/core/ToolExecutor.js.map +1 -1
- package/dist/cjs/core/Transition.d.ts +14 -14
- package/dist/cjs/core/Transition.d.ts.map +1 -1
- package/dist/cjs/core/Transition.js +48 -19
- package/dist/cjs/core/Transition.js.map +1 -1
- package/dist/cjs/index.d.ts +7 -7
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +8 -8
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/agent.d.ts +8 -8
- package/dist/cjs/types/agent.d.ts.map +1 -1
- package/dist/cjs/types/ai.d.ts +2 -2
- package/dist/cjs/types/ai.d.ts.map +1 -1
- package/dist/cjs/types/history.d.ts +3 -3
- package/dist/cjs/types/history.d.ts.map +1 -1
- package/dist/cjs/types/index.d.ts +1 -1
- package/dist/cjs/types/index.d.ts.map +1 -1
- package/dist/cjs/types/persistence.d.ts +5 -5
- package/dist/cjs/types/persistence.d.ts.map +1 -1
- package/dist/cjs/types/route.d.ts +57 -52
- package/dist/cjs/types/route.d.ts.map +1 -1
- package/dist/cjs/types/session.d.ts +27 -27
- package/dist/cjs/types/session.d.ts.map +1 -1
- package/dist/cjs/types/session.js +48 -50
- package/dist/cjs/types/session.js.map +1 -1
- package/dist/cjs/types/tool.d.ts +13 -13
- package/dist/cjs/types/tool.d.ts.map +1 -1
- package/dist/cjs/utils/id.d.ts +8 -3
- package/dist/cjs/utils/id.d.ts.map +1 -1
- package/dist/cjs/utils/id.js +16 -7
- package/dist/cjs/utils/id.js.map +1 -1
- package/dist/constants/index.d.ts +4 -4
- package/dist/constants/index.js +4 -4
- package/dist/core/Agent.d.ts +22 -22
- package/dist/core/Agent.d.ts.map +1 -1
- package/dist/core/Agent.js +162 -154
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/Events.d.ts +6 -6
- package/dist/core/Events.d.ts.map +1 -1
- package/dist/core/PersistenceManager.d.ts +13 -13
- package/dist/core/PersistenceManager.d.ts.map +1 -1
- package/dist/core/PersistenceManager.js +25 -25
- package/dist/core/PersistenceManager.js.map +1 -1
- package/dist/core/ResponseEngine.d.ts +3 -8
- package/dist/core/ResponseEngine.d.ts.map +1 -1
- package/dist/core/ResponseEngine.js +8 -8
- package/dist/core/ResponseEngine.js.map +1 -1
- package/dist/core/Route.d.ts +17 -17
- package/dist/core/Route.d.ts.map +1 -1
- package/dist/core/Route.js +33 -33
- package/dist/core/Route.js.map +1 -1
- package/dist/core/RoutingEngine.d.ts +30 -30
- package/dist/core/RoutingEngine.d.ts.map +1 -1
- package/dist/core/RoutingEngine.js +193 -193
- package/dist/core/RoutingEngine.js.map +1 -1
- package/dist/core/Step.d.ts +72 -0
- package/dist/core/Step.d.ts.map +1 -0
- package/dist/core/Step.js +146 -0
- package/dist/core/Step.js.map +1 -0
- package/dist/core/ToolExecutor.d.ts +5 -5
- package/dist/core/ToolExecutor.d.ts.map +1 -1
- package/dist/core/ToolExecutor.js +8 -8
- package/dist/core/ToolExecutor.js.map +1 -1
- package/dist/core/Transition.d.ts +14 -14
- package/dist/core/Transition.d.ts.map +1 -1
- package/dist/core/Transition.js +48 -19
- package/dist/core/Transition.js.map +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/types/agent.d.ts +8 -8
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/ai.d.ts +2 -2
- package/dist/types/ai.d.ts.map +1 -1
- package/dist/types/history.d.ts +3 -3
- package/dist/types/history.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/persistence.d.ts +5 -5
- package/dist/types/persistence.d.ts.map +1 -1
- package/dist/types/route.d.ts +57 -52
- package/dist/types/route.d.ts.map +1 -1
- package/dist/types/session.d.ts +27 -27
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types/session.js +44 -46
- package/dist/types/session.js.map +1 -1
- package/dist/types/tool.d.ts +13 -13
- package/dist/types/tool.d.ts.map +1 -1
- package/dist/utils/id.d.ts +8 -3
- package/dist/utils/id.d.ts.map +1 -1
- package/dist/utils/id.js +14 -6
- package/dist/utils/id.js.map +1 -1
- package/docs/ADAPTERS.md +21 -21
- package/docs/AGENT.md +57 -55
- package/docs/API_REFERENCE.md +218 -220
- package/docs/ARCHITECTURE.md +99 -104
- package/docs/CONTEXT_MANAGEMENT.md +81 -88
- package/docs/DOCS.md +18 -18
- package/docs/DOMAINS.md +16 -16
- package/docs/EXAMPLES.md +43 -43
- package/docs/GETTING_STARTED.md +60 -63
- package/docs/PERSISTENCE.md +66 -70
- package/docs/PROVIDERS.md +2 -2
- package/docs/README.md +6 -6
- package/docs/ROUTES.md +218 -220
- package/docs/STEPS.md +883 -0
- package/examples/business-onboarding.ts +84 -81
- package/examples/company-qna-agent.ts +68 -67
- package/examples/custom-database-persistence.ts +87 -89
- package/examples/declarative-agent.ts +32 -32
- package/examples/domain-scoping.ts +18 -18
- package/examples/extracted-data-modification.ts +92 -97
- package/examples/healthcare-agent.ts +89 -91
- package/examples/openai-agent.ts +29 -32
- package/examples/opensearch-persistence.ts +43 -45
- package/examples/persistent-onboarding.ts +65 -66
- package/examples/prisma-persistence.ts +108 -112
- package/examples/prisma-schema.example.prisma +3 -3
- package/examples/redis-persistence.ts +67 -73
- package/examples/route-transitions.ts +71 -47
- package/examples/rules-prohibitions.ts +28 -28
- package/examples/streaming-agent.ts +24 -24
- package/examples/travel-agent.ts +94 -109
- package/package.json +1 -1
- package/src/adapters/MemoryAdapter.ts +3 -3
- package/src/adapters/MongoAdapter.ts +3 -3
- package/src/adapters/OpenSearchAdapter.ts +8 -8
- package/src/adapters/PostgreSQLAdapter.ts +10 -10
- package/src/adapters/PrismaAdapter.ts +4 -4
- package/src/adapters/RedisAdapter.ts +3 -3
- package/src/adapters/SQLiteAdapter.ts +15 -15
- package/src/adapters/index.ts +1 -1
- package/src/constants/index.ts +4 -4
- package/src/core/Agent.ts +210 -206
- package/src/core/Events.ts +12 -12
- package/src/core/PersistenceManager.ts +32 -36
- package/src/core/ResponseEngine.ts +11 -17
- package/src/core/Route.ts +55 -49
- package/src/core/RoutingEngine.ts +244 -252
- package/src/core/Step.ts +197 -0
- package/src/core/ToolExecutor.ts +11 -11
- package/src/core/Transition.ts +72 -26
- package/src/index.ts +8 -8
- package/src/types/agent.ts +8 -8
- package/src/types/ai.ts +2 -2
- package/src/types/history.ts +3 -3
- package/src/types/index.ts +1 -1
- package/src/types/persistence.ts +6 -6
- package/src/types/route.ts +77 -61
- package/src/types/session.ts +75 -78
- package/src/types/tool.ts +17 -17
- package/src/utils/id.ts +15 -6
- package/dist/cjs/core/State.d.ts +0 -72
- package/dist/cjs/core/State.d.ts.map +0 -1
- package/dist/cjs/core/State.js +0 -148
- package/dist/cjs/core/State.js.map +0 -1
- package/dist/core/State.d.ts +0 -72
- package/dist/core/State.d.ts.map +0 -1
- package/dist/core/State.js +0 -144
- package/dist/core/State.js.map +0 -1
- package/docs/STATES.md +0 -888
- package/src/core/State.ts +0 -212
package/dist/types/session.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Session
|
|
2
|
+
* Session step types for tracking conversation progress
|
|
3
3
|
*/
|
|
4
4
|
/**
|
|
5
5
|
* Helper to create a new session
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
export function createSession(sessionId, metadata) {
|
|
10
10
|
return {
|
|
11
11
|
id: sessionId,
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
data: {},
|
|
13
|
+
dataByRoute: {},
|
|
14
14
|
routeHistory: [],
|
|
15
15
|
metadata: {
|
|
16
16
|
...metadata,
|
|
@@ -21,15 +21,15 @@ export function createSession(sessionId, metadata) {
|
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
23
|
* Helper to update session with new route
|
|
24
|
-
* Preserves
|
|
24
|
+
* Preserves collected data per route in dataByRoute map
|
|
25
25
|
*/
|
|
26
26
|
export function enterRoute(session, routeId, routeTitle) {
|
|
27
|
-
// Save current route's
|
|
28
|
-
const
|
|
27
|
+
// Save current route's collected data before switching
|
|
28
|
+
const dataByRoute = { ...session.dataByRoute };
|
|
29
29
|
if (session.currentRoute &&
|
|
30
|
-
session.
|
|
31
|
-
Object.keys(session.
|
|
32
|
-
|
|
30
|
+
session.data &&
|
|
31
|
+
Object.keys(session.data).length > 0) {
|
|
32
|
+
dataByRoute[session.currentRoute.id] = session.data;
|
|
33
33
|
}
|
|
34
34
|
// Exit current route if exists
|
|
35
35
|
const routeHistory = [...session.routeHistory];
|
|
@@ -39,8 +39,8 @@ export function enterRoute(session, routeId, routeTitle) {
|
|
|
39
39
|
routeHistory[lastRouteIndex].exitedAt = new Date();
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
-
// Load
|
|
43
|
-
const
|
|
42
|
+
// Load collected data for new route (if resuming) or start fresh
|
|
43
|
+
const newCollected = dataByRoute[routeId] || {};
|
|
44
44
|
// Enter new route
|
|
45
45
|
const now = new Date();
|
|
46
46
|
return {
|
|
@@ -50,9 +50,9 @@ export function enterRoute(session, routeId, routeTitle) {
|
|
|
50
50
|
title: routeTitle,
|
|
51
51
|
enteredAt: now,
|
|
52
52
|
},
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
currentStep: undefined,
|
|
54
|
+
data: newCollected, // Load route's data or start fresh
|
|
55
|
+
dataByRoute,
|
|
56
56
|
routeHistory: [
|
|
57
57
|
...routeHistory,
|
|
58
58
|
{
|
|
@@ -68,14 +68,14 @@ export function enterRoute(session, routeId, routeTitle) {
|
|
|
68
68
|
};
|
|
69
69
|
}
|
|
70
70
|
/**
|
|
71
|
-
* Helper to update session with new
|
|
71
|
+
* Helper to update session with new step
|
|
72
72
|
*/
|
|
73
|
-
export function
|
|
73
|
+
export function enterStep(session, stepId, stepDescription) {
|
|
74
74
|
return {
|
|
75
75
|
...session,
|
|
76
|
-
|
|
77
|
-
id:
|
|
78
|
-
description:
|
|
76
|
+
currentStep: {
|
|
77
|
+
id: stepId,
|
|
78
|
+
description: stepDescription,
|
|
79
79
|
enteredAt: new Date(),
|
|
80
80
|
},
|
|
81
81
|
metadata: {
|
|
@@ -85,23 +85,23 @@ export function enterState(session, stateId, stateDescription) {
|
|
|
85
85
|
};
|
|
86
86
|
}
|
|
87
87
|
/**
|
|
88
|
-
* Helper to merge
|
|
89
|
-
* Updates both the
|
|
88
|
+
* Helper to merge collected data into session
|
|
89
|
+
* Updates both the data field and the dataByRoute map
|
|
90
90
|
*/
|
|
91
|
-
export function
|
|
92
|
-
const
|
|
93
|
-
...session.
|
|
94
|
-
...
|
|
91
|
+
export function mergeCollected(session, data) {
|
|
92
|
+
const newCollected = {
|
|
93
|
+
...session.data,
|
|
94
|
+
...data,
|
|
95
95
|
};
|
|
96
|
-
// Also update the
|
|
97
|
-
const
|
|
96
|
+
// Also update the dataByRoute map for the current route
|
|
97
|
+
const dataByRoute = { ...session.dataByRoute };
|
|
98
98
|
if (session.currentRoute) {
|
|
99
|
-
|
|
99
|
+
dataByRoute[session.currentRoute.id] = newCollected;
|
|
100
100
|
}
|
|
101
101
|
return {
|
|
102
102
|
...session,
|
|
103
|
-
|
|
104
|
-
|
|
103
|
+
data: newCollected,
|
|
104
|
+
dataByRoute,
|
|
105
105
|
metadata: {
|
|
106
106
|
...session.metadata,
|
|
107
107
|
lastUpdatedAt: new Date(),
|
|
@@ -109,30 +109,30 @@ export function mergeExtracted(session, extracted) {
|
|
|
109
109
|
};
|
|
110
110
|
}
|
|
111
111
|
/**
|
|
112
|
-
* Helper to convert
|
|
112
|
+
* Helper to convert SessionStep to persistence-friendly format
|
|
113
113
|
* Used when saving to database
|
|
114
114
|
*/
|
|
115
|
-
export function
|
|
115
|
+
export function sessionStepToData(session) {
|
|
116
116
|
return {
|
|
117
117
|
currentRoute: session.currentRoute?.id,
|
|
118
|
-
|
|
118
|
+
currentStep: session.currentStep?.id,
|
|
119
119
|
collectedData: {
|
|
120
|
-
|
|
121
|
-
|
|
120
|
+
data: session.data,
|
|
121
|
+
dataByRoute: session.dataByRoute, // Include per-route data
|
|
122
122
|
routeHistory: session.routeHistory,
|
|
123
123
|
currentRouteTitle: session.currentRoute?.title,
|
|
124
|
-
|
|
124
|
+
currentStepDescription: session.currentStep?.description,
|
|
125
125
|
metadata: session.metadata,
|
|
126
126
|
},
|
|
127
127
|
};
|
|
128
128
|
}
|
|
129
129
|
/**
|
|
130
|
-
* Helper to convert database SessionData back to
|
|
130
|
+
* Helper to convert database SessionData back to SessionStep
|
|
131
131
|
* Used when loading from database
|
|
132
132
|
* @param sessionId - The database session ID
|
|
133
133
|
* @param data - The database session data
|
|
134
134
|
*/
|
|
135
|
-
export function
|
|
135
|
+
export function sessionDataToStep(sessionId, data) {
|
|
136
136
|
const collectedData = data.collectedData || {};
|
|
137
137
|
return {
|
|
138
138
|
id: sessionId,
|
|
@@ -143,18 +143,16 @@ export function sessionDataToState(sessionId, data) {
|
|
|
143
143
|
enteredAt: new Date(),
|
|
144
144
|
}
|
|
145
145
|
: undefined,
|
|
146
|
-
|
|
146
|
+
currentStep: data.currentStep
|
|
147
147
|
? {
|
|
148
|
-
id: data.
|
|
149
|
-
description: collectedData.
|
|
148
|
+
id: data.currentStep,
|
|
149
|
+
description: collectedData.currentStepDescription || undefined,
|
|
150
150
|
enteredAt: new Date(),
|
|
151
151
|
}
|
|
152
152
|
: undefined,
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
routeHistory: collectedData.routeHistory ||
|
|
157
|
-
[],
|
|
153
|
+
data: collectedData.data || {},
|
|
154
|
+
dataByRoute: collectedData.dataByRoute || {}, // Restore per-route data
|
|
155
|
+
routeHistory: collectedData.routeHistory || [],
|
|
158
156
|
metadata: collectedData.metadata || {},
|
|
159
157
|
};
|
|
160
158
|
}
|
|
@@ -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/dist/types/tool.d.ts
CHANGED
|
@@ -1,51 +1,51 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Tool system type definitions
|
|
3
3
|
*/
|
|
4
|
-
import type { Event,
|
|
4
|
+
import type { Event, StepRef } from "./index";
|
|
5
5
|
/**
|
|
6
6
|
* Context provided to tool handlers
|
|
7
7
|
*/
|
|
8
|
-
export interface ToolContext<TContext = unknown,
|
|
8
|
+
export interface ToolContext<TContext = unknown, TData = unknown> {
|
|
9
9
|
/** The agent's context data */
|
|
10
10
|
context: TContext;
|
|
11
11
|
/** Update the agent's context (triggers lifecycle hooks if configured) */
|
|
12
12
|
updateContext: (updates: Partial<TContext>) => Promise<void>;
|
|
13
|
-
/** Current
|
|
14
|
-
|
|
13
|
+
/** Current step reference (if in a route) */
|
|
14
|
+
step?: StepRef;
|
|
15
15
|
/** Interaction history */
|
|
16
16
|
history: Event[];
|
|
17
|
-
/** Data
|
|
18
|
-
|
|
17
|
+
/** Data collected so far in the current route */
|
|
18
|
+
data?: Partial<TData>;
|
|
19
19
|
/** Additional metadata */
|
|
20
20
|
metadata?: Record<string, unknown>;
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
23
|
* Result returned by a tool
|
|
24
24
|
*/
|
|
25
|
-
export interface ToolResult<
|
|
25
|
+
export interface ToolResult<TResultData = unknown, TContext = unknown, TData = unknown> {
|
|
26
26
|
/** The result data */
|
|
27
|
-
data:
|
|
27
|
+
data: TResultData;
|
|
28
28
|
/** Optional context update to be merged with current context */
|
|
29
29
|
contextUpdate?: Partial<TContext>;
|
|
30
|
-
/** Optional
|
|
31
|
-
|
|
30
|
+
/** Optional collected data update to be merged with session step */
|
|
31
|
+
collectedUpdate?: Partial<TData>;
|
|
32
32
|
/** Optional metadata about the execution */
|
|
33
33
|
meta?: Record<string, unknown>;
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
36
|
* Handler function for a tool
|
|
37
37
|
*/
|
|
38
|
-
export type ToolHandler<TContext, TArgs extends unknown[], TResult,
|
|
38
|
+
export type ToolHandler<TContext, TArgs extends unknown[], TResult, TData = unknown> = (context: ToolContext<TContext, TData>, ...args: TArgs) => Promise<ToolResult<TResult, TContext, TData>> | ToolResult<TResult, TContext, TData>;
|
|
39
39
|
/**
|
|
40
40
|
* Reference to a defined tool
|
|
41
41
|
*/
|
|
42
|
-
export interface ToolRef<TContext, TArgs extends unknown[], TResult,
|
|
42
|
+
export interface ToolRef<TContext, TArgs extends unknown[], TResult, TData = unknown> {
|
|
43
43
|
/** Tool identifier */
|
|
44
44
|
id: string;
|
|
45
45
|
/** Tool name */
|
|
46
46
|
name: string;
|
|
47
47
|
/** Tool handler function */
|
|
48
|
-
handler: ToolHandler<TContext, TArgs, TResult,
|
|
48
|
+
handler: ToolHandler<TContext, TArgs, TResult, TData>;
|
|
49
49
|
/** Description of what the tool does */
|
|
50
50
|
description?: string;
|
|
51
51
|
/** Parameter schema or description */
|
package/dist/types/tool.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/types/tool.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/types/tool.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,QAAQ,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO;IAC9D,+BAA+B;IAC/B,OAAO,EAAE,QAAQ,CAAC;IAClB,0EAA0E;IAC1E,aAAa,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,6CAA6C;IAC7C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0BAA0B;IAC1B,OAAO,EAAE,KAAK,EAAE,CAAC;IACjB,iDAAiD;IACjD,IAAI,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACtB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU,CACzB,WAAW,GAAG,OAAO,EACrB,QAAQ,GAAG,OAAO,EAClB,KAAK,GAAG,OAAO;IAEf,sBAAsB;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,gEAAgE;IAChE,aAAa,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClC,oEAAoE;IACpE,eAAe,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACjC,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,CACrB,QAAQ,EACR,KAAK,SAAS,OAAO,EAAE,EACvB,OAAO,EACP,KAAK,GAAG,OAAO,IACb,CACF,OAAO,EAAE,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,EACrC,GAAG,IAAI,EAAE,KAAK,KAEZ,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,GAC7C,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,OAAO,CACtB,QAAQ,EACR,KAAK,SAAS,OAAO,EAAE,EACvB,OAAO,EACP,KAAK,GAAG,OAAO;IAEf,sBAAsB;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,OAAO,EAAE,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACtD,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
|
package/dist/utils/id.d.ts
CHANGED
|
@@ -8,13 +8,18 @@
|
|
|
8
8
|
*/
|
|
9
9
|
export declare function generateRouteId(title: string): string;
|
|
10
10
|
/**
|
|
11
|
-
* Generate a deterministic
|
|
12
|
-
* Format:
|
|
11
|
+
* Generate a deterministic step ID
|
|
12
|
+
* Format: step_{sanitized_description}_{hash} or step_{routeId}_{index}
|
|
13
13
|
*/
|
|
14
|
-
export declare function
|
|
14
|
+
export declare function generateStepId(routeId: string, description?: string, index?: number): string;
|
|
15
15
|
/**
|
|
16
16
|
* Generate a deterministic tool ID
|
|
17
17
|
* Format: tool_{sanitized_name}_{hash}
|
|
18
18
|
*/
|
|
19
19
|
export declare function generateToolId(name: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* Generate a deterministic tool ID for inline tool handlers
|
|
22
|
+
* Format: tool_inline_{stepId}_{hash}
|
|
23
|
+
*/
|
|
24
|
+
export declare function generateInlineToolId(stepId: string): string;
|
|
20
25
|
//# sourceMappingURL=id.d.ts.map
|
package/dist/utils/id.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../../src/utils/id.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuBH;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIrD;AAED;;;GAGG;AACH,wBAAgB,
|
|
1
|
+
{"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../../src/utils/id.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuBH;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIrD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,CASR;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAInD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAG3D"}
|
package/dist/utils/id.js
CHANGED
|
@@ -31,18 +31,18 @@ export function generateRouteId(title) {
|
|
|
31
31
|
return `route_${sanitized}_${hash}`;
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
|
-
* Generate a deterministic
|
|
35
|
-
* Format:
|
|
34
|
+
* Generate a deterministic step ID
|
|
35
|
+
* Format: step_{sanitized_description}_{hash} or step_{routeId}_{index}
|
|
36
36
|
*/
|
|
37
|
-
export function
|
|
37
|
+
export function generateStepId(routeId, description, index) {
|
|
38
38
|
if (description) {
|
|
39
39
|
const sanitized = sanitize(description);
|
|
40
40
|
const hash = simpleHash(`${routeId}_${description}`);
|
|
41
|
-
return `
|
|
41
|
+
return `step_${sanitized}_${hash}`;
|
|
42
42
|
}
|
|
43
|
-
// Fallback for
|
|
43
|
+
// Fallback for steps without descriptions
|
|
44
44
|
const suffix = index !== undefined ? index : simpleHash(routeId);
|
|
45
|
-
return `
|
|
45
|
+
return `step_${routeId}_${suffix}`;
|
|
46
46
|
}
|
|
47
47
|
/**
|
|
48
48
|
* Generate a deterministic tool ID
|
|
@@ -53,4 +53,12 @@ export function generateToolId(name) {
|
|
|
53
53
|
const hash = simpleHash(name);
|
|
54
54
|
return `tool_${sanitized}_${hash}`;
|
|
55
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Generate a deterministic tool ID for inline tool handlers
|
|
58
|
+
* Format: tool_inline_{stepId}_{hash}
|
|
59
|
+
*/
|
|
60
|
+
export function generateInlineToolId(stepId) {
|
|
61
|
+
const hash = simpleHash(`${stepId}_inline_tool`);
|
|
62
|
+
return `tool_inline_${stepId}_${hash}`;
|
|
63
|
+
}
|
|
56
64
|
//# sourceMappingURL=id.js.map
|
package/dist/utils/id.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"id.js","sourceRoot":"","sources":["../../src/utils/id.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;QACjC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,4BAA4B;IAClD,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,SAAS,QAAQ,CAAC,GAAW;IAC3B,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,SAAS,SAAS,IAAI,IAAI,EAAE,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"id.js","sourceRoot":"","sources":["../../src/utils/id.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;QACjC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,4BAA4B;IAClD,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,SAAS,QAAQ,CAAC,GAAW;IAC3B,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,SAAS,SAAS,IAAI,IAAI,EAAE,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAe,EACf,WAAoB,EACpB,KAAc;IAEd,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,OAAO,IAAI,WAAW,EAAE,CAAC,CAAC;QACrD,OAAO,QAAQ,SAAS,IAAI,IAAI,EAAE,CAAC;IACrC,CAAC;IACD,0CAA0C;IAC1C,MAAM,MAAM,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACjE,OAAO,QAAQ,OAAO,IAAI,MAAM,EAAE,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,QAAQ,SAAS,IAAI,IAAI,EAAE,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,MAAM,cAAc,CAAC,CAAC;IACjD,OAAO,eAAe,MAAM,IAAI,IAAI,EAAE,CAAC;AACzC,CAAC"}
|
package/docs/ADAPTERS.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
All adapters follow the **provider pattern** - no dependencies required in the package, users install only what they need.
|
|
4
4
|
|
|
5
|
-
**NEW**: All adapters now support the new **Session
|
|
5
|
+
**NEW**: All adapters now support the new **Session Step** pattern with automatic persistence of collected data, current route/step, and conversation progress!
|
|
6
6
|
|
|
7
7
|
### 🎯 Available Adapters
|
|
8
8
|
|
|
@@ -87,7 +87,7 @@ All adapters follow the **provider pattern** - no dependencies required in the p
|
|
|
87
87
|
|
|
88
88
|
## 🎯 Usage Pattern
|
|
89
89
|
|
|
90
|
-
All adapters follow the same simple pattern with full session
|
|
90
|
+
All adapters follow the same simple pattern with full session step support:
|
|
91
91
|
|
|
92
92
|
```typescript
|
|
93
93
|
import { Agent, [Adapter]Adapter } from "@falai/agent";
|
|
@@ -107,14 +107,14 @@ const agent = new Agent({
|
|
|
107
107
|
persistence: {
|
|
108
108
|
adapter,
|
|
109
109
|
userId: "user_123",
|
|
110
|
-
autoSave: true, // ✨ Auto-saves session
|
|
110
|
+
autoSave: true, // ✨ Auto-saves session step!
|
|
111
111
|
},
|
|
112
112
|
});
|
|
113
113
|
|
|
114
114
|
// Create a route with data extraction
|
|
115
115
|
const route = agent.createRoute<YourDataType>({
|
|
116
116
|
title: "My Route",
|
|
117
|
-
|
|
117
|
+
schema: {
|
|
118
118
|
type: "object",
|
|
119
119
|
properties: {
|
|
120
120
|
field1: { type: "string" },
|
|
@@ -124,28 +124,28 @@ const route = agent.createRoute<YourDataType>({
|
|
|
124
124
|
},
|
|
125
125
|
});
|
|
126
126
|
|
|
127
|
-
// Define
|
|
128
|
-
route.
|
|
129
|
-
|
|
130
|
-
|
|
127
|
+
// Define steps
|
|
128
|
+
route.initialStep.nextStep({
|
|
129
|
+
instructions: "Collect data",
|
|
130
|
+
collect: ["field1", "field2"],
|
|
131
131
|
});
|
|
132
132
|
|
|
133
|
-
// Use with session
|
|
133
|
+
// Use with session step
|
|
134
134
|
const persistence = agent.getPersistenceManager();
|
|
135
|
-
const { sessionData,
|
|
136
|
-
await persistence.
|
|
135
|
+
const { sessionData, sessionStep } =
|
|
136
|
+
await persistence.createSessionWithStep<YourDataType>({
|
|
137
137
|
userId: "user_123",
|
|
138
138
|
agentName: "My Agent",
|
|
139
139
|
});
|
|
140
140
|
|
|
141
|
-
// Chat with automatic session
|
|
141
|
+
// Chat with automatic session step persistence
|
|
142
142
|
const response = await agent.respond({
|
|
143
143
|
history: [...],
|
|
144
|
-
session:
|
|
144
|
+
session: sessionStep, // Pass session step
|
|
145
145
|
});
|
|
146
146
|
|
|
147
|
-
// Session
|
|
148
|
-
console.log("
|
|
147
|
+
// Session step auto-saved! Includes collected data
|
|
148
|
+
console.log("Data:", response.session?.data);
|
|
149
149
|
```
|
|
150
150
|
|
|
151
151
|
## 🔌 Optional Dependencies
|
|
@@ -206,18 +206,18 @@ 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 `SessionStep<TData>` support
|
|
210
210
|
- Typed repository methods
|
|
211
211
|
- Full IDE autocomplete
|
|
212
212
|
- Type-safe data extraction throughout
|
|
213
213
|
|
|
214
214
|
## 💾 What Gets Stored
|
|
215
215
|
|
|
216
|
-
All adapters store session
|
|
216
|
+
All adapters store session step in the `collectedData` JSON field:
|
|
217
217
|
|
|
218
218
|
```json
|
|
219
219
|
{
|
|
220
|
-
"
|
|
220
|
+
"data": {
|
|
221
221
|
"destination": "Paris",
|
|
222
222
|
"departureDate": "2025-06-15",
|
|
223
223
|
"passengers": 2
|
|
@@ -230,7 +230,7 @@ All adapters store session state in the `collectedData` JSON field:
|
|
|
230
230
|
}
|
|
231
231
|
],
|
|
232
232
|
"currentRouteTitle": "Book a Flight",
|
|
233
|
-
"
|
|
233
|
+
"currentStepDescription": "Ask about travel dates",
|
|
234
234
|
"metadata": {
|
|
235
235
|
"sessionId": "session_123",
|
|
236
236
|
"createdAt": "2025-10-15T10:00:00Z",
|
|
@@ -241,8 +241,8 @@ All adapters store session state in the `collectedData` JSON field:
|
|
|
241
241
|
|
|
242
242
|
This allows:
|
|
243
243
|
|
|
244
|
-
- ✅ Full session
|
|
245
|
-
- ✅ Analytics on
|
|
244
|
+
- ✅ Full session step recovery
|
|
245
|
+
- ✅ Analytics on collected data
|
|
246
246
|
- ✅ Conversation progress tracking
|
|
247
247
|
- ✅ Multi-turn conversation support
|
|
248
248
|
|