@falai/agent 1.1.3 → 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 +4 -1
- 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 -126
- 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 +75 -16
- 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 +4 -1
- 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 -126
- 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 +75 -16
- 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 +4 -1
- package/src/core/CompactionEngine.ts +318 -0
- package/src/core/PromptComposer.ts +259 -156
- package/src/core/PromptSectionCache.ts +136 -0
- package/src/core/ResponseEngine.ts +9 -6
- package/src/core/ResponseModal.ts +77 -16
- 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
|
@@ -0,0 +1,104 @@
|
|
|
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
|
+
export class PromptSectionCache {
|
|
10
|
+
constructor(config) {
|
|
11
|
+
this.sections = new Map();
|
|
12
|
+
this.insertionOrder = [];
|
|
13
|
+
this.config = {
|
|
14
|
+
enabled: config?.enabled ?? true,
|
|
15
|
+
volatileKeys: config?.volatileKeys ?? [],
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Register a section with its compute function and type.
|
|
20
|
+
* Sections are resolved in registration order during resolveAll().
|
|
21
|
+
*/
|
|
22
|
+
register(key, type, compute) {
|
|
23
|
+
const existing = this.sections.has(key);
|
|
24
|
+
this.sections.set(key, { key, type, compute, cachedValue: undefined });
|
|
25
|
+
if (!existing) {
|
|
26
|
+
this.insertionOrder.push(key);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Get a section's value. Static sections return cached value if available;
|
|
31
|
+
* dynamic sections always recompute.
|
|
32
|
+
*/
|
|
33
|
+
async get(key) {
|
|
34
|
+
const entry = this.sections.get(key);
|
|
35
|
+
if (!entry) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
if (this.shouldRecompute(entry)) {
|
|
39
|
+
const value = await entry.compute();
|
|
40
|
+
entry.cachedValue = value;
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
// cachedValue is defined (string or null) — return it
|
|
44
|
+
return entry.cachedValue;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Resolve all registered sections in registration order.
|
|
48
|
+
* Static sections use cache when available; dynamic sections always recompute.
|
|
49
|
+
*/
|
|
50
|
+
async resolveAll() {
|
|
51
|
+
const results = [];
|
|
52
|
+
for (const key of this.insertionOrder) {
|
|
53
|
+
results.push(await this.get(key));
|
|
54
|
+
}
|
|
55
|
+
return results;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Invalidate a specific section's cache, forcing recomputation on next resolve.
|
|
59
|
+
*/
|
|
60
|
+
invalidate(key) {
|
|
61
|
+
const entry = this.sections.get(key);
|
|
62
|
+
if (entry) {
|
|
63
|
+
entry.cachedValue = undefined;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Invalidate all cached sections (e.g., on session change or /clear).
|
|
68
|
+
*/
|
|
69
|
+
invalidateAll() {
|
|
70
|
+
for (const entry of this.sections.values()) {
|
|
71
|
+
entry.cachedValue = undefined;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Check whether a section has a cached value.
|
|
76
|
+
*/
|
|
77
|
+
has(key) {
|
|
78
|
+
return this.sections.has(key);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Determine if a section needs recomputation.
|
|
82
|
+
*/
|
|
83
|
+
shouldRecompute(entry) {
|
|
84
|
+
// Caching disabled — always recompute
|
|
85
|
+
if (!this.config.enabled) {
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
// Dynamic sections always recompute
|
|
89
|
+
if (entry.type === "dynamic") {
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
// Volatile keys always recompute
|
|
93
|
+
if (this.config.volatileKeys.includes(entry.key)) {
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
// Static section not yet computed
|
|
97
|
+
if (entry.cachedValue === undefined) {
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
// Static section with cached value — use cache
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=PromptSectionCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PromptSectionCache.js","sourceRoot":"","sources":["../../src/core/PromptSectionCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Event, StructuredSchema, SessionState, AgentOptions, Guideline, Term, Template } from "../types";
|
|
2
2
|
import type { Route } from "./Route";
|
|
3
3
|
import type { Step } from "./Step";
|
|
4
|
+
import { PromptSectionCache } from "./PromptSectionCache";
|
|
4
5
|
export interface BuildResponsePromptParams<TContext = unknown, TData = unknown> {
|
|
5
6
|
route: Route<TContext, TData>;
|
|
6
7
|
currentStep: Step<TContext, TData>;
|
|
@@ -25,6 +26,8 @@ export interface BuildFallbackPromptParams<TContext = unknown, TData = unknown>
|
|
|
25
26
|
session?: SessionState<TData>;
|
|
26
27
|
}
|
|
27
28
|
export declare class ResponseEngine<TContext = unknown, TData = unknown> {
|
|
29
|
+
private readonly promptSectionCache?;
|
|
30
|
+
constructor(promptSectionCache?: PromptSectionCache | undefined);
|
|
28
31
|
responseSchemaForRoute(route: Route<TContext, TData>, currentStep?: Step<TContext, TData>, agentSchema?: StructuredSchema): StructuredSchema;
|
|
29
32
|
buildResponsePrompt(params: BuildResponsePromptParams<TContext, TData>): Promise<string>;
|
|
30
33
|
buildFallbackPrompt(params: BuildFallbackPromptParams<TContext, TData>): Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResponseEngine.d.ts","sourceRoot":"","sources":["../../src/core/ResponseEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,IAAI,EACJ,QAAQ,EACT,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"ResponseEngine.d.ts","sourceRoot":"","sources":["../../src/core/ResponseEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,IAAI,EACJ,QAAQ,EACT,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,WAAW,yBAAyB,CACxC,QAAQ,GAAG,OAAO,EAClB,KAAK,GAAG,OAAO;IAEf,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9B,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACnC,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;IACnC,YAAY,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;IAC1C,UAAU,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACjC,OAAO,EAAE,KAAK,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAE7C,kBAAkB,CAAC,EAAE,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;IAClD,aAAa,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;IACxC,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,OAAO,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IAE9B,WAAW,CAAC,EAAE,gBAAgB,CAAC;CAChC;AAED,MAAM,WAAW,yBAAyB,CAAC,QAAQ,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO;IAC5E,OAAO,EAAE,KAAK,EAAE,CAAC;IACjB,YAAY,EAAE,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC5C,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;IAC/B,UAAU,EAAE,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;IACzC,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,OAAO,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;CAC/B;AAED,qBAAa,cAAc,CAAC,QAAQ,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO;IACjD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;gBAAnB,kBAAkB,CAAC,EAAE,kBAAkB,YAAA;IAEpE,sBAAsB,CACpB,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,EAC7B,WAAW,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,EACnC,WAAW,CAAC,EAAE,gBAAgB,GAC7B,gBAAgB;IAuCb,mBAAmB,CACvB,MAAM,EAAE,yBAAyB,CAAC,QAAQ,EAAE,KAAK,CAAC,GACjD,OAAO,CAAC,MAAM,CAAC;IA0MZ,mBAAmB,CACvB,MAAM,EAAE,yBAAyB,CAAC,QAAQ,EAAE,KAAK,CAAC,GACjD,OAAO,CAAC,MAAM,CAAC;CAcnB"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { PromptComposer } from "./PromptComposer";
|
|
2
2
|
import { createTemplateContext, render } from "../utils/template";
|
|
3
3
|
export class ResponseEngine {
|
|
4
|
+
constructor(promptSectionCache) {
|
|
5
|
+
this.promptSectionCache = promptSectionCache;
|
|
6
|
+
}
|
|
4
7
|
responseSchemaForRoute(route, currentStep, agentSchema) {
|
|
5
8
|
const base = {
|
|
6
9
|
type: "object",
|
|
@@ -38,9 +41,9 @@ export class ResponseEngine {
|
|
|
38
41
|
return base;
|
|
39
42
|
}
|
|
40
43
|
async buildResponsePrompt(params) {
|
|
41
|
-
const { route, currentStep, rules, prohibitions, directives, history,
|
|
44
|
+
const { route, currentStep, rules, prohibitions, directives, history, agentOptions, combinedGuidelines, combinedTerms, context, session, agentSchema, } = params;
|
|
42
45
|
const templateContext = createTemplateContext({ context, session, history });
|
|
43
|
-
const pc = new PromptComposer(templateContext);
|
|
46
|
+
const pc = new PromptComposer(templateContext, this.promptSectionCache);
|
|
44
47
|
// Create combined agent options with route overrides
|
|
45
48
|
let effectiveAgentOptions = agentOptions;
|
|
46
49
|
if (agentOptions && (route.identity || route.personality)) {
|
|
@@ -72,8 +75,8 @@ export class ResponseEngine {
|
|
|
72
75
|
if (combinedTerms && combinedTerms.length > 0) {
|
|
73
76
|
await pc.addGlossary(combinedTerms);
|
|
74
77
|
}
|
|
75
|
-
|
|
76
|
-
|
|
78
|
+
// History is now passed natively via GenerateMessageInput.history
|
|
79
|
+
// instead of being embedded in the prompt string (Requirements 17.1, 17.2)
|
|
77
80
|
// Add data collection instructions - include ALL route fields, not just current step
|
|
78
81
|
// Collect all fields from route's required and optional fields
|
|
79
82
|
const allRouteFields = new Set();
|
|
@@ -198,9 +201,10 @@ export class ResponseEngine {
|
|
|
198
201
|
async buildFallbackPrompt(params) {
|
|
199
202
|
const { history, agentOptions, terms, guidelines, context, session } = params;
|
|
200
203
|
const templateContext = createTemplateContext({ context, session, history });
|
|
201
|
-
const pc = new PromptComposer(templateContext);
|
|
204
|
+
const pc = new PromptComposer(templateContext, this.promptSectionCache);
|
|
202
205
|
await pc.addAgentMeta(agentOptions);
|
|
203
|
-
|
|
206
|
+
// History is now passed natively via GenerateMessageInput.history
|
|
207
|
+
// instead of being embedded in the prompt string (Requirements 17.1, 17.2)
|
|
204
208
|
await pc.addGlossary(terms);
|
|
205
209
|
await pc.addGuidelines(guidelines);
|
|
206
210
|
await pc.addKnowledgeBase(agentOptions.knowledgeBase);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResponseEngine.js","sourceRoot":"","sources":["../../src/core/ResponseEngine.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"ResponseEngine.js","sourceRoot":"","sources":["../../src/core/ResponseEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResponseModal.d.ts","sourceRoot":"","sources":["../../src/core/ResponseModal.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACR,aAAa,EACb,wBAAwB,EACxB,OAAO,EACP,YAAY,EACZ,OAAO,
|
|
1
|
+
{"version":3,"file":"ResponseModal.d.ts","sourceRoot":"","sources":["../../src/core/ResponseModal.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,14 +47,14 @@ export class ResponseModal {
|
|
|
47
47
|
this.agent = agent;
|
|
48
48
|
this.options = options;
|
|
49
49
|
// Initialize response engine
|
|
50
|
-
this.responseEngine = new ResponseEngine();
|
|
50
|
+
this.responseEngine = new ResponseEngine(this.agent.promptSectionCache);
|
|
51
51
|
// Initialize response pipeline with agent dependencies
|
|
52
52
|
this.responsePipeline = new ResponsePipeline(this.agent.getAgentOptions(), () => this.agent.getRoutes(), // Pass a function to get routes dynamically
|
|
53
53
|
this.agent.getTools(), this.agent.getRoutingEngine(), this.agent.updateContext.bind(this.agent), this.agent.getUpdateDataMethod(), this.agent.updateCollectedData.bind(this.agent), this.getToolManager());
|
|
54
54
|
// Initialize batch executor for multi-step execution
|
|
55
55
|
this.batchExecutor = new BatchExecutor();
|
|
56
56
|
// Initialize batch prompt builder for combined prompts
|
|
57
|
-
this.batchPromptBuilder = new BatchPromptBuilder();
|
|
57
|
+
this.batchPromptBuilder = new BatchPromptBuilder(this.agent.promptSectionCache);
|
|
58
58
|
}
|
|
59
59
|
/**
|
|
60
60
|
* Generate a non-streaming response using unified logic
|
|
@@ -1206,20 +1206,79 @@ export class ResponseModal {
|
|
|
1206
1206
|
// Extract tool calls from AI response on final chunk
|
|
1207
1207
|
if (chunk.done && chunk.structured?.toolCalls) {
|
|
1208
1208
|
toolCalls = chunk.structured.toolCalls;
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1209
|
+
const toolManager = this.getToolManager();
|
|
1210
|
+
// Use concurrent execution for the initial batch of tool calls
|
|
1211
|
+
if (toolManager && typeof toolManager.executeWithConcurrency === 'function') {
|
|
1212
|
+
const toolCallRequests = toolCalls.map((tc, i) => ({
|
|
1213
|
+
id: `${tc.toolName}-${i}-${Date.now()}`,
|
|
1214
|
+
toolName: tc.toolName,
|
|
1215
|
+
arguments: tc.arguments,
|
|
1216
|
+
}));
|
|
1217
|
+
const historyEvents = historyToEvents(history);
|
|
1218
|
+
try {
|
|
1219
|
+
for await (const update of toolManager.executeWithConcurrency({
|
|
1220
|
+
toolCalls: toolCallRequests,
|
|
1221
|
+
context,
|
|
1222
|
+
data: session.data,
|
|
1223
|
+
history: historyEvents,
|
|
1224
|
+
signal,
|
|
1225
|
+
route: selectedRoute,
|
|
1226
|
+
step: nextStep,
|
|
1227
|
+
})) {
|
|
1228
|
+
// Apply context updates
|
|
1229
|
+
if (update.contextUpdate) {
|
|
1230
|
+
try {
|
|
1231
|
+
await this.agent.updateContext(update.contextUpdate);
|
|
1232
|
+
}
|
|
1233
|
+
catch (error) {
|
|
1234
|
+
logger.error(`[ResponseModal] Failed to update context from concurrent tool:`, error);
|
|
1235
|
+
}
|
|
1236
|
+
}
|
|
1237
|
+
// Apply data updates
|
|
1238
|
+
if (update.dataUpdate) {
|
|
1239
|
+
try {
|
|
1240
|
+
const updateDataMethod = this.agent.getUpdateDataMethod();
|
|
1241
|
+
session = await updateDataMethod(session, update.dataUpdate);
|
|
1242
|
+
}
|
|
1243
|
+
catch (error) {
|
|
1244
|
+
logger.error(`[ResponseModal] Failed to update data from concurrent tool:`, error);
|
|
1245
|
+
}
|
|
1246
|
+
}
|
|
1247
|
+
// Yield progress updates immediately
|
|
1248
|
+
if (update.progress) {
|
|
1249
|
+
yield {
|
|
1250
|
+
delta: '',
|
|
1251
|
+
accumulated: chunk.accumulated,
|
|
1252
|
+
done: false,
|
|
1253
|
+
session,
|
|
1254
|
+
toolCalls: undefined,
|
|
1255
|
+
isRouteComplete: false,
|
|
1256
|
+
metadata: { toolProgress: update.progress, toolCallId: update.toolCallId },
|
|
1257
|
+
};
|
|
1258
|
+
}
|
|
1259
|
+
}
|
|
1260
|
+
logger.debug(`[ResponseModal] Concurrent tool execution completed for ${toolCallRequests.length} tools`);
|
|
1261
|
+
}
|
|
1262
|
+
catch (error) {
|
|
1263
|
+
logger.error(`[ResponseModal] Concurrent tool execution failed, falling back to sequential:`, error);
|
|
1264
|
+
// Fall back to the unified tool loop on failure
|
|
1265
|
+
const toolResult = await this.executeUnifiedToolLoop({
|
|
1266
|
+
toolCalls, context, session, history, selectedRoute,
|
|
1267
|
+
responsePrompt, availableTools, responseSchema, signal,
|
|
1268
|
+
});
|
|
1269
|
+
session = toolResult.session;
|
|
1270
|
+
toolCalls = toolResult.finalToolCalls;
|
|
1271
|
+
}
|
|
1272
|
+
}
|
|
1273
|
+
else {
|
|
1274
|
+
// Fallback: no ToolManager or no executeWithConcurrency, use unified tool loop
|
|
1275
|
+
const toolResult = await this.executeUnifiedToolLoop({
|
|
1276
|
+
toolCalls, context, session, history, selectedRoute,
|
|
1277
|
+
responsePrompt, availableTools, responseSchema, signal,
|
|
1278
|
+
});
|
|
1279
|
+
session = toolResult.session;
|
|
1280
|
+
toolCalls = toolResult.finalToolCalls;
|
|
1281
|
+
}
|
|
1223
1282
|
}
|
|
1224
1283
|
// Extract collected data on final chunk
|
|
1225
1284
|
if (chunk.done && chunk.structured && nextStep.collect) {
|