@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/cjs/core/Route.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.Route = void 0;
|
|
7
|
-
const
|
|
7
|
+
const Step_1 = require("./Step");
|
|
8
8
|
const id_1 = require("../utils/id");
|
|
9
9
|
/**
|
|
10
10
|
* Represents a conversational route/journey
|
|
@@ -20,14 +20,14 @@ class Route {
|
|
|
20
20
|
this.domains = options.domains;
|
|
21
21
|
this.rules = options.rules || [];
|
|
22
22
|
this.prohibitions = options.prohibitions || [];
|
|
23
|
-
this.
|
|
24
|
-
// Store
|
|
25
|
-
this.
|
|
26
|
-
|
|
23
|
+
this.initialStep = new Step_1.Step(this.id, options.initialStep?.instructions || "Initial step", options.initialStep?.id, options.initialStep?.collect, options.initialStep?.skipIf, options.initialStep?.requires, options.initialStep?.instructions);
|
|
24
|
+
// Store endStep spec (will be used when route completes)
|
|
25
|
+
this.endStepSpec = options.endStep || {
|
|
26
|
+
instructions: "Summarize what was accomplished and confirm completion based on the conversation history and collected data",
|
|
27
27
|
};
|
|
28
28
|
this.routingExtrasSchema = options.routingExtrasSchema;
|
|
29
29
|
this.responseOutputSchema = options.responseOutputSchema;
|
|
30
|
-
this.
|
|
30
|
+
this.schema = options.schema;
|
|
31
31
|
this.initialData = options.initialData;
|
|
32
32
|
this.onComplete = options.onComplete;
|
|
33
33
|
// Initialize guidelines from options
|
|
@@ -42,18 +42,18 @@ class Route {
|
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
/**
|
|
45
|
-
* Build a sequential
|
|
45
|
+
* Build a sequential step machine from an array of steps
|
|
46
46
|
* @private
|
|
47
47
|
*/
|
|
48
48
|
buildSequentialSteps(steps) {
|
|
49
|
-
// Import
|
|
50
|
-
const
|
|
51
|
-
let
|
|
49
|
+
// Import END_ROUTE dynamically to avoid circular dependency
|
|
50
|
+
const END_ROUTE = Symbol.for("END_ROUTE");
|
|
51
|
+
let currentStep = this.initialStep;
|
|
52
52
|
for (const step of steps) {
|
|
53
|
-
|
|
53
|
+
currentStep = currentStep.nextStep(step);
|
|
54
54
|
}
|
|
55
55
|
// End the route
|
|
56
|
-
|
|
56
|
+
currentStep.nextStep({ step: END_ROUTE });
|
|
57
57
|
}
|
|
58
58
|
/**
|
|
59
59
|
* Create a guideline specific to this route
|
|
@@ -112,20 +112,20 @@ class Route {
|
|
|
112
112
|
};
|
|
113
113
|
}
|
|
114
114
|
/**
|
|
115
|
-
* Get all
|
|
115
|
+
* Get all steps in this route (via traversal from initial step)
|
|
116
116
|
*/
|
|
117
|
-
|
|
117
|
+
getAllSteps() {
|
|
118
118
|
const visited = new Set();
|
|
119
|
-
const
|
|
120
|
-
const queue = [this.
|
|
119
|
+
const steps = [];
|
|
120
|
+
const queue = [this.initialStep];
|
|
121
121
|
while (queue.length > 0) {
|
|
122
122
|
const current = queue.shift();
|
|
123
123
|
if (visited.has(current.id)) {
|
|
124
124
|
continue;
|
|
125
125
|
}
|
|
126
126
|
visited.add(current.id);
|
|
127
|
-
|
|
128
|
-
// Add target
|
|
127
|
+
steps.push(current);
|
|
128
|
+
// Add target steps from transitions
|
|
129
129
|
for (const transition of current.getTransitions()) {
|
|
130
130
|
const target = transition.getTarget();
|
|
131
131
|
if (target && !visited.has(target.id)) {
|
|
@@ -133,16 +133,16 @@ class Route {
|
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
|
-
return
|
|
136
|
+
return steps;
|
|
137
137
|
}
|
|
138
138
|
/**
|
|
139
|
-
* Get a specific
|
|
140
|
-
* @param
|
|
141
|
-
* @returns The
|
|
139
|
+
* Get a specific step by ID
|
|
140
|
+
* @param stepId - The step ID to find
|
|
141
|
+
* @returns The step if found, undefined otherwise
|
|
142
142
|
*/
|
|
143
|
-
|
|
144
|
-
const
|
|
145
|
-
return
|
|
143
|
+
getStep(stepId) {
|
|
144
|
+
const steps = this.getAllSteps();
|
|
145
|
+
return steps.find((step) => step.id === stepId);
|
|
146
146
|
}
|
|
147
147
|
/**
|
|
148
148
|
* Get a description of the route structure for debugging
|
|
@@ -154,12 +154,12 @@ class Route {
|
|
|
154
154
|
`Description: ${this.description || "N/A"}`,
|
|
155
155
|
`Conditions: ${this.conditions.join(", ") || "None"}`,
|
|
156
156
|
"",
|
|
157
|
-
"
|
|
157
|
+
"Steps:",
|
|
158
158
|
];
|
|
159
|
-
const
|
|
160
|
-
for (const
|
|
161
|
-
lines.push(` - ${
|
|
162
|
-
const transitions =
|
|
159
|
+
const steps = this.getAllSteps();
|
|
160
|
+
for (const step of steps) {
|
|
161
|
+
lines.push(` - ${step.id}${step.description ? `: ${step.description}` : ""}`);
|
|
162
|
+
const transitions = step.getTransitions();
|
|
163
163
|
for (const transition of transitions) {
|
|
164
164
|
lines.push(` -> ${transition.describe()}`);
|
|
165
165
|
}
|
|
@@ -168,7 +168,7 @@ class Route {
|
|
|
168
168
|
}
|
|
169
169
|
/**
|
|
170
170
|
* Evaluate the onComplete handler and return transition config
|
|
171
|
-
* @param session - Current session
|
|
171
|
+
* @param session - Current session step
|
|
172
172
|
* @param context - Agent context
|
|
173
173
|
* @returns Transition config or undefined if no transition
|
|
174
174
|
*/
|
|
@@ -179,7 +179,7 @@ class Route {
|
|
|
179
179
|
// String form: just route ID/title
|
|
180
180
|
if (typeof this.onComplete === "string") {
|
|
181
181
|
return {
|
|
182
|
-
|
|
182
|
+
nextStep: this.onComplete,
|
|
183
183
|
};
|
|
184
184
|
}
|
|
185
185
|
// Function form: execute and normalize result
|
|
@@ -190,7 +190,7 @@ class Route {
|
|
|
190
190
|
}
|
|
191
191
|
if (typeof result === "string") {
|
|
192
192
|
return {
|
|
193
|
-
|
|
193
|
+
nextStep: result,
|
|
194
194
|
};
|
|
195
195
|
}
|
|
196
196
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Route.js","sourceRoot":"","sources":["../../../src/core/Route.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAaH,
|
|
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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"}
|