@falai/agent 1.1.3 → 1.2.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.
Files changed (193) hide show
  1. package/README.md +9 -0
  2. package/dist/cjs/core/Agent.d.ts +17 -1
  3. package/dist/cjs/core/Agent.d.ts.map +1 -1
  4. package/dist/cjs/core/Agent.js +47 -0
  5. package/dist/cjs/core/Agent.js.map +1 -1
  6. package/dist/cjs/core/BatchPromptBuilder.d.ts +3 -0
  7. package/dist/cjs/core/BatchPromptBuilder.d.ts.map +1 -1
  8. package/dist/cjs/core/BatchPromptBuilder.js +4 -1
  9. package/dist/cjs/core/BatchPromptBuilder.js.map +1 -1
  10. package/dist/cjs/core/CompactionEngine.d.ts +65 -0
  11. package/dist/cjs/core/CompactionEngine.d.ts.map +1 -0
  12. package/dist/cjs/core/CompactionEngine.js +251 -0
  13. package/dist/cjs/core/CompactionEngine.js.map +1 -0
  14. package/dist/cjs/core/PromptComposer.d.ts +8 -1
  15. package/dist/cjs/core/PromptComposer.d.ts.map +1 -1
  16. package/dist/cjs/core/PromptComposer.js +238 -126
  17. package/dist/cjs/core/PromptComposer.js.map +1 -1
  18. package/dist/cjs/core/PromptSectionCache.d.ts +57 -0
  19. package/dist/cjs/core/PromptSectionCache.d.ts.map +1 -0
  20. package/dist/cjs/core/PromptSectionCache.js +108 -0
  21. package/dist/cjs/core/PromptSectionCache.js.map +1 -0
  22. package/dist/cjs/core/ResponseEngine.d.ts +3 -2
  23. package/dist/cjs/core/ResponseEngine.d.ts.map +1 -1
  24. package/dist/cjs/core/ResponseEngine.js +8 -8
  25. package/dist/cjs/core/ResponseEngine.js.map +1 -1
  26. package/dist/cjs/core/ResponseModal.d.ts.map +1 -1
  27. package/dist/cjs/core/ResponseModal.js +120 -70
  28. package/dist/cjs/core/ResponseModal.js.map +1 -1
  29. package/dist/cjs/core/ResponsePipeline.d.ts +2 -1
  30. package/dist/cjs/core/ResponsePipeline.d.ts.map +1 -1
  31. package/dist/cjs/core/ResponsePipeline.js +17 -19
  32. package/dist/cjs/core/ResponsePipeline.js.map +1 -1
  33. package/dist/cjs/core/RoutingEngine.d.ts +10 -0
  34. package/dist/cjs/core/RoutingEngine.d.ts.map +1 -1
  35. package/dist/cjs/core/RoutingEngine.js +5 -4
  36. package/dist/cjs/core/RoutingEngine.js.map +1 -1
  37. package/dist/cjs/core/SessionManager.d.ts.map +1 -1
  38. package/dist/cjs/core/SessionManager.js +20 -0
  39. package/dist/cjs/core/SessionManager.js.map +1 -1
  40. package/dist/cjs/core/StreamingToolExecutor.d.ts +142 -0
  41. package/dist/cjs/core/StreamingToolExecutor.d.ts.map +1 -0
  42. package/dist/cjs/core/StreamingToolExecutor.js +455 -0
  43. package/dist/cjs/core/StreamingToolExecutor.js.map +1 -0
  44. package/dist/cjs/core/ToolManager.d.ts +18 -1
  45. package/dist/cjs/core/ToolManager.d.ts.map +1 -1
  46. package/dist/cjs/core/ToolManager.js +91 -0
  47. package/dist/cjs/core/ToolManager.js.map +1 -1
  48. package/dist/cjs/index.d.ts +5 -1
  49. package/dist/cjs/index.d.ts.map +1 -1
  50. package/dist/cjs/index.js +8 -2
  51. package/dist/cjs/index.js.map +1 -1
  52. package/dist/cjs/providers/AnthropicProvider.d.ts +7 -0
  53. package/dist/cjs/providers/AnthropicProvider.d.ts.map +1 -1
  54. package/dist/cjs/providers/AnthropicProvider.js +109 -19
  55. package/dist/cjs/providers/AnthropicProvider.js.map +1 -1
  56. package/dist/cjs/providers/GeminiProvider.d.ts +32 -0
  57. package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
  58. package/dist/cjs/providers/GeminiProvider.js +160 -53
  59. package/dist/cjs/providers/GeminiProvider.js.map +1 -1
  60. package/dist/cjs/providers/OpenAIProvider.d.ts +5 -0
  61. package/dist/cjs/providers/OpenAIProvider.d.ts.map +1 -1
  62. package/dist/cjs/providers/OpenAIProvider.js +65 -18
  63. package/dist/cjs/providers/OpenAIProvider.js.map +1 -1
  64. package/dist/cjs/providers/OpenRouterProvider.d.ts +5 -0
  65. package/dist/cjs/providers/OpenRouterProvider.d.ts.map +1 -1
  66. package/dist/cjs/providers/OpenRouterProvider.js +57 -18
  67. package/dist/cjs/providers/OpenRouterProvider.js.map +1 -1
  68. package/dist/cjs/types/agent.d.ts +44 -0
  69. package/dist/cjs/types/agent.d.ts.map +1 -1
  70. package/dist/cjs/types/agent.js.map +1 -1
  71. package/dist/cjs/types/ai.d.ts +2 -2
  72. package/dist/cjs/types/ai.d.ts.map +1 -1
  73. package/dist/cjs/types/compaction.d.ts +50 -0
  74. package/dist/cjs/types/compaction.d.ts.map +1 -0
  75. package/dist/cjs/types/compaction.js +6 -0
  76. package/dist/cjs/types/compaction.js.map +1 -0
  77. package/dist/cjs/types/index.d.ts +4 -2
  78. package/dist/cjs/types/index.d.ts.map +1 -1
  79. package/dist/cjs/types/index.js.map +1 -1
  80. package/dist/cjs/types/tool.d.ts +84 -0
  81. package/dist/cjs/types/tool.d.ts.map +1 -1
  82. package/dist/core/Agent.d.ts +17 -1
  83. package/dist/core/Agent.d.ts.map +1 -1
  84. package/dist/core/Agent.js +47 -0
  85. package/dist/core/Agent.js.map +1 -1
  86. package/dist/core/BatchPromptBuilder.d.ts +3 -0
  87. package/dist/core/BatchPromptBuilder.d.ts.map +1 -1
  88. package/dist/core/BatchPromptBuilder.js +4 -1
  89. package/dist/core/BatchPromptBuilder.js.map +1 -1
  90. package/dist/core/CompactionEngine.d.ts +65 -0
  91. package/dist/core/CompactionEngine.d.ts.map +1 -0
  92. package/dist/core/CompactionEngine.js +244 -0
  93. package/dist/core/CompactionEngine.js.map +1 -0
  94. package/dist/core/PromptComposer.d.ts +8 -1
  95. package/dist/core/PromptComposer.d.ts.map +1 -1
  96. package/dist/core/PromptComposer.js +238 -126
  97. package/dist/core/PromptComposer.js.map +1 -1
  98. package/dist/core/PromptSectionCache.d.ts +57 -0
  99. package/dist/core/PromptSectionCache.d.ts.map +1 -0
  100. package/dist/core/PromptSectionCache.js +104 -0
  101. package/dist/core/PromptSectionCache.js.map +1 -0
  102. package/dist/core/ResponseEngine.d.ts +3 -2
  103. package/dist/core/ResponseEngine.d.ts.map +1 -1
  104. package/dist/core/ResponseEngine.js +8 -8
  105. package/dist/core/ResponseEngine.js.map +1 -1
  106. package/dist/core/ResponseModal.d.ts.map +1 -1
  107. package/dist/core/ResponseModal.js +121 -71
  108. package/dist/core/ResponseModal.js.map +1 -1
  109. package/dist/core/ResponsePipeline.d.ts +2 -1
  110. package/dist/core/ResponsePipeline.d.ts.map +1 -1
  111. package/dist/core/ResponsePipeline.js +18 -20
  112. package/dist/core/ResponsePipeline.js.map +1 -1
  113. package/dist/core/RoutingEngine.d.ts +10 -0
  114. package/dist/core/RoutingEngine.d.ts.map +1 -1
  115. package/dist/core/RoutingEngine.js +6 -5
  116. package/dist/core/RoutingEngine.js.map +1 -1
  117. package/dist/core/SessionManager.d.ts.map +1 -1
  118. package/dist/core/SessionManager.js +17 -0
  119. package/dist/core/SessionManager.js.map +1 -1
  120. package/dist/core/StreamingToolExecutor.d.ts +142 -0
  121. package/dist/core/StreamingToolExecutor.d.ts.map +1 -0
  122. package/dist/core/StreamingToolExecutor.js +448 -0
  123. package/dist/core/StreamingToolExecutor.js.map +1 -0
  124. package/dist/core/ToolManager.d.ts +18 -1
  125. package/dist/core/ToolManager.d.ts.map +1 -1
  126. package/dist/core/ToolManager.js +91 -0
  127. package/dist/core/ToolManager.js.map +1 -1
  128. package/dist/index.d.ts +5 -1
  129. package/dist/index.d.ts.map +1 -1
  130. package/dist/index.js +3 -0
  131. package/dist/index.js.map +1 -1
  132. package/dist/providers/AnthropicProvider.d.ts +7 -0
  133. package/dist/providers/AnthropicProvider.d.ts.map +1 -1
  134. package/dist/providers/AnthropicProvider.js +109 -19
  135. package/dist/providers/AnthropicProvider.js.map +1 -1
  136. package/dist/providers/GeminiProvider.d.ts +32 -0
  137. package/dist/providers/GeminiProvider.d.ts.map +1 -1
  138. package/dist/providers/GeminiProvider.js +160 -53
  139. package/dist/providers/GeminiProvider.js.map +1 -1
  140. package/dist/providers/OpenAIProvider.d.ts +5 -0
  141. package/dist/providers/OpenAIProvider.d.ts.map +1 -1
  142. package/dist/providers/OpenAIProvider.js +65 -18
  143. package/dist/providers/OpenAIProvider.js.map +1 -1
  144. package/dist/providers/OpenRouterProvider.d.ts +5 -0
  145. package/dist/providers/OpenRouterProvider.d.ts.map +1 -1
  146. package/dist/providers/OpenRouterProvider.js +57 -18
  147. package/dist/providers/OpenRouterProvider.js.map +1 -1
  148. package/dist/types/agent.d.ts +44 -0
  149. package/dist/types/agent.d.ts.map +1 -1
  150. package/dist/types/agent.js.map +1 -1
  151. package/dist/types/ai.d.ts +2 -2
  152. package/dist/types/ai.d.ts.map +1 -1
  153. package/dist/types/compaction.d.ts +50 -0
  154. package/dist/types/compaction.d.ts.map +1 -0
  155. package/dist/types/compaction.js +5 -0
  156. package/dist/types/compaction.js.map +1 -0
  157. package/dist/types/index.d.ts +4 -2
  158. package/dist/types/index.d.ts.map +1 -1
  159. package/dist/types/index.js.map +1 -1
  160. package/dist/types/tool.d.ts +84 -0
  161. package/dist/types/tool.d.ts.map +1 -1
  162. package/docs/api/overview.md +140 -0
  163. package/docs/core/tools/enhanced-tool.md +186 -0
  164. package/docs/core/tools/streaming-execution.md +161 -0
  165. package/docs/guides/context-compaction.md +96 -0
  166. package/docs/guides/prompt-optimization.md +164 -0
  167. package/examples/advanced-patterns/context-compaction.ts +223 -0
  168. package/examples/advanced-patterns/streaming-responses.ts +85 -7
  169. package/examples/tools/enhanced-tool-metadata.ts +268 -0
  170. package/examples/tools/streaming-tool-execution.ts +283 -0
  171. package/package.json +1 -1
  172. package/src/core/Agent.ts +58 -2
  173. package/src/core/BatchPromptBuilder.ts +4 -1
  174. package/src/core/CompactionEngine.ts +318 -0
  175. package/src/core/PromptComposer.ts +259 -156
  176. package/src/core/PromptSectionCache.ts +136 -0
  177. package/src/core/ResponseEngine.ts +7 -11
  178. package/src/core/ResponseModal.ts +133 -83
  179. package/src/core/ResponsePipeline.ts +22 -22
  180. package/src/core/RoutingEngine.ts +16 -5
  181. package/src/core/SessionManager.ts +19 -0
  182. package/src/core/StreamingToolExecutor.ts +572 -0
  183. package/src/core/ToolManager.ts +151 -41
  184. package/src/index.ts +14 -0
  185. package/src/providers/AnthropicProvider.ts +121 -24
  186. package/src/providers/GeminiProvider.ts +174 -54
  187. package/src/providers/OpenAIProvider.ts +77 -25
  188. package/src/providers/OpenRouterProvider.ts +68 -25
  189. package/src/types/agent.ts +45 -0
  190. package/src/types/ai.ts +2 -2
  191. package/src/types/compaction.ts +52 -0
  192. package/src/types/index.ts +35 -14
  193. package/src/types/tool.ts +108 -0
@@ -1,14 +1,21 @@
1
1
  import type { Event, Term, Guideline, AgentOptions } from "../types";
2
2
  import type { Route } from "./Route";
3
3
  import { TemplateContext } from "../types/template";
4
+ import { PromptSectionCache } from "./PromptSectionCache";
4
5
  export declare class PromptComposer<TContext = unknown, TData = unknown> {
5
6
  private parts;
6
7
  private renderContext;
7
- constructor(context?: TemplateContext<TContext, TData>);
8
+ private cache;
9
+ private instructionCounter;
10
+ constructor(context?: TemplateContext<TContext, TData>, cache?: PromptSectionCache);
8
11
  addAgentMeta(agent: AgentOptions<TContext, TData>): Promise<this>;
9
12
  addRoutingOverview(routes: Route<TContext, TData>[]): Promise<this>;
10
13
  addScoringRules(): Promise<this>;
11
14
  addInstruction(text: string): Promise<this>;
15
+ /**
16
+ * @deprecated History should flow through `GenerateMessageInput.history` natively.
17
+ * This method is kept for backward compatibility but will be removed in a future version.
18
+ */
12
19
  addInteractionHistory(history: Event[], note?: string): Promise<this>;
13
20
  addLastMessage(message: string): Promise<this>;
14
21
  addGlossary(terms: Term<TContext>[]): Promise<this>;
@@ -1 +1 @@
1
- {"version":3,"file":"PromptComposer.d.ts","sourceRoot":"","sources":["../../src/core/PromptComposer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,qBAAa,cAAc,CAAC,QAAQ,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO;IAC7D,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,aAAa,CAAmC;gBAE5C,OAAO,GAAE,eAAe,CAAC,QAAQ,EAAE,KAAK,CAA6B;IAM3E,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA4CjE,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAInE,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAchC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C,qBAAqB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYrE,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9C,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBnD,aAAa,CAAC,UAAU,EAAE,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAyDtE,gBAAgB,CACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5C,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3C,OAAO,CAAC,IAAI,CAAC;IAgBV,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqChE,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnD,iBAAiB,CACrB,KAAK,CAAC,EAAE,KAAK,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC,GACD,OAAO,CAAC,IAAI,CAAC;IAeV,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;CAI/B"}
1
+ {"version":3,"file":"PromptComposer.d.ts","sourceRoot":"","sources":["../../src/core/PromptComposer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,qBAAa,cAAc,CAAC,QAAQ,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO;IAC7D,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,kBAAkB,CAAK;gBAG7B,OAAO,GAAE,eAAe,CAAC,QAAQ,EAAE,KAAK,CAA6B,EACrE,KAAK,CAAC,EAAE,kBAAkB;IAQtB,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAqDjE,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAInE,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBhC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcjD;;;OAGG;IACG,qBAAqB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBrE,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa9C,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BnD,aAAa,CAAC,UAAU,EAAE,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiEtE,gBAAgB,CACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5C,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3C,OAAO,CAAC,IAAI,CAAC;IAwBV,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA6ChE,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBnD,iBAAiB,CACrB,KAAK,CAAC,EAAE,KAAK,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC,GACD,OAAO,CAAC,IAAI,CAAC;IAsBV,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;CAY/B"}
@@ -1,196 +1,308 @@
1
1
  import { render, renderMany, formatKnowledgeBase, createTemplateContext } from "../utils/template";
2
2
  import { extractAIContextStrings, ConditionEvaluator } from "../utils/condition";
3
3
  export class PromptComposer {
4
- constructor(context = createTemplateContext({})) {
4
+ constructor(context = createTemplateContext({}), cache) {
5
5
  this.parts = [];
6
+ this.instructionCounter = 0;
6
7
  this.renderContext = context;
8
+ this.cache = cache ?? null;
7
9
  }
8
10
  // Specific, typed sections tailored to the framework
9
11
  async addAgentMeta(agent) {
10
- const lines = [];
11
- lines.push("## Agent Identity");
12
- lines.push(`You are "${agent.name}". Always refer to yourself by this name.`);
13
- if (agent.identity) {
14
- lines.push(await render(agent.identity, this.renderContext));
15
- }
16
- if (agent.personality) {
17
- lines.push(`Communicate in the following style: ${await render(agent.personality, this.renderContext)}`);
18
- }
19
- if (agent.goal) {
20
- lines.push(`Your primary goal: ${agent.goal}`);
21
- }
22
- if (agent.description) {
23
- lines.push(`About you: ${agent.description}`);
24
- }
25
- if (agent.rules?.length) {
26
- const renderedRules = await renderMany(agent.rules, this.renderContext);
27
- lines.push(`You MUST always follow these rules:\n- ${renderedRules.join("\n- ")}`);
12
+ const compute = async () => {
13
+ const lines = [];
14
+ lines.push("## Agent Identity");
15
+ lines.push(`You are "${agent.name}". Always refer to yourself by this name.`);
16
+ if (agent.identity) {
17
+ lines.push(await render(agent.identity, this.renderContext));
18
+ }
19
+ if (agent.personality) {
20
+ lines.push(`Communicate in the following style: ${await render(agent.personality, this.renderContext)}`);
21
+ }
22
+ if (agent.goal) {
23
+ lines.push(`Your primary goal: ${agent.goal}`);
24
+ }
25
+ if (agent.description) {
26
+ lines.push(`About you: ${agent.description}`);
27
+ }
28
+ if (agent.rules?.length) {
29
+ const renderedRules = await renderMany(agent.rules, this.renderContext);
30
+ lines.push(`You MUST always follow these rules:\n- ${renderedRules.join("\n- ")}`);
31
+ }
32
+ if (agent.prohibitions?.length) {
33
+ const renderedProhibitions = await renderMany(agent.prohibitions, this.renderContext);
34
+ lines.push(`You MUST NEVER do the following:\n- ${renderedProhibitions.join("\n- ")}`);
35
+ }
36
+ return lines.join("\n");
37
+ };
38
+ if (this.cache) {
39
+ this.cache.register("agentMeta", "static", compute);
28
40
  }
29
- if (agent.prohibitions?.length) {
30
- const renderedProhibitions = await renderMany(agent.prohibitions, this.renderContext);
31
- lines.push(`You MUST NEVER do the following:\n- ${renderedProhibitions.join("\n- ")}`);
41
+ else {
42
+ const result = await compute();
43
+ if (result)
44
+ this.parts.push(result);
32
45
  }
33
- this.parts.push(lines.join("\n"));
34
46
  return this;
35
47
  }
36
48
  async addRoutingOverview(routes) {
37
49
  return this.addActiveRoutes(routes);
38
50
  }
39
51
  async addScoringRules() {
40
- this.parts.push(`## Scoring Rules\n\n${[
41
- "- 90-100: explicit keywords + clear intent",
42
- "- 70-89: strong contextual evidence + relevant keywords",
43
- "- 50-69: moderate relevance",
44
- "- 30-49: weak connection or ambiguous",
45
- "- 0-29: minimal/none",
46
- "Return ONLY JSON matching the provided schema. Include scores for ALL routes.",
47
- ].join("\n")}`);
52
+ const compute = () => {
53
+ return `## Scoring Rules\n\n${[
54
+ "- 90-100: explicit keywords + clear intent",
55
+ "- 70-89: strong contextual evidence + relevant keywords",
56
+ "- 50-69: moderate relevance",
57
+ "- 30-49: weak connection or ambiguous",
58
+ "- 0-29: minimal/none",
59
+ "Return ONLY JSON matching the provided schema. Include scores for ALL routes.",
60
+ ].join("\n")}`;
61
+ };
62
+ if (this.cache) {
63
+ this.cache.register("scoringRules", "static", compute);
64
+ }
65
+ else {
66
+ this.parts.push(compute());
67
+ }
48
68
  return Promise.resolve(this);
49
69
  }
50
70
  async addInstruction(text) {
51
- if (text)
52
- this.parts.push(`## Instruction\n\n${text}`);
71
+ if (!text)
72
+ return Promise.resolve(this);
73
+ const content = `## Instruction\n\n${text}`;
74
+ if (this.cache) {
75
+ const key = `instruction-${this.instructionCounter++}`;
76
+ this.cache.register(key, "dynamic", () => content);
77
+ }
78
+ else {
79
+ this.parts.push(content);
80
+ }
53
81
  return Promise.resolve(this);
54
82
  }
83
+ /**
84
+ * @deprecated History should flow through `GenerateMessageInput.history` natively.
85
+ * This method is kept for backward compatibility but will be removed in a future version.
86
+ */
55
87
  async addInteractionHistory(history, note) {
56
- const recent = history
57
- .slice(-10)
58
- .map((e) => `- ${JSON.stringify(e)}`)
59
- .join("\n");
60
- const header = note ? `${note}\n\n` : "";
61
- this.parts.push(`## Interaction History\n\n${header}Recent conversation events:\n\n${recent}`);
88
+ const compute = () => {
89
+ const recent = history
90
+ .slice(-10)
91
+ .map((e) => `- ${JSON.stringify(e)}`)
92
+ .join("\n");
93
+ const header = note ? `${note}\n\n` : "";
94
+ return `## Interaction History\n\n${header}Recent conversation events:\n\n${recent}`;
95
+ };
96
+ if (this.cache) {
97
+ this.cache.register("interactionHistory", "dynamic", compute);
98
+ }
99
+ else {
100
+ this.parts.push(compute());
101
+ }
62
102
  return Promise.resolve(this);
63
103
  }
64
104
  async addLastMessage(message) {
65
- this.parts.push(`## Last Message\n\n${message}`);
105
+ const compute = () => {
106
+ return `## Last Message\n\n${message}`;
107
+ };
108
+ if (this.cache) {
109
+ this.cache.register("lastMessage", "dynamic", compute);
110
+ }
111
+ else {
112
+ this.parts.push(compute());
113
+ }
66
114
  return Promise.resolve(this);
67
115
  }
68
116
  async addGlossary(terms) {
69
117
  if (!terms.length)
70
118
  return this;
71
- const renderedTerms = await Promise.all(terms.map(async (t) => {
72
- const name = await render(t.name, this.renderContext);
73
- const description = await render(t.description, this.renderContext);
74
- const synonyms = t.synonyms
75
- ? await renderMany(t.synonyms, this.renderContext)
76
- : [];
77
- const synonymText = synonyms.length > 0 ? ` (synonyms: ${synonyms.join(", ")})` : "";
78
- return `- **${name}**${synonymText}: ${description}`;
79
- }));
80
- this.parts.push(`## Glossary\n\n${renderedTerms.join("\n")}`);
119
+ const compute = async () => {
120
+ const renderedTerms = await Promise.all(terms.map(async (t) => {
121
+ const name = await render(t.name, this.renderContext);
122
+ const description = await render(t.description, this.renderContext);
123
+ const synonyms = t.synonyms
124
+ ? await renderMany(t.synonyms, this.renderContext)
125
+ : [];
126
+ const synonymText = synonyms.length > 0 ? ` (synonyms: ${synonyms.join(", ")})` : "";
127
+ return `- **${name}**${synonymText}: ${description}`;
128
+ }));
129
+ return `## Glossary\n\n${renderedTerms.join("\n")}`;
130
+ };
131
+ if (this.cache) {
132
+ this.cache.register("glossary", "static", compute);
133
+ }
134
+ else {
135
+ const result = await compute();
136
+ if (result)
137
+ this.parts.push(result);
138
+ }
81
139
  return this;
82
140
  }
83
141
  async addGuidelines(guidelines) {
84
142
  const enabled = guidelines.filter((g) => g.enabled !== false);
85
143
  if (!enabled.length)
86
144
  return this;
87
- const evaluator = new ConditionEvaluator(this.renderContext);
88
- const activeGuidelines = [];
89
- const allAIContextStrings = [];
90
- // Evaluate guideline conditions to determine which are active
91
- for (const guideline of enabled) {
92
- if (guideline.condition) {
93
- const evaluation = await evaluator.evaluateCondition(guideline.condition, 'AND');
94
- // Collect AI context strings for prompt
95
- allAIContextStrings.push(...evaluation.aiContextStrings);
96
- // Include guideline if:
97
- // 1. No programmatic conditions (only strings) - always active
98
- // 2. Programmatic conditions evaluate to true
99
- if (!evaluation.hasProgrammaticConditions || evaluation.programmaticResult) {
145
+ const compute = async () => {
146
+ const evaluator = new ConditionEvaluator(this.renderContext);
147
+ const activeGuidelines = [];
148
+ const allAIContextStrings = [];
149
+ // Evaluate guideline conditions to determine which are active
150
+ for (const guideline of enabled) {
151
+ if (guideline.condition) {
152
+ const evaluation = await evaluator.evaluateCondition(guideline.condition, 'AND');
153
+ // Collect AI context strings for prompt
154
+ allAIContextStrings.push(...evaluation.aiContextStrings);
155
+ // Include guideline if:
156
+ // 1. No programmatic conditions (only strings) - always active
157
+ // 2. Programmatic conditions evaluate to true
158
+ if (!evaluation.hasProgrammaticConditions || evaluation.programmaticResult) {
159
+ activeGuidelines.push(guideline);
160
+ }
161
+ }
162
+ else {
163
+ // No condition means always active
100
164
  activeGuidelines.push(guideline);
101
165
  }
102
166
  }
103
- else {
104
- // No condition means always active
105
- activeGuidelines.push(guideline);
106
- }
107
- }
108
- if (!activeGuidelines.length && !allAIContextStrings.length)
109
- return this;
110
- const renderedGuidelines = await Promise.all(activeGuidelines.map(async (g, i) => {
111
- const action = await render(g.action, this.renderContext);
112
- if (g.condition) {
113
- // Use AI context strings if available, otherwise render the condition
114
- const conditionStrings = extractAIContextStrings(g.condition);
115
- if (conditionStrings.length > 0) {
116
- const conditionText = conditionStrings.join(" AND ");
117
- return `- Guideline #${i + 1}: When ${conditionText}, then ${action}`;
167
+ if (!activeGuidelines.length && !allAIContextStrings.length)
168
+ return null;
169
+ const renderedGuidelines = await Promise.all(activeGuidelines.map(async (g, i) => {
170
+ const action = await render(g.action, this.renderContext);
171
+ if (g.condition) {
172
+ // Use AI context strings if available, otherwise render the condition
173
+ const conditionStrings = extractAIContextStrings(g.condition);
174
+ if (conditionStrings.length > 0) {
175
+ const conditionText = conditionStrings.join(" AND ");
176
+ return `- Guideline #${i + 1}: When ${conditionText}, then ${action}`;
177
+ }
118
178
  }
179
+ return `- Guideline #${i + 1}: ${action}`;
180
+ }));
181
+ // Add any additional AI context from inactive guidelines
182
+ if (allAIContextStrings.length > 0) {
183
+ const uniqueContextStrings = Array.from(new Set(allAIContextStrings));
184
+ const contextSection = `\n\n**Additional Context:** ${uniqueContextStrings.join(", ")}`;
185
+ return `## Guidelines\n\n${renderedGuidelines.join("\n")}${contextSection}`;
186
+ }
187
+ else {
188
+ return `## Guidelines\n\n${renderedGuidelines.join("\n")}`;
119
189
  }
120
- return `- Guideline #${i + 1}: ${action}`;
121
- }));
122
- // Add any additional AI context from inactive guidelines
123
- if (allAIContextStrings.length > 0) {
124
- const uniqueContextStrings = Array.from(new Set(allAIContextStrings));
125
- const contextSection = `\n\n**Additional Context:** ${uniqueContextStrings.join(", ")}`;
126
- this.parts.push(`## Guidelines\n\n${renderedGuidelines.join("\n")}${contextSection}`);
190
+ };
191
+ if (this.cache) {
192
+ this.cache.register("guidelines", "dynamic", compute);
127
193
  }
128
194
  else {
129
- this.parts.push(`## Guidelines\n\n${renderedGuidelines.join("\n")}`);
195
+ const result = await compute();
196
+ if (result)
197
+ this.parts.push(result);
130
198
  }
131
199
  return this;
132
200
  }
133
201
  async addKnowledgeBase(agentKnowledgeBase, routeKnowledgeBase) {
134
- // Merge agent and route knowledge bases (route takes precedence for conflicts)
135
- const mergedKnowledge = {
136
- ...(agentKnowledgeBase || {}),
137
- ...(routeKnowledgeBase || {}),
202
+ const compute = () => {
203
+ // Merge agent and route knowledge bases (route takes precedence for conflicts)
204
+ const mergedKnowledge = {
205
+ ...(agentKnowledgeBase || {}),
206
+ ...(routeKnowledgeBase || {}),
207
+ };
208
+ // Only add section if there's knowledge data
209
+ if (Object.keys(mergedKnowledge).length > 0) {
210
+ return formatKnowledgeBase(mergedKnowledge, "Knowledge Base");
211
+ }
212
+ return null;
138
213
  };
139
- // Only add section if there's knowledge data
140
- if (Object.keys(mergedKnowledge).length > 0) {
141
- const formatted = formatKnowledgeBase(mergedKnowledge, "Knowledge Base");
142
- this.parts.push(formatted);
214
+ if (this.cache) {
215
+ this.cache.register("knowledgeBase", "static", compute);
216
+ }
217
+ else {
218
+ const result = compute();
219
+ if (result)
220
+ this.parts.push(result);
143
221
  }
144
222
  return Promise.resolve(this);
145
223
  }
146
224
  async addActiveRoutes(routes) {
147
225
  if (!routes.length)
148
226
  return this;
149
- const renderedRoutes = await Promise.all(routes.map(async (r, i) => {
150
- const whenContextStrings = r.when ? extractAIContextStrings(r.when) : [];
151
- const conditions = whenContextStrings.length > 0
152
- ? `\n\n **Triggered when:** ${whenContextStrings.join(" OR ")}`
153
- : "";
154
- const desc = r.description
155
- ? `\n\n **Description:** ${r.description}`
156
- : "";
157
- const rules = await renderMany(r.getRules(), this.renderContext);
158
- const prohibitions = await renderMany(r.getProhibitions(), this.renderContext);
159
- const rulesInfo = rules.length > 0
160
- ? `\n\n **Rules:**\n ${rules.map((x) => ` - ${x}`).join("\n ")}`
161
- : "";
162
- const prohibitionsInfo = prohibitions.length > 0
163
- ? `\n\n **Prohibitions:**\n ${prohibitions
164
- .map((x) => ` - ${x}`)
165
- .join("\n ")}`
166
- : "";
167
- return `### Route ${i + 1}: ${r.title}${desc}${conditions}${rulesInfo}${prohibitionsInfo}`;
168
- }));
169
- this.parts.push(`## Available Routes\n\n${renderedRoutes.join("\n\n")}`);
227
+ const compute = async () => {
228
+ const renderedRoutes = await Promise.all(routes.map(async (r, i) => {
229
+ const whenContextStrings = r.when ? extractAIContextStrings(r.when) : [];
230
+ const conditions = whenContextStrings.length > 0
231
+ ? `\n\n **Triggered when:** ${whenContextStrings.join(" OR ")}`
232
+ : "";
233
+ const desc = r.description
234
+ ? `\n\n **Description:** ${r.description}`
235
+ : "";
236
+ const rules = await renderMany(r.getRules(), this.renderContext);
237
+ const prohibitions = await renderMany(r.getProhibitions(), this.renderContext);
238
+ const rulesInfo = rules.length > 0
239
+ ? `\n\n **Rules:**\n ${rules.map((x) => ` - ${x}`).join("\n ")}`
240
+ : "";
241
+ const prohibitionsInfo = prohibitions.length > 0
242
+ ? `\n\n **Prohibitions:**\n ${prohibitions
243
+ .map((x) => ` - ${x}`)
244
+ .join("\n ")}`
245
+ : "";
246
+ return `### Route ${i + 1}: ${r.title}${desc}${conditions}${rulesInfo}${prohibitionsInfo}`;
247
+ }));
248
+ return `## Available Routes\n\n${renderedRoutes.join("\n\n")}`;
249
+ };
250
+ if (this.cache) {
251
+ this.cache.register("activeRoutes", "static", compute);
252
+ }
253
+ else {
254
+ const result = await compute();
255
+ if (result)
256
+ this.parts.push(result);
257
+ }
170
258
  return this;
171
259
  }
172
260
  async addDirectives(directives) {
173
261
  if (!directives?.length)
174
262
  return this;
175
- this.parts.push(`## Directives\n\nAddress concisely:\n\n${directives
176
- .map((d) => `- ${d}`)
177
- .join("\n")}`);
263
+ const compute = () => {
264
+ return `## Directives\n\nAddress concisely:\n\n${directives
265
+ .map((d) => `- ${d}`)
266
+ .join("\n")}`;
267
+ };
268
+ if (this.cache) {
269
+ this.cache.register("directives", "dynamic", compute);
270
+ }
271
+ else {
272
+ this.parts.push(compute());
273
+ }
178
274
  return Promise.resolve(this);
179
275
  }
180
276
  async addAvailableTools(tools) {
181
277
  if (!tools?.length)
182
278
  return this;
183
- const renderedTools = tools.map((tool, i) => {
184
- const toolName = tool.name || tool.id;
185
- const desc = tool.description
186
- ? `\n Description: ${tool.description}`
187
- : "";
188
- return `### Tool ${i + 1}: ${toolName}${desc}`;
189
- });
190
- this.parts.push(`## Available Tools\n\n${renderedTools.join("\n\n")}`);
279
+ const compute = () => {
280
+ const renderedTools = tools.map((tool, i) => {
281
+ const toolName = tool.name || tool.id;
282
+ const desc = tool.description
283
+ ? `\n Description: ${tool.description}`
284
+ : "";
285
+ return `### Tool ${i + 1}: ${toolName}${desc}`;
286
+ });
287
+ return `## Available Tools\n\n${renderedTools.join("\n\n")}`;
288
+ };
289
+ if (this.cache) {
290
+ this.cache.register("availableTools", "dynamic", compute);
291
+ }
292
+ else {
293
+ this.parts.push(compute());
294
+ }
191
295
  return Promise.resolve(this);
192
296
  }
193
297
  async build() {
298
+ if (this.cache) {
299
+ const sections = await this.cache.resolveAll();
300
+ const prompt = sections
301
+ .filter((s) => s != null && s !== "")
302
+ .join("\n\n")
303
+ .trim();
304
+ return prompt;
305
+ }
194
306
  const prompt = this.parts.filter(Boolean).join("\n\n").trim();
195
307
  return Promise.resolve(prompt);
196
308
  }
@@ -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"}