@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/core/Route.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Route (Journey) DSL implementation
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { Step } from "./Step";
|
|
5
5
|
import { generateRouteId } from "../utils/id";
|
|
6
6
|
/**
|
|
7
7
|
* Represents a conversational route/journey
|
|
@@ -17,14 +17,14 @@ export class Route {
|
|
|
17
17
|
this.domains = options.domains;
|
|
18
18
|
this.rules = options.rules || [];
|
|
19
19
|
this.prohibitions = options.prohibitions || [];
|
|
20
|
-
this.
|
|
21
|
-
// Store
|
|
22
|
-
this.
|
|
23
|
-
|
|
20
|
+
this.initialStep = new Step(this.id, options.initialStep?.instructions || "Initial step", options.initialStep?.id, options.initialStep?.collect, options.initialStep?.skipIf, options.initialStep?.requires, options.initialStep?.instructions);
|
|
21
|
+
// Store endStep spec (will be used when route completes)
|
|
22
|
+
this.endStepSpec = options.endStep || {
|
|
23
|
+
instructions: "Summarize what was accomplished and confirm completion based on the conversation history and collected data",
|
|
24
24
|
};
|
|
25
25
|
this.routingExtrasSchema = options.routingExtrasSchema;
|
|
26
26
|
this.responseOutputSchema = options.responseOutputSchema;
|
|
27
|
-
this.
|
|
27
|
+
this.schema = options.schema;
|
|
28
28
|
this.initialData = options.initialData;
|
|
29
29
|
this.onComplete = options.onComplete;
|
|
30
30
|
// Initialize guidelines from options
|
|
@@ -39,18 +39,18 @@ export class Route {
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
/**
|
|
42
|
-
* Build a sequential
|
|
42
|
+
* Build a sequential step machine from an array of steps
|
|
43
43
|
* @private
|
|
44
44
|
*/
|
|
45
45
|
buildSequentialSteps(steps) {
|
|
46
|
-
// Import
|
|
47
|
-
const
|
|
48
|
-
let
|
|
46
|
+
// Import END_ROUTE dynamically to avoid circular dependency
|
|
47
|
+
const END_ROUTE = Symbol.for("END_ROUTE");
|
|
48
|
+
let currentStep = this.initialStep;
|
|
49
49
|
for (const step of steps) {
|
|
50
|
-
|
|
50
|
+
currentStep = currentStep.nextStep(step);
|
|
51
51
|
}
|
|
52
52
|
// End the route
|
|
53
|
-
|
|
53
|
+
currentStep.nextStep({ step: END_ROUTE });
|
|
54
54
|
}
|
|
55
55
|
/**
|
|
56
56
|
* Create a guideline specific to this route
|
|
@@ -109,20 +109,20 @@ export class Route {
|
|
|
109
109
|
};
|
|
110
110
|
}
|
|
111
111
|
/**
|
|
112
|
-
* Get all
|
|
112
|
+
* Get all steps in this route (via traversal from initial step)
|
|
113
113
|
*/
|
|
114
|
-
|
|
114
|
+
getAllSteps() {
|
|
115
115
|
const visited = new Set();
|
|
116
|
-
const
|
|
117
|
-
const queue = [this.
|
|
116
|
+
const steps = [];
|
|
117
|
+
const queue = [this.initialStep];
|
|
118
118
|
while (queue.length > 0) {
|
|
119
119
|
const current = queue.shift();
|
|
120
120
|
if (visited.has(current.id)) {
|
|
121
121
|
continue;
|
|
122
122
|
}
|
|
123
123
|
visited.add(current.id);
|
|
124
|
-
|
|
125
|
-
// Add target
|
|
124
|
+
steps.push(current);
|
|
125
|
+
// Add target steps from transitions
|
|
126
126
|
for (const transition of current.getTransitions()) {
|
|
127
127
|
const target = transition.getTarget();
|
|
128
128
|
if (target && !visited.has(target.id)) {
|
|
@@ -130,16 +130,16 @@ export class Route {
|
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
|
-
return
|
|
133
|
+
return steps;
|
|
134
134
|
}
|
|
135
135
|
/**
|
|
136
|
-
* Get a specific
|
|
137
|
-
* @param
|
|
138
|
-
* @returns The
|
|
136
|
+
* Get a specific step by ID
|
|
137
|
+
* @param stepId - The step ID to find
|
|
138
|
+
* @returns The step if found, undefined otherwise
|
|
139
139
|
*/
|
|
140
|
-
|
|
141
|
-
const
|
|
142
|
-
return
|
|
140
|
+
getStep(stepId) {
|
|
141
|
+
const steps = this.getAllSteps();
|
|
142
|
+
return steps.find((step) => step.id === stepId);
|
|
143
143
|
}
|
|
144
144
|
/**
|
|
145
145
|
* Get a description of the route structure for debugging
|
|
@@ -151,12 +151,12 @@ export class Route {
|
|
|
151
151
|
`Description: ${this.description || "N/A"}`,
|
|
152
152
|
`Conditions: ${this.conditions.join(", ") || "None"}`,
|
|
153
153
|
"",
|
|
154
|
-
"
|
|
154
|
+
"Steps:",
|
|
155
155
|
];
|
|
156
|
-
const
|
|
157
|
-
for (const
|
|
158
|
-
lines.push(` - ${
|
|
159
|
-
const transitions =
|
|
156
|
+
const steps = this.getAllSteps();
|
|
157
|
+
for (const step of steps) {
|
|
158
|
+
lines.push(` - ${step.id}${step.description ? `: ${step.description}` : ""}`);
|
|
159
|
+
const transitions = step.getTransitions();
|
|
160
160
|
for (const transition of transitions) {
|
|
161
161
|
lines.push(` -> ${transition.describe()}`);
|
|
162
162
|
}
|
|
@@ -165,7 +165,7 @@ export class Route {
|
|
|
165
165
|
}
|
|
166
166
|
/**
|
|
167
167
|
* Evaluate the onComplete handler and return transition config
|
|
168
|
-
* @param session - Current session
|
|
168
|
+
* @param session - Current session step
|
|
169
169
|
* @param context - Agent context
|
|
170
170
|
* @returns Transition config or undefined if no transition
|
|
171
171
|
*/
|
|
@@ -176,7 +176,7 @@ export class Route {
|
|
|
176
176
|
// String form: just route ID/title
|
|
177
177
|
if (typeof this.onComplete === "string") {
|
|
178
178
|
return {
|
|
179
|
-
|
|
179
|
+
nextStep: this.onComplete,
|
|
180
180
|
};
|
|
181
181
|
}
|
|
182
182
|
// Function form: execute and normalize result
|
|
@@ -187,7 +187,7 @@ export class Route {
|
|
|
187
187
|
}
|
|
188
188
|
if (typeof result === "string") {
|
|
189
189
|
return {
|
|
190
|
-
|
|
190
|
+
nextStep: result,
|
|
191
191
|
};
|
|
192
192
|
}
|
|
193
193
|
return result;
|
package/dist/core/Route.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Route.js","sourceRoot":"","sources":["../../src/core/Route.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Route.js","sourceRoot":"","sources":["../../src/core/Route.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import type { Event } from "../types/history";
|
|
2
2
|
import type { Route } from "./Route";
|
|
3
|
-
import type {
|
|
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 { SessionStep } from "../types/session";
|
|
7
7
|
import type { AiProvider } from "../types/ai";
|
|
8
8
|
export interface RoutingDecisionOutput {
|
|
9
9
|
context: string;
|
|
10
10
|
routes: Record<string, number>;
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
selectedStepId?: string;
|
|
12
|
+
stepReasoning?: string;
|
|
13
13
|
responseDirectives?: string[];
|
|
14
14
|
extractions?: Array<{
|
|
15
15
|
name: string;
|
|
@@ -29,35 +29,35 @@ export declare class RoutingEngine<TContext = unknown> {
|
|
|
29
29
|
constructor(options?: RoutingEngineOptions | undefined);
|
|
30
30
|
/**
|
|
31
31
|
* Optimized decision for single-route scenarios
|
|
32
|
-
* Skips route scoring and only does
|
|
32
|
+
* Skips route scoring and only does step selection
|
|
33
33
|
* @private
|
|
34
34
|
*/
|
|
35
|
-
private
|
|
35
|
+
private decideSingleRouteStep;
|
|
36
36
|
/**
|
|
37
|
-
* Recursively traverse
|
|
37
|
+
* Recursively traverse step chain to find first non-skipped step or END_ROUTE
|
|
38
38
|
* @private
|
|
39
39
|
*/
|
|
40
|
-
private
|
|
40
|
+
private findFirstValidStepRecursive;
|
|
41
41
|
/**
|
|
42
|
-
* Identify valid next candidate
|
|
43
|
-
* Returns
|
|
42
|
+
* Identify valid next candidate steps based on current step and collected data
|
|
43
|
+
* Returns step with isRouteComplete flag if route is complete (all steps skipped + has END_ROUTE transition)
|
|
44
44
|
*/
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
getCandidateSteps<TData = unknown>(route: Route<TContext, TData>, currentStep: Step<TContext, TData> | undefined, data: Partial<TData>): Array<{
|
|
46
|
+
step: Step<TContext, TData>;
|
|
47
47
|
condition?: string;
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
requires?: string[];
|
|
49
|
+
collectFields?: string[];
|
|
50
50
|
isRouteComplete?: boolean;
|
|
51
51
|
}>;
|
|
52
52
|
/**
|
|
53
|
-
* Full routing orchestration: builds prompt and schema, calls AI, selects route/
|
|
53
|
+
* Full routing orchestration: builds prompt and schema, calls AI, selects route/step,
|
|
54
54
|
* and updates the session (including initialData merge when entering a new route).
|
|
55
55
|
*
|
|
56
|
-
* OPTIMIZATION: If there's only 1 route, skips route scoring and only does
|
|
56
|
+
* OPTIMIZATION: If there's only 1 route, skips route scoring and only does step selection.
|
|
57
57
|
*/
|
|
58
|
-
|
|
58
|
+
decideRouteAndStep(params: {
|
|
59
59
|
routes: Route<TContext, unknown>[];
|
|
60
|
-
session:
|
|
60
|
+
session: SessionStep;
|
|
61
61
|
history: Event[];
|
|
62
62
|
agentMeta?: {
|
|
63
63
|
name?: string;
|
|
@@ -70,23 +70,23 @@ export declare class RoutingEngine<TContext = unknown> {
|
|
|
70
70
|
signal?: AbortSignal;
|
|
71
71
|
}): Promise<{
|
|
72
72
|
selectedRoute?: Route<TContext>;
|
|
73
|
-
|
|
73
|
+
selectedStep?: Step<TContext>;
|
|
74
74
|
responseDirectives?: string[];
|
|
75
|
-
session:
|
|
75
|
+
session: SessionStep;
|
|
76
76
|
isRouteComplete?: boolean;
|
|
77
77
|
}>;
|
|
78
78
|
/**
|
|
79
|
-
* Build prompt for
|
|
79
|
+
* Build prompt for step selection within a single route
|
|
80
80
|
* @private
|
|
81
81
|
*/
|
|
82
|
-
private
|
|
82
|
+
private buildStepSelectionPrompt;
|
|
83
83
|
/**
|
|
84
|
-
* Build schema for
|
|
84
|
+
* Build schema for step selection
|
|
85
85
|
* @private
|
|
86
86
|
*/
|
|
87
|
-
private
|
|
88
|
-
buildDynamicRoutingSchema(routes: Route<TContext>[], extrasSchema?: StructuredSchema,
|
|
89
|
-
|
|
87
|
+
private buildStepSelectionSchema;
|
|
88
|
+
buildDynamicRoutingSchema(routes: Route<TContext>[], extrasSchema?: StructuredSchema, activeRouteSteps?: {
|
|
89
|
+
stepId: string;
|
|
90
90
|
description: string;
|
|
91
91
|
}[]): StructuredSchema;
|
|
92
92
|
buildRoutingPrompt(history: Event[], routes: Route<TContext>[], lastMessage: string, agentMeta?: {
|
|
@@ -94,12 +94,12 @@ export declare class RoutingEngine<TContext = unknown> {
|
|
|
94
94
|
goal?: string;
|
|
95
95
|
description?: string;
|
|
96
96
|
personality?: string;
|
|
97
|
-
}, session?:
|
|
98
|
-
|
|
97
|
+
}, session?: SessionStep, activeRouteSteps?: Array<{
|
|
98
|
+
stepId: string;
|
|
99
99
|
description: string;
|
|
100
100
|
condition?: string;
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
requires?: string[];
|
|
102
|
+
collectFields?: string[];
|
|
103
103
|
}>): string;
|
|
104
104
|
decideRouteFromScores(output: RoutingDecision): {
|
|
105
105
|
routeId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RoutingEngine.d.ts","sourceRoot":"","sources":["../../src/core/RoutingEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"RoutingEngine.d.ts","sourceRoot":"","sources":["../../src/core/RoutingEngine.ts"],"names":[],"mappings":"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"}
|