@falai/agent 1.1.2 → 1.2.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 +9 -0
- package/dist/cjs/core/Agent.d.ts +17 -1
- package/dist/cjs/core/Agent.d.ts.map +1 -1
- package/dist/cjs/core/Agent.js +47 -0
- package/dist/cjs/core/Agent.js.map +1 -1
- package/dist/cjs/core/BatchPromptBuilder.d.ts +3 -0
- package/dist/cjs/core/BatchPromptBuilder.d.ts.map +1 -1
- package/dist/cjs/core/BatchPromptBuilder.js +14 -11
- package/dist/cjs/core/BatchPromptBuilder.js.map +1 -1
- package/dist/cjs/core/CompactionEngine.d.ts +65 -0
- package/dist/cjs/core/CompactionEngine.d.ts.map +1 -0
- package/dist/cjs/core/CompactionEngine.js +251 -0
- package/dist/cjs/core/CompactionEngine.js.map +1 -0
- package/dist/cjs/core/PromptComposer.d.ts +8 -1
- package/dist/cjs/core/PromptComposer.d.ts.map +1 -1
- package/dist/cjs/core/PromptComposer.js +238 -118
- package/dist/cjs/core/PromptComposer.js.map +1 -1
- package/dist/cjs/core/PromptSectionCache.d.ts +57 -0
- package/dist/cjs/core/PromptSectionCache.d.ts.map +1 -0
- package/dist/cjs/core/PromptSectionCache.js +108 -0
- package/dist/cjs/core/PromptSectionCache.js.map +1 -0
- package/dist/cjs/core/ResponseEngine.d.ts +3 -0
- package/dist/cjs/core/ResponseEngine.d.ts.map +1 -1
- package/dist/cjs/core/ResponseEngine.js +10 -6
- package/dist/cjs/core/ResponseEngine.js.map +1 -1
- package/dist/cjs/core/ResponseModal.d.ts.map +1 -1
- package/dist/cjs/core/ResponseModal.js +79 -20
- package/dist/cjs/core/ResponseModal.js.map +1 -1
- package/dist/cjs/core/RoutingEngine.d.ts +10 -0
- package/dist/cjs/core/RoutingEngine.d.ts.map +1 -1
- package/dist/cjs/core/RoutingEngine.js +3 -2
- package/dist/cjs/core/RoutingEngine.js.map +1 -1
- package/dist/cjs/core/SessionManager.d.ts.map +1 -1
- package/dist/cjs/core/SessionManager.js +20 -0
- package/dist/cjs/core/SessionManager.js.map +1 -1
- package/dist/cjs/core/StreamingToolExecutor.d.ts +142 -0
- package/dist/cjs/core/StreamingToolExecutor.d.ts.map +1 -0
- package/dist/cjs/core/StreamingToolExecutor.js +455 -0
- package/dist/cjs/core/StreamingToolExecutor.js.map +1 -0
- package/dist/cjs/core/ToolManager.d.ts +18 -1
- package/dist/cjs/core/ToolManager.d.ts.map +1 -1
- package/dist/cjs/core/ToolManager.js +91 -0
- package/dist/cjs/core/ToolManager.js.map +1 -1
- package/dist/cjs/index.d.ts +5 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +8 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/providers/AnthropicProvider.d.ts.map +1 -1
- package/dist/cjs/providers/AnthropicProvider.js +8 -7
- package/dist/cjs/providers/AnthropicProvider.js.map +1 -1
- package/dist/cjs/providers/GeminiProvider.d.ts +25 -0
- package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/cjs/providers/GeminiProvider.js +79 -51
- 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 +14 -6
- 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 +7 -6
- package/dist/cjs/providers/OpenRouterProvider.js.map +1 -1
- package/dist/cjs/types/agent.d.ts +44 -0
- package/dist/cjs/types/agent.d.ts.map +1 -1
- package/dist/cjs/types/agent.js.map +1 -1
- package/dist/cjs/types/compaction.d.ts +50 -0
- package/dist/cjs/types/compaction.d.ts.map +1 -0
- package/dist/cjs/types/compaction.js +6 -0
- package/dist/cjs/types/compaction.js.map +1 -0
- package/dist/cjs/types/index.d.ts +4 -2
- package/dist/cjs/types/index.d.ts.map +1 -1
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/types/tool.d.ts +84 -0
- package/dist/cjs/types/tool.d.ts.map +1 -1
- package/dist/core/Agent.d.ts +17 -1
- package/dist/core/Agent.d.ts.map +1 -1
- package/dist/core/Agent.js +47 -0
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/BatchPromptBuilder.d.ts +3 -0
- package/dist/core/BatchPromptBuilder.d.ts.map +1 -1
- package/dist/core/BatchPromptBuilder.js +14 -11
- package/dist/core/BatchPromptBuilder.js.map +1 -1
- package/dist/core/CompactionEngine.d.ts +65 -0
- package/dist/core/CompactionEngine.d.ts.map +1 -0
- package/dist/core/CompactionEngine.js +244 -0
- package/dist/core/CompactionEngine.js.map +1 -0
- package/dist/core/PromptComposer.d.ts +8 -1
- package/dist/core/PromptComposer.d.ts.map +1 -1
- package/dist/core/PromptComposer.js +238 -118
- package/dist/core/PromptComposer.js.map +1 -1
- package/dist/core/PromptSectionCache.d.ts +57 -0
- package/dist/core/PromptSectionCache.d.ts.map +1 -0
- package/dist/core/PromptSectionCache.js +104 -0
- package/dist/core/PromptSectionCache.js.map +1 -0
- package/dist/core/ResponseEngine.d.ts +3 -0
- package/dist/core/ResponseEngine.d.ts.map +1 -1
- package/dist/core/ResponseEngine.js +10 -6
- package/dist/core/ResponseEngine.js.map +1 -1
- package/dist/core/ResponseModal.d.ts.map +1 -1
- package/dist/core/ResponseModal.js +79 -20
- package/dist/core/ResponseModal.js.map +1 -1
- package/dist/core/RoutingEngine.d.ts +10 -0
- package/dist/core/RoutingEngine.d.ts.map +1 -1
- package/dist/core/RoutingEngine.js +3 -2
- package/dist/core/RoutingEngine.js.map +1 -1
- package/dist/core/SessionManager.d.ts.map +1 -1
- package/dist/core/SessionManager.js +17 -0
- package/dist/core/SessionManager.js.map +1 -1
- package/dist/core/StreamingToolExecutor.d.ts +142 -0
- package/dist/core/StreamingToolExecutor.d.ts.map +1 -0
- package/dist/core/StreamingToolExecutor.js +448 -0
- package/dist/core/StreamingToolExecutor.js.map +1 -0
- package/dist/core/ToolManager.d.ts +18 -1
- package/dist/core/ToolManager.d.ts.map +1 -1
- package/dist/core/ToolManager.js +91 -0
- package/dist/core/ToolManager.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/providers/AnthropicProvider.d.ts.map +1 -1
- package/dist/providers/AnthropicProvider.js +8 -7
- package/dist/providers/AnthropicProvider.js.map +1 -1
- package/dist/providers/GeminiProvider.d.ts +25 -0
- package/dist/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/providers/GeminiProvider.js +79 -51
- package/dist/providers/GeminiProvider.js.map +1 -1
- package/dist/providers/OpenAIProvider.d.ts.map +1 -1
- package/dist/providers/OpenAIProvider.js +14 -6
- package/dist/providers/OpenAIProvider.js.map +1 -1
- package/dist/providers/OpenRouterProvider.d.ts.map +1 -1
- package/dist/providers/OpenRouterProvider.js +7 -6
- package/dist/providers/OpenRouterProvider.js.map +1 -1
- package/dist/types/agent.d.ts +44 -0
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/agent.js.map +1 -1
- package/dist/types/compaction.d.ts +50 -0
- package/dist/types/compaction.d.ts.map +1 -0
- package/dist/types/compaction.js +5 -0
- package/dist/types/compaction.js.map +1 -0
- package/dist/types/index.d.ts +4 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/tool.d.ts +84 -0
- package/dist/types/tool.d.ts.map +1 -1
- package/docs/api/overview.md +140 -0
- package/docs/core/tools/enhanced-tool.md +186 -0
- package/docs/core/tools/streaming-execution.md +161 -0
- package/docs/guides/context-compaction.md +96 -0
- package/docs/guides/prompt-optimization.md +164 -0
- package/examples/advanced-patterns/context-compaction.ts +223 -0
- package/examples/advanced-patterns/streaming-responses.ts +85 -7
- package/examples/tools/enhanced-tool-metadata.ts +268 -0
- package/examples/tools/streaming-tool-execution.ts +283 -0
- package/package.json +1 -1
- package/src/core/Agent.ts +58 -2
- package/src/core/BatchPromptBuilder.ts +14 -11
- package/src/core/CompactionEngine.ts +318 -0
- package/src/core/PromptComposer.ts +261 -141
- package/src/core/PromptSectionCache.ts +136 -0
- package/src/core/ResponseEngine.ts +9 -6
- package/src/core/ResponseModal.ts +81 -20
- package/src/core/RoutingEngine.ts +13 -2
- package/src/core/SessionManager.ts +19 -0
- package/src/core/StreamingToolExecutor.ts +572 -0
- package/src/core/ToolManager.ts +151 -41
- package/src/index.ts +14 -0
- package/src/providers/AnthropicProvider.ts +11 -12
- package/src/providers/GeminiProvider.ts +83 -52
- package/src/providers/OpenAIProvider.ts +21 -13
- package/src/providers/OpenRouterProvider.ts +13 -13
- package/src/types/agent.ts +45 -0
- package/src/types/compaction.ts +52 -0
- package/src/types/index.ts +35 -14
- package/src/types/tool.ts +108 -0
|
@@ -4,188 +4,308 @@ exports.PromptComposer = void 0;
|
|
|
4
4
|
const template_1 = require("../utils/template");
|
|
5
5
|
const condition_1 = require("../utils/condition");
|
|
6
6
|
class PromptComposer {
|
|
7
|
-
constructor(context = (0, template_1.createTemplateContext)({})) {
|
|
7
|
+
constructor(context = (0, template_1.createTemplateContext)({}), cache) {
|
|
8
8
|
this.parts = [];
|
|
9
|
+
this.instructionCounter = 0;
|
|
9
10
|
this.renderContext = context;
|
|
11
|
+
this.cache = cache ?? null;
|
|
10
12
|
}
|
|
11
13
|
// Specific, typed sections tailored to the framework
|
|
12
14
|
async addAgentMeta(agent) {
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
15
|
+
const compute = async () => {
|
|
16
|
+
const lines = [];
|
|
17
|
+
lines.push("## Agent Identity");
|
|
18
|
+
lines.push(`You are "${agent.name}". Always refer to yourself by this name.`);
|
|
19
|
+
if (agent.identity) {
|
|
20
|
+
lines.push(await (0, template_1.render)(agent.identity, this.renderContext));
|
|
21
|
+
}
|
|
22
|
+
if (agent.personality) {
|
|
23
|
+
lines.push(`Communicate in the following style: ${await (0, template_1.render)(agent.personality, this.renderContext)}`);
|
|
24
|
+
}
|
|
25
|
+
if (agent.goal) {
|
|
26
|
+
lines.push(`Your primary goal: ${agent.goal}`);
|
|
27
|
+
}
|
|
28
|
+
if (agent.description) {
|
|
29
|
+
lines.push(`About you: ${agent.description}`);
|
|
30
|
+
}
|
|
31
|
+
if (agent.rules?.length) {
|
|
32
|
+
const renderedRules = await (0, template_1.renderMany)(agent.rules, this.renderContext);
|
|
33
|
+
lines.push(`You MUST always follow these rules:\n- ${renderedRules.join("\n- ")}`);
|
|
34
|
+
}
|
|
35
|
+
if (agent.prohibitions?.length) {
|
|
36
|
+
const renderedProhibitions = await (0, template_1.renderMany)(agent.prohibitions, this.renderContext);
|
|
37
|
+
lines.push(`You MUST NEVER do the following:\n- ${renderedProhibitions.join("\n- ")}`);
|
|
38
|
+
}
|
|
39
|
+
return lines.join("\n");
|
|
40
|
+
};
|
|
41
|
+
if (this.cache) {
|
|
42
|
+
this.cache.register("agentMeta", "static", compute);
|
|
24
43
|
}
|
|
25
|
-
|
|
26
|
-
|
|
44
|
+
else {
|
|
45
|
+
const result = await compute();
|
|
46
|
+
if (result)
|
|
47
|
+
this.parts.push(result);
|
|
27
48
|
}
|
|
28
|
-
this.parts.push(lines.join("\n"));
|
|
29
49
|
return this;
|
|
30
50
|
}
|
|
31
51
|
async addRoutingOverview(routes) {
|
|
32
52
|
return this.addActiveRoutes(routes);
|
|
33
53
|
}
|
|
34
54
|
async addScoringRules() {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
55
|
+
const compute = () => {
|
|
56
|
+
return `## Scoring Rules\n\n${[
|
|
57
|
+
"- 90-100: explicit keywords + clear intent",
|
|
58
|
+
"- 70-89: strong contextual evidence + relevant keywords",
|
|
59
|
+
"- 50-69: moderate relevance",
|
|
60
|
+
"- 30-49: weak connection or ambiguous",
|
|
61
|
+
"- 0-29: minimal/none",
|
|
62
|
+
"Return ONLY JSON matching the provided schema. Include scores for ALL routes.",
|
|
63
|
+
].join("\n")}`;
|
|
64
|
+
};
|
|
65
|
+
if (this.cache) {
|
|
66
|
+
this.cache.register("scoringRules", "static", compute);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
this.parts.push(compute());
|
|
70
|
+
}
|
|
43
71
|
return Promise.resolve(this);
|
|
44
72
|
}
|
|
45
73
|
async addInstruction(text) {
|
|
46
|
-
if (text)
|
|
47
|
-
|
|
74
|
+
if (!text)
|
|
75
|
+
return Promise.resolve(this);
|
|
76
|
+
const content = `## Instruction\n\n${text}`;
|
|
77
|
+
if (this.cache) {
|
|
78
|
+
const key = `instruction-${this.instructionCounter++}`;
|
|
79
|
+
this.cache.register(key, "dynamic", () => content);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
this.parts.push(content);
|
|
83
|
+
}
|
|
48
84
|
return Promise.resolve(this);
|
|
49
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* @deprecated History should flow through `GenerateMessageInput.history` natively.
|
|
88
|
+
* This method is kept for backward compatibility but will be removed in a future version.
|
|
89
|
+
*/
|
|
50
90
|
async addInteractionHistory(history, note) {
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
91
|
+
const compute = () => {
|
|
92
|
+
const recent = history
|
|
93
|
+
.slice(-10)
|
|
94
|
+
.map((e) => `- ${JSON.stringify(e)}`)
|
|
95
|
+
.join("\n");
|
|
96
|
+
const header = note ? `${note}\n\n` : "";
|
|
97
|
+
return `## Interaction History\n\n${header}Recent conversation events:\n\n${recent}`;
|
|
98
|
+
};
|
|
99
|
+
if (this.cache) {
|
|
100
|
+
this.cache.register("interactionHistory", "dynamic", compute);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
this.parts.push(compute());
|
|
104
|
+
}
|
|
57
105
|
return Promise.resolve(this);
|
|
58
106
|
}
|
|
59
107
|
async addLastMessage(message) {
|
|
60
|
-
|
|
108
|
+
const compute = () => {
|
|
109
|
+
return `## Last Message\n\n${message}`;
|
|
110
|
+
};
|
|
111
|
+
if (this.cache) {
|
|
112
|
+
this.cache.register("lastMessage", "dynamic", compute);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
this.parts.push(compute());
|
|
116
|
+
}
|
|
61
117
|
return Promise.resolve(this);
|
|
62
118
|
}
|
|
63
119
|
async addGlossary(terms) {
|
|
64
120
|
if (!terms.length)
|
|
65
121
|
return this;
|
|
66
|
-
const
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
122
|
+
const compute = async () => {
|
|
123
|
+
const renderedTerms = await Promise.all(terms.map(async (t) => {
|
|
124
|
+
const name = await (0, template_1.render)(t.name, this.renderContext);
|
|
125
|
+
const description = await (0, template_1.render)(t.description, this.renderContext);
|
|
126
|
+
const synonyms = t.synonyms
|
|
127
|
+
? await (0, template_1.renderMany)(t.synonyms, this.renderContext)
|
|
128
|
+
: [];
|
|
129
|
+
const synonymText = synonyms.length > 0 ? ` (synonyms: ${synonyms.join(", ")})` : "";
|
|
130
|
+
return `- **${name}**${synonymText}: ${description}`;
|
|
131
|
+
}));
|
|
132
|
+
return `## Glossary\n\n${renderedTerms.join("\n")}`;
|
|
133
|
+
};
|
|
134
|
+
if (this.cache) {
|
|
135
|
+
this.cache.register("glossary", "static", compute);
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
const result = await compute();
|
|
139
|
+
if (result)
|
|
140
|
+
this.parts.push(result);
|
|
141
|
+
}
|
|
76
142
|
return this;
|
|
77
143
|
}
|
|
78
144
|
async addGuidelines(guidelines) {
|
|
79
145
|
const enabled = guidelines.filter((g) => g.enabled !== false);
|
|
80
146
|
if (!enabled.length)
|
|
81
147
|
return this;
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
148
|
+
const compute = async () => {
|
|
149
|
+
const evaluator = new condition_1.ConditionEvaluator(this.renderContext);
|
|
150
|
+
const activeGuidelines = [];
|
|
151
|
+
const allAIContextStrings = [];
|
|
152
|
+
// Evaluate guideline conditions to determine which are active
|
|
153
|
+
for (const guideline of enabled) {
|
|
154
|
+
if (guideline.condition) {
|
|
155
|
+
const evaluation = await evaluator.evaluateCondition(guideline.condition, 'AND');
|
|
156
|
+
// Collect AI context strings for prompt
|
|
157
|
+
allAIContextStrings.push(...evaluation.aiContextStrings);
|
|
158
|
+
// Include guideline if:
|
|
159
|
+
// 1. No programmatic conditions (only strings) - always active
|
|
160
|
+
// 2. Programmatic conditions evaluate to true
|
|
161
|
+
if (!evaluation.hasProgrammaticConditions || evaluation.programmaticResult) {
|
|
162
|
+
activeGuidelines.push(guideline);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
// No condition means always active
|
|
95
167
|
activeGuidelines.push(guideline);
|
|
96
168
|
}
|
|
97
169
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
const conditionStrings = (0, condition_1.extractAIContextStrings)(g.condition);
|
|
110
|
-
if (conditionStrings.length > 0) {
|
|
111
|
-
const conditionText = conditionStrings.join(" AND ");
|
|
112
|
-
return `- Guideline #${i + 1}: When ${conditionText}, then ${action}`;
|
|
170
|
+
if (!activeGuidelines.length && !allAIContextStrings.length)
|
|
171
|
+
return null;
|
|
172
|
+
const renderedGuidelines = await Promise.all(activeGuidelines.map(async (g, i) => {
|
|
173
|
+
const action = await (0, template_1.render)(g.action, this.renderContext);
|
|
174
|
+
if (g.condition) {
|
|
175
|
+
// Use AI context strings if available, otherwise render the condition
|
|
176
|
+
const conditionStrings = (0, condition_1.extractAIContextStrings)(g.condition);
|
|
177
|
+
if (conditionStrings.length > 0) {
|
|
178
|
+
const conditionText = conditionStrings.join(" AND ");
|
|
179
|
+
return `- Guideline #${i + 1}: When ${conditionText}, then ${action}`;
|
|
180
|
+
}
|
|
113
181
|
}
|
|
182
|
+
return `- Guideline #${i + 1}: ${action}`;
|
|
183
|
+
}));
|
|
184
|
+
// Add any additional AI context from inactive guidelines
|
|
185
|
+
if (allAIContextStrings.length > 0) {
|
|
186
|
+
const uniqueContextStrings = Array.from(new Set(allAIContextStrings));
|
|
187
|
+
const contextSection = `\n\n**Additional Context:** ${uniqueContextStrings.join(", ")}`;
|
|
188
|
+
return `## Guidelines\n\n${renderedGuidelines.join("\n")}${contextSection}`;
|
|
114
189
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
this.parts.push(`## Guidelines\n\n${renderedGuidelines.join("\n")}${contextSection}`);
|
|
190
|
+
else {
|
|
191
|
+
return `## Guidelines\n\n${renderedGuidelines.join("\n")}`;
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
if (this.cache) {
|
|
195
|
+
this.cache.register("guidelines", "dynamic", compute);
|
|
122
196
|
}
|
|
123
197
|
else {
|
|
124
|
-
|
|
198
|
+
const result = await compute();
|
|
199
|
+
if (result)
|
|
200
|
+
this.parts.push(result);
|
|
125
201
|
}
|
|
126
202
|
return this;
|
|
127
203
|
}
|
|
128
204
|
async addKnowledgeBase(agentKnowledgeBase, routeKnowledgeBase) {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
205
|
+
const compute = () => {
|
|
206
|
+
// Merge agent and route knowledge bases (route takes precedence for conflicts)
|
|
207
|
+
const mergedKnowledge = {
|
|
208
|
+
...(agentKnowledgeBase || {}),
|
|
209
|
+
...(routeKnowledgeBase || {}),
|
|
210
|
+
};
|
|
211
|
+
// Only add section if there's knowledge data
|
|
212
|
+
if (Object.keys(mergedKnowledge).length > 0) {
|
|
213
|
+
return (0, template_1.formatKnowledgeBase)(mergedKnowledge, "Knowledge Base");
|
|
214
|
+
}
|
|
215
|
+
return null;
|
|
133
216
|
};
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
217
|
+
if (this.cache) {
|
|
218
|
+
this.cache.register("knowledgeBase", "static", compute);
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
const result = compute();
|
|
222
|
+
if (result)
|
|
223
|
+
this.parts.push(result);
|
|
138
224
|
}
|
|
139
225
|
return Promise.resolve(this);
|
|
140
226
|
}
|
|
141
227
|
async addActiveRoutes(routes) {
|
|
142
228
|
if (!routes.length)
|
|
143
229
|
return this;
|
|
144
|
-
const
|
|
145
|
-
const
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
230
|
+
const compute = async () => {
|
|
231
|
+
const renderedRoutes = await Promise.all(routes.map(async (r, i) => {
|
|
232
|
+
const whenContextStrings = r.when ? (0, condition_1.extractAIContextStrings)(r.when) : [];
|
|
233
|
+
const conditions = whenContextStrings.length > 0
|
|
234
|
+
? `\n\n **Triggered when:** ${whenContextStrings.join(" OR ")}`
|
|
235
|
+
: "";
|
|
236
|
+
const desc = r.description
|
|
237
|
+
? `\n\n **Description:** ${r.description}`
|
|
238
|
+
: "";
|
|
239
|
+
const rules = await (0, template_1.renderMany)(r.getRules(), this.renderContext);
|
|
240
|
+
const prohibitions = await (0, template_1.renderMany)(r.getProhibitions(), this.renderContext);
|
|
241
|
+
const rulesInfo = rules.length > 0
|
|
242
|
+
? `\n\n **Rules:**\n ${rules.map((x) => ` - ${x}`).join("\n ")}`
|
|
243
|
+
: "";
|
|
244
|
+
const prohibitionsInfo = prohibitions.length > 0
|
|
245
|
+
? `\n\n **Prohibitions:**\n ${prohibitions
|
|
246
|
+
.map((x) => ` - ${x}`)
|
|
247
|
+
.join("\n ")}`
|
|
248
|
+
: "";
|
|
249
|
+
return `### Route ${i + 1}: ${r.title}${desc}${conditions}${rulesInfo}${prohibitionsInfo}`;
|
|
250
|
+
}));
|
|
251
|
+
return `## Available Routes\n\n${renderedRoutes.join("\n\n")}`;
|
|
252
|
+
};
|
|
253
|
+
if (this.cache) {
|
|
254
|
+
this.cache.register("activeRoutes", "static", compute);
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
const result = await compute();
|
|
258
|
+
if (result)
|
|
259
|
+
this.parts.push(result);
|
|
260
|
+
}
|
|
165
261
|
return this;
|
|
166
262
|
}
|
|
167
263
|
async addDirectives(directives) {
|
|
168
264
|
if (!directives?.length)
|
|
169
265
|
return this;
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
266
|
+
const compute = () => {
|
|
267
|
+
return `## Directives\n\nAddress concisely:\n\n${directives
|
|
268
|
+
.map((d) => `- ${d}`)
|
|
269
|
+
.join("\n")}`;
|
|
270
|
+
};
|
|
271
|
+
if (this.cache) {
|
|
272
|
+
this.cache.register("directives", "dynamic", compute);
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
this.parts.push(compute());
|
|
276
|
+
}
|
|
173
277
|
return Promise.resolve(this);
|
|
174
278
|
}
|
|
175
279
|
async addAvailableTools(tools) {
|
|
176
280
|
if (!tools?.length)
|
|
177
281
|
return this;
|
|
178
|
-
const
|
|
179
|
-
const
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
282
|
+
const compute = () => {
|
|
283
|
+
const renderedTools = tools.map((tool, i) => {
|
|
284
|
+
const toolName = tool.name || tool.id;
|
|
285
|
+
const desc = tool.description
|
|
286
|
+
? `\n Description: ${tool.description}`
|
|
287
|
+
: "";
|
|
288
|
+
return `### Tool ${i + 1}: ${toolName}${desc}`;
|
|
289
|
+
});
|
|
290
|
+
return `## Available Tools\n\n${renderedTools.join("\n\n")}`;
|
|
291
|
+
};
|
|
292
|
+
if (this.cache) {
|
|
293
|
+
this.cache.register("availableTools", "dynamic", compute);
|
|
294
|
+
}
|
|
295
|
+
else {
|
|
296
|
+
this.parts.push(compute());
|
|
297
|
+
}
|
|
186
298
|
return Promise.resolve(this);
|
|
187
299
|
}
|
|
188
300
|
async build() {
|
|
301
|
+
if (this.cache) {
|
|
302
|
+
const sections = await this.cache.resolveAll();
|
|
303
|
+
const prompt = sections
|
|
304
|
+
.filter((s) => s != null && s !== "")
|
|
305
|
+
.join("\n\n")
|
|
306
|
+
.trim();
|
|
307
|
+
return prompt;
|
|
308
|
+
}
|
|
189
309
|
const prompt = this.parts.filter(Boolean).join("\n\n").trim();
|
|
190
310
|
return Promise.resolve(prompt);
|
|
191
311
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromptComposer.js","sourceRoot":"","sources":["../../../src/core/PromptComposer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PromptComposer.js","sourceRoot":"","sources":["../../../src/core/PromptComposer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PromptSectionCache - Memoizes static prompt sections across turns,
|
|
3
|
+
* recomputing only dynamic sections per-turn.
|
|
4
|
+
*
|
|
5
|
+
* Static sections (agent identity, glossary, knowledge base, route descriptions)
|
|
6
|
+
* are cached after first computation. Dynamic sections (current step context,
|
|
7
|
+
* directives, available tools) are recomputed on every resolveAll() call.
|
|
8
|
+
*/
|
|
9
|
+
/** Section type: static sections are cached, dynamic sections recompute every turn */
|
|
10
|
+
export type PromptSectionType = "static" | "dynamic";
|
|
11
|
+
/** Configuration for prompt section caching behavior */
|
|
12
|
+
export interface PromptCacheConfig {
|
|
13
|
+
/** Whether to enable section memoization (default: true) */
|
|
14
|
+
enabled?: boolean;
|
|
15
|
+
/** Keys of sections that should always recompute every turn, even if registered as static */
|
|
16
|
+
volatileKeys?: string[];
|
|
17
|
+
}
|
|
18
|
+
/** Compute function that produces a section's content */
|
|
19
|
+
export type SectionCompute = () => string | null | Promise<string | null>;
|
|
20
|
+
export declare class PromptSectionCache {
|
|
21
|
+
private sections;
|
|
22
|
+
private insertionOrder;
|
|
23
|
+
private config;
|
|
24
|
+
constructor(config?: PromptCacheConfig);
|
|
25
|
+
/**
|
|
26
|
+
* Register a section with its compute function and type.
|
|
27
|
+
* Sections are resolved in registration order during resolveAll().
|
|
28
|
+
*/
|
|
29
|
+
register(key: string, type: PromptSectionType, compute: SectionCompute): void;
|
|
30
|
+
/**
|
|
31
|
+
* Get a section's value. Static sections return cached value if available;
|
|
32
|
+
* dynamic sections always recompute.
|
|
33
|
+
*/
|
|
34
|
+
get(key: string): Promise<string | null>;
|
|
35
|
+
/**
|
|
36
|
+
* Resolve all registered sections in registration order.
|
|
37
|
+
* Static sections use cache when available; dynamic sections always recompute.
|
|
38
|
+
*/
|
|
39
|
+
resolveAll(): Promise<(string | null)[]>;
|
|
40
|
+
/**
|
|
41
|
+
* Invalidate a specific section's cache, forcing recomputation on next resolve.
|
|
42
|
+
*/
|
|
43
|
+
invalidate(key: string): void;
|
|
44
|
+
/**
|
|
45
|
+
* Invalidate all cached sections (e.g., on session change or /clear).
|
|
46
|
+
*/
|
|
47
|
+
invalidateAll(): void;
|
|
48
|
+
/**
|
|
49
|
+
* Check whether a section has a cached value.
|
|
50
|
+
*/
|
|
51
|
+
has(key: string): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Determine if a section needs recomputation.
|
|
54
|
+
*/
|
|
55
|
+
private shouldRecompute;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=PromptSectionCache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PromptSectionCache.d.ts","sourceRoot":"","sources":["../../../src/core/PromptSectionCache.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,sFAAsF;AACtF,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,SAAS,CAAC;AAErD,wDAAwD;AACxD,MAAM,WAAW,iBAAiB;IAC9B,4DAA4D;IAC5D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6FAA6F;IAC7F,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,yDAAyD;AACzD,MAAM,MAAM,cAAc,GAAG,MAAM,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAW1E,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,QAAQ,CAA8C;IAC9D,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,MAAM,CAA8B;gBAEhC,MAAM,CAAC,EAAE,iBAAiB;IAOtC;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAQ7E;;;OAGG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAc9C;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAQ9C;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAO7B;;OAEG;IACH,aAAa,IAAI,IAAI;IAMrB;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB;;OAEG;IACH,OAAO,CAAC,eAAe;CAoB1B"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* PromptSectionCache - Memoizes static prompt sections across turns,
|
|
4
|
+
* recomputing only dynamic sections per-turn.
|
|
5
|
+
*
|
|
6
|
+
* Static sections (agent identity, glossary, knowledge base, route descriptions)
|
|
7
|
+
* are cached after first computation. Dynamic sections (current step context,
|
|
8
|
+
* directives, available tools) are recomputed on every resolveAll() call.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.PromptSectionCache = void 0;
|
|
12
|
+
class PromptSectionCache {
|
|
13
|
+
constructor(config) {
|
|
14
|
+
this.sections = new Map();
|
|
15
|
+
this.insertionOrder = [];
|
|
16
|
+
this.config = {
|
|
17
|
+
enabled: config?.enabled ?? true,
|
|
18
|
+
volatileKeys: config?.volatileKeys ?? [],
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Register a section with its compute function and type.
|
|
23
|
+
* Sections are resolved in registration order during resolveAll().
|
|
24
|
+
*/
|
|
25
|
+
register(key, type, compute) {
|
|
26
|
+
const existing = this.sections.has(key);
|
|
27
|
+
this.sections.set(key, { key, type, compute, cachedValue: undefined });
|
|
28
|
+
if (!existing) {
|
|
29
|
+
this.insertionOrder.push(key);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get a section's value. Static sections return cached value if available;
|
|
34
|
+
* dynamic sections always recompute.
|
|
35
|
+
*/
|
|
36
|
+
async get(key) {
|
|
37
|
+
const entry = this.sections.get(key);
|
|
38
|
+
if (!entry) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
if (this.shouldRecompute(entry)) {
|
|
42
|
+
const value = await entry.compute();
|
|
43
|
+
entry.cachedValue = value;
|
|
44
|
+
return value;
|
|
45
|
+
}
|
|
46
|
+
// cachedValue is defined (string or null) — return it
|
|
47
|
+
return entry.cachedValue;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Resolve all registered sections in registration order.
|
|
51
|
+
* Static sections use cache when available; dynamic sections always recompute.
|
|
52
|
+
*/
|
|
53
|
+
async resolveAll() {
|
|
54
|
+
const results = [];
|
|
55
|
+
for (const key of this.insertionOrder) {
|
|
56
|
+
results.push(await this.get(key));
|
|
57
|
+
}
|
|
58
|
+
return results;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Invalidate a specific section's cache, forcing recomputation on next resolve.
|
|
62
|
+
*/
|
|
63
|
+
invalidate(key) {
|
|
64
|
+
const entry = this.sections.get(key);
|
|
65
|
+
if (entry) {
|
|
66
|
+
entry.cachedValue = undefined;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Invalidate all cached sections (e.g., on session change or /clear).
|
|
71
|
+
*/
|
|
72
|
+
invalidateAll() {
|
|
73
|
+
for (const entry of this.sections.values()) {
|
|
74
|
+
entry.cachedValue = undefined;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Check whether a section has a cached value.
|
|
79
|
+
*/
|
|
80
|
+
has(key) {
|
|
81
|
+
return this.sections.has(key);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Determine if a section needs recomputation.
|
|
85
|
+
*/
|
|
86
|
+
shouldRecompute(entry) {
|
|
87
|
+
// Caching disabled — always recompute
|
|
88
|
+
if (!this.config.enabled) {
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
// Dynamic sections always recompute
|
|
92
|
+
if (entry.type === "dynamic") {
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
// Volatile keys always recompute
|
|
96
|
+
if (this.config.volatileKeys.includes(entry.key)) {
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
// Static section not yet computed
|
|
100
|
+
if (entry.cachedValue === undefined) {
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
// Static section with cached value — use cache
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
exports.PromptSectionCache = PromptSectionCache;
|
|
108
|
+
//# sourceMappingURL=PromptSectionCache.js.map
|