@falai/agent 0.4.1 → 0.5.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/README.md +21 -74
- package/dist/cjs/core/Agent.d.ts +22 -29
- package/dist/cjs/core/Agent.d.ts.map +1 -1
- package/dist/cjs/core/Agent.js +464 -291
- package/dist/cjs/core/Agent.js.map +1 -1
- package/dist/cjs/core/Events.d.ts +10 -1
- package/dist/cjs/core/Events.d.ts.map +1 -1
- package/dist/cjs/core/Events.js +3 -2
- package/dist/cjs/core/Events.js.map +1 -1
- package/dist/cjs/core/PersistenceManager.d.ts +19 -0
- package/dist/cjs/core/PersistenceManager.d.ts.map +1 -1
- package/dist/cjs/core/PersistenceManager.js +55 -0
- package/dist/cjs/core/PersistenceManager.js.map +1 -1
- package/dist/cjs/core/PromptComposer.d.ts +24 -0
- package/dist/cjs/core/PromptComposer.d.ts.map +1 -0
- package/dist/cjs/core/PromptComposer.js +127 -0
- package/dist/cjs/core/PromptComposer.js.map +1 -0
- package/dist/cjs/core/ResponseEngine.d.ts +19 -0
- package/dist/cjs/core/ResponseEngine.d.ts.map +1 -0
- package/dist/cjs/core/ResponseEngine.js +51 -0
- package/dist/cjs/core/ResponseEngine.js.map +1 -0
- package/dist/cjs/core/Route.d.ts +18 -12
- package/dist/cjs/core/Route.d.ts.map +1 -1
- package/dist/cjs/core/Route.js +15 -9
- package/dist/cjs/core/Route.js.map +1 -1
- package/dist/cjs/core/RoutingEngine.d.ts +38 -0
- package/dist/cjs/core/RoutingEngine.d.ts.map +1 -0
- package/dist/cjs/core/RoutingEngine.js +110 -0
- package/dist/cjs/core/RoutingEngine.js.map +1 -0
- package/dist/cjs/core/State.d.ts +15 -4
- package/dist/cjs/core/State.d.ts.map +1 -1
- package/dist/cjs/core/State.js +21 -2
- package/dist/cjs/core/State.js.map +1 -1
- package/dist/cjs/core/ToolExecutor.d.ts +29 -0
- package/dist/cjs/core/ToolExecutor.d.ts.map +1 -0
- package/dist/cjs/core/ToolExecutor.js +73 -0
- package/dist/cjs/core/ToolExecutor.js.map +1 -0
- package/dist/cjs/core/Transition.d.ts +5 -5
- package/dist/cjs/core/Transition.d.ts.map +1 -1
- package/dist/cjs/core/Transition.js.map +1 -1
- package/dist/cjs/index.d.ts +6 -8
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +8 -10
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/providers/AnthropicProvider.d.ts.map +1 -1
- package/dist/cjs/providers/AnthropicProvider.js +10 -13
- package/dist/cjs/providers/AnthropicProvider.js.map +1 -1
- package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/cjs/providers/GeminiProvider.js +12 -8
- package/dist/cjs/providers/GeminiProvider.js.map +1 -1
- package/dist/cjs/providers/OpenAIProvider.d.ts.map +1 -1
- package/dist/cjs/providers/OpenAIProvider.js +10 -53
- package/dist/cjs/providers/OpenAIProvider.js.map +1 -1
- package/dist/cjs/providers/OpenRouterProvider.d.ts.map +1 -1
- package/dist/cjs/providers/OpenRouterProvider.js +10 -53
- package/dist/cjs/providers/OpenRouterProvider.js.map +1 -1
- package/dist/cjs/types/agent.d.ts +13 -12
- package/dist/cjs/types/agent.d.ts.map +1 -1
- package/dist/cjs/types/ai.d.ts +8 -2
- package/dist/cjs/types/ai.d.ts.map +1 -1
- package/dist/cjs/types/history.d.ts +8 -0
- package/dist/cjs/types/history.d.ts.map +1 -1
- package/dist/cjs/types/index.d.ts +0 -3
- package/dist/cjs/types/index.d.ts.map +1 -1
- package/dist/cjs/types/index.js +1 -3
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/types/route.d.ts +39 -4
- package/dist/cjs/types/route.d.ts.map +1 -1
- package/dist/cjs/types/routing.d.ts +16 -0
- package/dist/cjs/types/routing.d.ts.map +1 -0
- package/dist/cjs/types/routing.js +3 -0
- package/dist/cjs/types/routing.js.map +1 -0
- package/dist/cjs/types/schema.d.ts +22 -0
- package/dist/cjs/types/schema.d.ts.map +1 -0
- package/dist/cjs/types/schema.js +3 -0
- package/dist/cjs/types/schema.js.map +1 -0
- package/dist/cjs/types/session.d.ts +77 -0
- package/dist/cjs/types/session.d.ts.map +1 -0
- package/dist/cjs/types/session.js +146 -0
- package/dist/cjs/types/session.js.map +1 -0
- package/dist/cjs/types/tool.d.ts +11 -5
- package/dist/cjs/types/tool.d.ts.map +1 -1
- package/dist/cjs/utils/id.d.ts +0 -5
- package/dist/cjs/utils/id.d.ts.map +1 -1
- package/dist/cjs/utils/id.js +0 -10
- package/dist/cjs/utils/id.js.map +1 -1
- package/dist/cjs/utils/schema.d.ts +17 -0
- package/dist/cjs/utils/schema.d.ts.map +1 -0
- package/dist/cjs/utils/schema.js +32 -0
- package/dist/cjs/utils/schema.js.map +1 -0
- package/dist/core/Agent.d.ts +22 -29
- package/dist/core/Agent.d.ts.map +1 -1
- package/dist/core/Agent.js +464 -291
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/Events.d.ts +10 -1
- package/dist/core/Events.d.ts.map +1 -1
- package/dist/core/Events.js +3 -2
- package/dist/core/Events.js.map +1 -1
- package/dist/core/PersistenceManager.d.ts +19 -0
- package/dist/core/PersistenceManager.d.ts.map +1 -1
- package/dist/core/PersistenceManager.js +55 -0
- package/dist/core/PersistenceManager.js.map +1 -1
- package/dist/core/PromptComposer.d.ts +24 -0
- package/dist/core/PromptComposer.d.ts.map +1 -0
- package/dist/core/PromptComposer.js +123 -0
- package/dist/core/PromptComposer.js.map +1 -0
- package/dist/core/ResponseEngine.d.ts +19 -0
- package/dist/core/ResponseEngine.d.ts.map +1 -0
- package/dist/core/ResponseEngine.js +47 -0
- package/dist/core/ResponseEngine.js.map +1 -0
- package/dist/core/Route.d.ts +18 -12
- package/dist/core/Route.d.ts.map +1 -1
- package/dist/core/Route.js +15 -9
- package/dist/core/Route.js.map +1 -1
- package/dist/core/RoutingEngine.d.ts +38 -0
- package/dist/core/RoutingEngine.d.ts.map +1 -0
- package/dist/core/RoutingEngine.js +106 -0
- package/dist/core/RoutingEngine.js.map +1 -0
- package/dist/core/State.d.ts +15 -4
- package/dist/core/State.d.ts.map +1 -1
- package/dist/core/State.js +21 -2
- package/dist/core/State.js.map +1 -1
- package/dist/core/ToolExecutor.d.ts +29 -0
- package/dist/core/ToolExecutor.d.ts.map +1 -0
- package/dist/core/ToolExecutor.js +69 -0
- package/dist/core/ToolExecutor.js.map +1 -0
- package/dist/core/Transition.d.ts +5 -5
- package/dist/core/Transition.d.ts.map +1 -1
- package/dist/core/Transition.js.map +1 -1
- package/dist/index.d.ts +6 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -5
- package/dist/index.js.map +1 -1
- package/dist/providers/AnthropicProvider.d.ts.map +1 -1
- package/dist/providers/AnthropicProvider.js +10 -13
- package/dist/providers/AnthropicProvider.js.map +1 -1
- package/dist/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/providers/GeminiProvider.js +12 -8
- package/dist/providers/GeminiProvider.js.map +1 -1
- package/dist/providers/OpenAIProvider.d.ts.map +1 -1
- package/dist/providers/OpenAIProvider.js +10 -53
- package/dist/providers/OpenAIProvider.js.map +1 -1
- package/dist/providers/OpenRouterProvider.d.ts.map +1 -1
- package/dist/providers/OpenRouterProvider.js +10 -53
- package/dist/providers/OpenRouterProvider.js.map +1 -1
- package/dist/types/agent.d.ts +13 -12
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/ai.d.ts +8 -2
- package/dist/types/ai.d.ts.map +1 -1
- package/dist/types/history.d.ts +8 -0
- package/dist/types/history.d.ts.map +1 -1
- package/dist/types/index.d.ts +0 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +0 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/route.d.ts +39 -4
- package/dist/types/route.d.ts.map +1 -1
- package/dist/types/routing.d.ts +16 -0
- package/dist/types/routing.d.ts.map +1 -0
- package/dist/types/routing.js +2 -0
- package/dist/types/routing.js.map +1 -0
- package/dist/types/schema.d.ts +22 -0
- package/dist/types/schema.d.ts.map +1 -0
- package/dist/types/schema.js +2 -0
- package/dist/types/schema.js.map +1 -0
- package/dist/types/session.d.ts +77 -0
- package/dist/types/session.d.ts.map +1 -0
- package/dist/types/session.js +138 -0
- package/dist/types/session.js.map +1 -0
- package/dist/types/tool.d.ts +11 -5
- package/dist/types/tool.d.ts.map +1 -1
- package/dist/utils/id.d.ts +0 -5
- package/dist/utils/id.d.ts.map +1 -1
- package/dist/utils/id.js +0 -9
- package/dist/utils/id.js.map +1 -1
- package/dist/utils/schema.d.ts +17 -0
- package/dist/utils/schema.d.ts.map +1 -0
- package/dist/utils/schema.js +27 -0
- package/dist/utils/schema.js.map +1 -0
- package/docs/ADAPTERS.md +83 -3
- package/docs/API_REFERENCE.md +329 -104
- package/docs/ARCHITECTURE.md +284 -286
- package/docs/CONSTRUCTOR_OPTIONS.md +192 -135
- package/docs/CONTEXT_MANAGEMENT.md +311 -28
- package/docs/CONTRIBUTING.md +1 -1
- package/docs/DOMAINS.md +61 -0
- package/docs/GETTING_STARTED.md +177 -88
- package/docs/PERSISTENCE.md +170 -23
- package/docs/README.md +7 -10
- package/examples/business-onboarding.ts +21 -9
- package/examples/company-qna-agent.ts +508 -0
- package/examples/declarative-agent.ts +143 -26
- package/examples/domain-scoping.ts +31 -10
- package/examples/extracted-data-modification.ts +415 -0
- package/examples/healthcare-agent.ts +194 -90
- package/examples/openai-agent.ts +67 -25
- package/examples/opensearch-persistence.ts +455 -151
- package/examples/persistent-onboarding.ts +162 -96
- package/examples/prisma-persistence.ts +371 -125
- package/examples/redis-persistence.ts +393 -23
- package/examples/rules-prohibitions.ts +32 -11
- package/examples/streaming-agent.ts +61 -13
- package/examples/travel-agent.ts +266 -133
- package/package.json +1 -1
- package/src/core/Agent.ts +668 -356
- package/src/core/Events.ts +12 -2
- package/src/core/PersistenceManager.ts +81 -0
- package/src/core/PromptComposer.ts +143 -0
- package/src/core/ResponseEngine.ts +82 -0
- package/src/core/Route.ts +32 -17
- package/src/core/RoutingEngine.ts +165 -0
- package/src/core/State.ts +55 -15
- package/src/core/ToolExecutor.ts +117 -0
- package/src/core/Transition.ts +5 -5
- package/src/index.ts +12 -21
- package/src/providers/AnthropicProvider.ts +10 -13
- package/src/providers/GeminiProvider.ts +12 -8
- package/src/providers/OpenAIProvider.ts +10 -56
- package/src/providers/OpenRouterProvider.ts +10 -56
- package/src/types/agent.ts +16 -13
- package/src/types/ai.ts +6 -2
- package/src/types/history.ts +8 -0
- package/src/types/index.ts +0 -11
- package/src/types/route.ts +41 -5
- package/src/types/routing.ts +18 -0
- package/src/types/schema.ts +23 -0
- package/src/types/session.ts +219 -0
- package/src/types/tool.ts +29 -7
- package/src/utils/id.ts +0 -10
- package/src/utils/schema.ts +32 -0
- package/dist/cjs/core/ConditionEvaluator.d.ts +0 -72
- package/dist/cjs/core/ConditionEvaluator.d.ts.map +0 -1
- package/dist/cjs/core/ConditionEvaluator.js +0 -272
- package/dist/cjs/core/ConditionEvaluator.js.map +0 -1
- package/dist/cjs/core/Observation.d.ts +0 -24
- package/dist/cjs/core/Observation.d.ts.map +0 -1
- package/dist/cjs/core/Observation.js +0 -39
- package/dist/cjs/core/Observation.js.map +0 -1
- package/dist/cjs/core/PreparationEngine.d.ts +0 -116
- package/dist/cjs/core/PreparationEngine.d.ts.map +0 -1
- package/dist/cjs/core/PreparationEngine.js +0 -353
- package/dist/cjs/core/PreparationEngine.js.map +0 -1
- package/dist/cjs/core/PromptBuilder.d.ts +0 -136
- package/dist/cjs/core/PromptBuilder.d.ts.map +0 -1
- package/dist/cjs/core/PromptBuilder.js +0 -421
- package/dist/cjs/core/PromptBuilder.js.map +0 -1
- package/dist/cjs/types/observation.d.ts +0 -27
- package/dist/cjs/types/observation.d.ts.map +0 -1
- package/dist/cjs/types/observation.js +0 -6
- package/dist/cjs/types/observation.js.map +0 -1
- package/dist/cjs/types/prompt.d.ts +0 -46
- package/dist/cjs/types/prompt.d.ts.map +0 -1
- package/dist/cjs/types/prompt.js +0 -19
- package/dist/cjs/types/prompt.js.map +0 -1
- package/dist/core/ConditionEvaluator.d.ts +0 -72
- package/dist/core/ConditionEvaluator.d.ts.map +0 -1
- package/dist/core/ConditionEvaluator.js +0 -268
- package/dist/core/ConditionEvaluator.js.map +0 -1
- package/dist/core/Observation.d.ts +0 -24
- package/dist/core/Observation.d.ts.map +0 -1
- package/dist/core/Observation.js +0 -35
- package/dist/core/Observation.js.map +0 -1
- package/dist/core/PreparationEngine.d.ts +0 -116
- package/dist/core/PreparationEngine.d.ts.map +0 -1
- package/dist/core/PreparationEngine.js +0 -349
- package/dist/core/PreparationEngine.js.map +0 -1
- package/dist/core/PromptBuilder.d.ts +0 -136
- package/dist/core/PromptBuilder.d.ts.map +0 -1
- package/dist/core/PromptBuilder.js +0 -417
- package/dist/core/PromptBuilder.js.map +0 -1
- package/dist/types/observation.d.ts +0 -27
- package/dist/types/observation.d.ts.map +0 -1
- package/dist/types/observation.js +0 -5
- package/dist/types/observation.js.map +0 -1
- package/dist/types/prompt.d.ts +0 -46
- package/dist/types/prompt.d.ts.map +0 -1
- package/dist/types/prompt.js +0 -16
- package/dist/types/prompt.js.map +0 -1
- package/docs/STRUCTURE.md +0 -58
- package/src/core/ConditionEvaluator.ts +0 -381
- package/src/core/Observation.ts +0 -47
- package/src/core/PreparationEngine.ts +0 -561
- package/src/core/PromptBuilder.ts +0 -617
- package/src/types/observation.ts +0 -29
- package/src/types/prompt.ts +0 -49
|
@@ -1,349 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PreparationEngine - Handles the preparation iteration loop
|
|
3
|
-
*
|
|
4
|
-
* This engine implements the core Parlant/Emcie architecture:
|
|
5
|
-
* 1. Before generating a message, run preparation iterations
|
|
6
|
-
* 2. Each iteration:
|
|
7
|
-
* - Match guidelines against current context
|
|
8
|
-
* - Walk the state machine and execute tool transitions
|
|
9
|
-
* - Execute tools when conditions are met
|
|
10
|
-
* - Update context from tool results
|
|
11
|
-
* - Check if prepared to respond
|
|
12
|
-
* 3. After preparation, the AI generates the final message
|
|
13
|
-
*
|
|
14
|
-
* The AI NEVER sees tools - tools execute automatically based on:
|
|
15
|
-
* - State machine transitions ({ toolState: tool })
|
|
16
|
-
* - Guideline matching with associated tools
|
|
17
|
-
*/
|
|
18
|
-
import { ConditionEvaluator } from "./ConditionEvaluator";
|
|
19
|
-
export class PreparationEngine {
|
|
20
|
-
/**
|
|
21
|
-
* Run a list of async jobs with a concurrency limit, preserving order of results.
|
|
22
|
-
*/
|
|
23
|
-
async processWithConcurrency(tasks, runner, concurrency) {
|
|
24
|
-
const results = new Array(tasks.length);
|
|
25
|
-
let nextIndex = 0;
|
|
26
|
-
const workers = [];
|
|
27
|
-
const runNext = async () => {
|
|
28
|
-
const current = nextIndex++;
|
|
29
|
-
if (current >= tasks.length) {
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
try {
|
|
33
|
-
results[current] = await runner(tasks[current]);
|
|
34
|
-
}
|
|
35
|
-
finally {
|
|
36
|
-
await runNext();
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
const workerCount = Math.min(concurrency, tasks.length);
|
|
40
|
-
for (let i = 0; i < workerCount; i++) {
|
|
41
|
-
workers.push(runNext());
|
|
42
|
-
}
|
|
43
|
-
await Promise.all(workers);
|
|
44
|
-
return results;
|
|
45
|
-
}
|
|
46
|
-
constructor(ai, options) {
|
|
47
|
-
if (ai) {
|
|
48
|
-
this.conditionEvaluator = new ConditionEvaluator(ai);
|
|
49
|
-
}
|
|
50
|
-
this.maxParallelLlmCalls = options?.maxParallelLlmCalls ?? 4;
|
|
51
|
-
this.maxParallelTools = options?.maxParallelTools ?? 8;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Run preparation iterations before message generation
|
|
55
|
-
*
|
|
56
|
-
* This is the core engine that executes tools automatically
|
|
57
|
-
* based on state machine transitions and guideline matching.
|
|
58
|
-
*/
|
|
59
|
-
async prepare(preparationContext) {
|
|
60
|
-
const iterations = [];
|
|
61
|
-
let currentContext = { ...preparationContext.context };
|
|
62
|
-
const allToolExecutions = [];
|
|
63
|
-
let preparedToRespond = false;
|
|
64
|
-
// Run preparation iterations
|
|
65
|
-
for (let i = 0; i < preparationContext.maxIterations && !preparedToRespond; i++) {
|
|
66
|
-
const iteration = await this.runIteration({
|
|
67
|
-
iterationNumber: i + 1,
|
|
68
|
-
history: preparationContext.history,
|
|
69
|
-
currentState: preparationContext.currentState,
|
|
70
|
-
context: currentContext,
|
|
71
|
-
routes: preparationContext.routes,
|
|
72
|
-
guidelines: preparationContext.guidelines,
|
|
73
|
-
});
|
|
74
|
-
iterations.push(iteration);
|
|
75
|
-
allToolExecutions.push(...iteration.executedTools);
|
|
76
|
-
// Update context from tool results
|
|
77
|
-
if (Object.keys(iteration.contextUpdates).length > 0) {
|
|
78
|
-
currentContext = {
|
|
79
|
-
...currentContext,
|
|
80
|
-
...iteration.contextUpdates,
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
// Check if we're prepared to respond
|
|
84
|
-
// We're prepared if:
|
|
85
|
-
// 1. No tools were executed in this iteration (nothing left to do)
|
|
86
|
-
// 2. OR we've reached max iterations
|
|
87
|
-
// 3. OR iteration explicitly set preparedToRespond to true
|
|
88
|
-
if (iteration.executedTools.length === 0 ||
|
|
89
|
-
i === preparationContext.maxIterations - 1 ||
|
|
90
|
-
iteration.preparedToRespond) {
|
|
91
|
-
preparedToRespond = true;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
return {
|
|
95
|
-
iterations,
|
|
96
|
-
finalContext: currentContext,
|
|
97
|
-
toolExecutions: allToolExecutions,
|
|
98
|
-
preparedToRespond,
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Run a single preparation iteration
|
|
103
|
-
*/
|
|
104
|
-
async runIteration(params) {
|
|
105
|
-
const executedTools = [];
|
|
106
|
-
const contextUpdates = {};
|
|
107
|
-
const matchedGuidelines = [];
|
|
108
|
-
// Step 1: Match guidelines against current context
|
|
109
|
-
const matchedResults = await this.matchGuidelines(params.guidelines, params.context, params.history);
|
|
110
|
-
matchedGuidelines.push(...matchedResults);
|
|
111
|
-
// Step 2: Execute tools from matched guidelines
|
|
112
|
-
// Guidelines with associated tools should execute those tools
|
|
113
|
-
const guidelineToolCalls = [];
|
|
114
|
-
for (const match of matchedGuidelines) {
|
|
115
|
-
if (match.guideline.tools && match.guideline.tools.length > 0) {
|
|
116
|
-
for (const tool of match.guideline.tools) {
|
|
117
|
-
const t = tool;
|
|
118
|
-
guidelineToolCalls.push(() => this.executeTool(t, params.context, params.history));
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
if (guidelineToolCalls.length > 0) {
|
|
123
|
-
const results = await this.processWithConcurrency(guidelineToolCalls, (fn) => fn(), this.maxParallelTools);
|
|
124
|
-
for (const toolResult of results) {
|
|
125
|
-
if (toolResult) {
|
|
126
|
-
executedTools.push(toolResult);
|
|
127
|
-
if (toolResult.result && typeof toolResult.result === "object") {
|
|
128
|
-
const result = toolResult.result;
|
|
129
|
-
if (result.contextUpdate) {
|
|
130
|
-
Object.assign(contextUpdates, result.contextUpdate);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
// Step 3: Walk state machine and execute tool transitions
|
|
137
|
-
// Find current route and state, then execute any toolState transitions
|
|
138
|
-
if (params.currentState?.id) {
|
|
139
|
-
const currentRoute = params.routes.find((r) => r.id === params.currentState.routeId);
|
|
140
|
-
if (currentRoute) {
|
|
141
|
-
const toolResults = await this.executeStateToolTransitions(currentRoute, params.currentState, params.context, params.history);
|
|
142
|
-
executedTools.push(...toolResults);
|
|
143
|
-
// Update context from state tool results
|
|
144
|
-
for (const toolResult of toolResults) {
|
|
145
|
-
if (toolResult.result && typeof toolResult.result === "object") {
|
|
146
|
-
const result = toolResult.result;
|
|
147
|
-
if (result.contextUpdate) {
|
|
148
|
-
Object.assign(contextUpdates, result.contextUpdate);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
return {
|
|
155
|
-
iterationNumber: params.iterationNumber,
|
|
156
|
-
matchedGuidelines,
|
|
157
|
-
executedTools,
|
|
158
|
-
contextUpdates,
|
|
159
|
-
preparedToRespond: false, // Will be determined by caller
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Match guidelines against current context
|
|
164
|
-
*
|
|
165
|
-
* Evaluates guideline conditions against the current context and history
|
|
166
|
-
* using AI to determine relevance and priority
|
|
167
|
-
*/
|
|
168
|
-
async matchGuidelines(guidelines, context, history) {
|
|
169
|
-
const alwaysMatches = guidelines.filter((g) => g.enabled !== false && !g.condition);
|
|
170
|
-
const conditional = guidelines.filter((g) => g.enabled !== false && g.condition);
|
|
171
|
-
const matches = alwaysMatches.map((guideline) => ({
|
|
172
|
-
guideline,
|
|
173
|
-
rationale: "Guideline has no condition - always active",
|
|
174
|
-
}));
|
|
175
|
-
if (!this.conditionEvaluator) {
|
|
176
|
-
// No AI available, match all enabled guidelines with conditions
|
|
177
|
-
for (const guideline of conditional) {
|
|
178
|
-
matches.push({
|
|
179
|
-
guideline,
|
|
180
|
-
rationale: "AI not available - defaulting to match",
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
return matches;
|
|
184
|
-
}
|
|
185
|
-
// Evaluate conditional guidelines with limited parallelism
|
|
186
|
-
const workers = conditional.map((guideline) => async () => {
|
|
187
|
-
const evaluation = await this.conditionEvaluator.evaluateGuidelineCondition(guideline, context, history);
|
|
188
|
-
if (evaluation.matches) {
|
|
189
|
-
return {
|
|
190
|
-
guideline,
|
|
191
|
-
rationale: evaluation.rationale || "Condition evaluated as true",
|
|
192
|
-
};
|
|
193
|
-
}
|
|
194
|
-
return null;
|
|
195
|
-
});
|
|
196
|
-
const evaluated = await this.processWithConcurrency(workers, (w) => w(), this.maxParallelLlmCalls);
|
|
197
|
-
for (const r of evaluated) {
|
|
198
|
-
if (r) {
|
|
199
|
-
matches.push(r);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
return matches;
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Execute a single tool
|
|
206
|
-
*/
|
|
207
|
-
async executeTool(tool, context, history) {
|
|
208
|
-
try {
|
|
209
|
-
// Extract arguments from context and history
|
|
210
|
-
let args;
|
|
211
|
-
if (this.conditionEvaluator && tool.parameters) {
|
|
212
|
-
// Use AI-powered extraction if available
|
|
213
|
-
const extraction = await this.conditionEvaluator.extractToolArguments(tool, context, history);
|
|
214
|
-
args = extraction.arguments;
|
|
215
|
-
}
|
|
216
|
-
else {
|
|
217
|
-
// Fallback to simple extraction
|
|
218
|
-
args = this.conditionEvaluator
|
|
219
|
-
? this.conditionEvaluator.simpleArgumentExtraction(tool, context)
|
|
220
|
-
: [];
|
|
221
|
-
}
|
|
222
|
-
// Execute the tool handler
|
|
223
|
-
const result = await tool.handler({
|
|
224
|
-
context,
|
|
225
|
-
history,
|
|
226
|
-
updateContext: async (_updates) => {
|
|
227
|
-
// Context updates are handled separately in the preparation loop
|
|
228
|
-
// This is a no-op placeholder
|
|
229
|
-
},
|
|
230
|
-
}, ...args);
|
|
231
|
-
return {
|
|
232
|
-
toolName: tool.name,
|
|
233
|
-
arguments: { args }, // Wrap array in object for logging
|
|
234
|
-
result,
|
|
235
|
-
success: true,
|
|
236
|
-
};
|
|
237
|
-
}
|
|
238
|
-
catch (error) {
|
|
239
|
-
console.error(`[PreparationEngine] Tool execution failed: ${tool.name}`, error);
|
|
240
|
-
return {
|
|
241
|
-
toolName: tool.name,
|
|
242
|
-
arguments: {},
|
|
243
|
-
result: null,
|
|
244
|
-
success: false,
|
|
245
|
-
error: error instanceof Error ? error.message : String(error),
|
|
246
|
-
};
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
/**
|
|
250
|
-
* Execute tool transitions in the state machine
|
|
251
|
-
*
|
|
252
|
-
* Walks through state transitions and executes tools when
|
|
253
|
-
* reaching a { toolState: tool } transition
|
|
254
|
-
*/
|
|
255
|
-
async executeStateToolTransitions(route, currentStateRef, context, history) {
|
|
256
|
-
const executedTools = [];
|
|
257
|
-
// Get the current state from the route or use initial state
|
|
258
|
-
let stateToWalk;
|
|
259
|
-
try {
|
|
260
|
-
const foundState = route.getState(currentStateRef.id);
|
|
261
|
-
if (foundState) {
|
|
262
|
-
stateToWalk = foundState;
|
|
263
|
-
}
|
|
264
|
-
else {
|
|
265
|
-
stateToWalk = route.initialState;
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
catch {
|
|
269
|
-
// If any error occurs, fallback to initial state
|
|
270
|
-
stateToWalk = route.initialState;
|
|
271
|
-
}
|
|
272
|
-
// Walk the state machine starting from the determined state
|
|
273
|
-
const toolResults = await this.walkStateChain(stateToWalk, context, history, new Set() // Track visited states to prevent loops
|
|
274
|
-
);
|
|
275
|
-
executedTools.push(...toolResults);
|
|
276
|
-
return executedTools;
|
|
277
|
-
}
|
|
278
|
-
/**
|
|
279
|
-
* Walk through a chain of states, executing tools along the way
|
|
280
|
-
*/
|
|
281
|
-
async walkStateChain(state, context, history, visited) {
|
|
282
|
-
const executedTools = [];
|
|
283
|
-
// Prevent infinite loops
|
|
284
|
-
if (visited.has(state.id)) {
|
|
285
|
-
return executedTools;
|
|
286
|
-
}
|
|
287
|
-
visited.add(state.id);
|
|
288
|
-
// Get all transitions from this state
|
|
289
|
-
const transitions = state.getTransitions();
|
|
290
|
-
// Process each transition
|
|
291
|
-
for (const transition of transitions) {
|
|
292
|
-
// Check if transition has a condition
|
|
293
|
-
if (transition.hasCondition()) {
|
|
294
|
-
// Evaluate condition
|
|
295
|
-
const shouldFollow = await this.evaluateTransitionCondition(transition, context, history);
|
|
296
|
-
if (!shouldFollow) {
|
|
297
|
-
continue; // Skip this transition
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
// Check if this is a toolState transition
|
|
301
|
-
if (transition.spec.toolState) {
|
|
302
|
-
// Execute the tool
|
|
303
|
-
const toolResult = await this.executeTool(transition.spec.toolState, context, history);
|
|
304
|
-
if (toolResult) {
|
|
305
|
-
executedTools.push(toolResult);
|
|
306
|
-
// Update context with tool results for next transitions
|
|
307
|
-
if (toolResult.result && typeof toolResult.result === "object") {
|
|
308
|
-
const result = toolResult.result;
|
|
309
|
-
if (result.contextUpdate) {
|
|
310
|
-
context = {
|
|
311
|
-
...context,
|
|
312
|
-
...result.contextUpdate,
|
|
313
|
-
};
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
// Get the target state and recursively walk it
|
|
319
|
-
const targetState = transition.getTarget();
|
|
320
|
-
if (targetState && !visited.has(targetState.id)) {
|
|
321
|
-
const childResults = await this.walkStateChain(targetState, context, history, visited);
|
|
322
|
-
executedTools.push(...childResults);
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
return executedTools;
|
|
326
|
-
}
|
|
327
|
-
/**
|
|
328
|
-
* Evaluate a transition condition
|
|
329
|
-
*/
|
|
330
|
-
async evaluateTransitionCondition(transition, context, history) {
|
|
331
|
-
if (!transition.condition) {
|
|
332
|
-
return true; // No condition = always follow
|
|
333
|
-
}
|
|
334
|
-
// If no AI evaluator available, default to true
|
|
335
|
-
if (!this.conditionEvaluator) {
|
|
336
|
-
return true;
|
|
337
|
-
}
|
|
338
|
-
try {
|
|
339
|
-
const evaluation = await this.conditionEvaluator.evaluateTransitionCondition(transition.condition, context, history);
|
|
340
|
-
return evaluation.shouldFollow;
|
|
341
|
-
}
|
|
342
|
-
catch (error) {
|
|
343
|
-
console.error(`[PreparationEngine] Failed to evaluate transition condition`, error);
|
|
344
|
-
// On error, default to false (don't follow)
|
|
345
|
-
return false;
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
//# sourceMappingURL=PreparationEngine.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PreparationEngine.js","sourceRoot":"","sources":["../../src/core/PreparationEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Prompt construction and management
|
|
3
|
-
*/
|
|
4
|
-
import type { Event, EmittedEvent } from "../types/history";
|
|
5
|
-
import type { Term, Capability, GuidelineMatch } from "../types/agent";
|
|
6
|
-
import type { PromptSection, ContextVariableValue } from "../types/prompt";
|
|
7
|
-
import { SectionStatus } from "../types/prompt";
|
|
8
|
-
/**
|
|
9
|
-
* Built-in section identifiers
|
|
10
|
-
*/
|
|
11
|
-
export declare enum BuiltInSection {
|
|
12
|
-
AGENT_IDENTITY = "agent_identity",
|
|
13
|
-
CUSTOMER_IDENTITY = "customer_identity",
|
|
14
|
-
INTERACTION_HISTORY = "interaction_history",
|
|
15
|
-
CONTEXT_VARIABLES = "context_variables",
|
|
16
|
-
GLOSSARY = "glossary",
|
|
17
|
-
GUIDELINE_DESCRIPTIONS = "guideline_descriptions",
|
|
18
|
-
GUIDELINES = "guidelines",
|
|
19
|
-
STAGED_EVENTS = "staged_events",
|
|
20
|
-
ROUTES = "routes",
|
|
21
|
-
OBSERVATIONS = "observations",
|
|
22
|
-
CAPABILITIES = "capabilities",
|
|
23
|
-
ACTIVE_ROUTES = "active_routes",
|
|
24
|
-
DOMAINS = "domains"
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Customer/user information
|
|
28
|
-
*/
|
|
29
|
-
export interface Customer {
|
|
30
|
-
name: string;
|
|
31
|
-
id?: string;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Agent information for prompt building
|
|
35
|
-
*/
|
|
36
|
-
export interface AgentInfo {
|
|
37
|
-
name: string;
|
|
38
|
-
description?: string;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Builds prompts from composable sections
|
|
42
|
-
*/
|
|
43
|
-
export declare class PromptBuilder {
|
|
44
|
-
private sections;
|
|
45
|
-
private onBuild?;
|
|
46
|
-
private cachedResults;
|
|
47
|
-
constructor(onBuild?: (prompt: string) => void);
|
|
48
|
-
/**
|
|
49
|
-
* Build the final prompt from all sections
|
|
50
|
-
*/
|
|
51
|
-
build(): string;
|
|
52
|
-
/**
|
|
53
|
-
* Add a section to the prompt
|
|
54
|
-
*/
|
|
55
|
-
addSection(name: string | BuiltInSection, template: string, props?: Record<string, unknown>, status?: SectionStatus): this;
|
|
56
|
-
/**
|
|
57
|
-
* Edit an existing section
|
|
58
|
-
*/
|
|
59
|
-
editSection(name: string | BuiltInSection, editor: (section: PromptSection) => PromptSection): this;
|
|
60
|
-
/**
|
|
61
|
-
* Get section status
|
|
62
|
-
*/
|
|
63
|
-
sectionStatus(name: string | BuiltInSection): SectionStatus;
|
|
64
|
-
/**
|
|
65
|
-
* Add agent identity section
|
|
66
|
-
*/
|
|
67
|
-
addAgentIdentity(agent: AgentInfo): this;
|
|
68
|
-
/**
|
|
69
|
-
* Add customer identity section
|
|
70
|
-
*/
|
|
71
|
-
addCustomerIdentity(customer: Customer): this;
|
|
72
|
-
/**
|
|
73
|
-
* Add interaction history section
|
|
74
|
-
*/
|
|
75
|
-
addInteractionHistory(events: Event[], stagedEvents?: EmittedEvent[]): this;
|
|
76
|
-
/**
|
|
77
|
-
* Add interaction history with special handling for message generation
|
|
78
|
-
*/
|
|
79
|
-
addInteractionHistoryForMessageGeneration(events: Event[], stagedEvents?: EmittedEvent[]): this;
|
|
80
|
-
/**
|
|
81
|
-
* Add context variables section
|
|
82
|
-
*/
|
|
83
|
-
addContextVariables(variables: ContextVariableValue[]): this;
|
|
84
|
-
/**
|
|
85
|
-
* Add glossary section
|
|
86
|
-
*/
|
|
87
|
-
addGlossary(terms: Term[]): this;
|
|
88
|
-
/**
|
|
89
|
-
* Add staged tool events section
|
|
90
|
-
*/
|
|
91
|
-
addStagedToolEvents(events: EmittedEvent[]): this;
|
|
92
|
-
/**
|
|
93
|
-
* Add guidelines for message generation
|
|
94
|
-
*/
|
|
95
|
-
addGuidelinesForMessageGeneration(guidelines: GuidelineMatch[]): this;
|
|
96
|
-
/**
|
|
97
|
-
* Add capabilities section for message generation
|
|
98
|
-
*/
|
|
99
|
-
addCapabilitiesForMessageGeneration(capabilities: Capability[]): this;
|
|
100
|
-
/**
|
|
101
|
-
* Add observations for disambiguation
|
|
102
|
-
*/
|
|
103
|
-
addObservations(observations: Array<{
|
|
104
|
-
description: string;
|
|
105
|
-
routes: Array<{
|
|
106
|
-
title: string;
|
|
107
|
-
}>;
|
|
108
|
-
}>): this;
|
|
109
|
-
/**
|
|
110
|
-
* Add active routes information
|
|
111
|
-
*/
|
|
112
|
-
addActiveRoutes(routes: Array<{
|
|
113
|
-
title: string;
|
|
114
|
-
description?: string;
|
|
115
|
-
conditions: string[];
|
|
116
|
-
domains?: string[];
|
|
117
|
-
rules?: string[];
|
|
118
|
-
prohibitions?: string[];
|
|
119
|
-
}>): this;
|
|
120
|
-
/**
|
|
121
|
-
* Add domains (tools) information
|
|
122
|
-
*/
|
|
123
|
-
addDomains(domains: Record<string, Record<string, unknown>>): this;
|
|
124
|
-
/**
|
|
125
|
-
* Add JSON response schema instructions
|
|
126
|
-
*
|
|
127
|
-
* NOTE: toolCalls are NOT included. Tools execute automatically based on
|
|
128
|
-
* state transitions and guideline matching, NOT based on AI decisions.
|
|
129
|
-
*/
|
|
130
|
-
addJsonResponseSchema(): this;
|
|
131
|
-
private formatTemplate;
|
|
132
|
-
private gatherInteractionEvents;
|
|
133
|
-
private lastAgentMessageNote;
|
|
134
|
-
private contextVariablesToJson;
|
|
135
|
-
}
|
|
136
|
-
//# sourceMappingURL=PromptBuilder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PromptBuilder.d.ts","sourceRoot":"","sources":["../../src/core/PromptBuilder.ts"],"names":[],"mappings":"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"}
|