@mcp-abap-adt/llm-agent 8.5.0 → 9.1.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.
Files changed (194) hide show
  1. package/README.md +1 -0
  2. package/dist/generated/version.d.ts +1 -1
  3. package/dist/generated/version.js +1 -1
  4. package/dist/index.d.ts +13 -2
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +14 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/smart-agent/agent.d.ts +11 -1
  9. package/dist/smart-agent/agent.d.ts.map +1 -1
  10. package/dist/smart-agent/agent.js +40 -3
  11. package/dist/smart-agent/agent.js.map +1 -1
  12. package/dist/smart-agent/builder.d.ts +30 -1
  13. package/dist/smart-agent/builder.d.ts.map +1 -1
  14. package/dist/smart-agent/builder.js +126 -23
  15. package/dist/smart-agent/builder.js.map +1 -1
  16. package/dist/smart-agent/interfaces/pipeline.d.ts +5 -1
  17. package/dist/smart-agent/interfaces/pipeline.d.ts.map +1 -1
  18. package/dist/smart-agent/interfaces/rag.d.ts +75 -13
  19. package/dist/smart-agent/interfaces/rag.d.ts.map +1 -1
  20. package/dist/smart-agent/interfaces/rag.js +0 -3
  21. package/dist/smart-agent/interfaces/rag.js.map +1 -1
  22. package/dist/smart-agent/pipeline/context.d.ts +3 -1
  23. package/dist/smart-agent/pipeline/context.d.ts.map +1 -1
  24. package/dist/smart-agent/pipeline/default-pipeline.d.ts.map +1 -1
  25. package/dist/smart-agent/pipeline/default-pipeline.js +2 -0
  26. package/dist/smart-agent/pipeline/default-pipeline.js.map +1 -1
  27. package/dist/smart-agent/pipeline/handlers/history-upsert.d.ts.map +1 -1
  28. package/dist/smart-agent/pipeline/handlers/history-upsert.js +9 -3
  29. package/dist/smart-agent/pipeline/handlers/history-upsert.js.map +1 -1
  30. package/dist/smart-agent/rag/corrections/active-filtering-rag.d.ts +11 -0
  31. package/dist/smart-agent/rag/corrections/active-filtering-rag.d.ts.map +1 -0
  32. package/dist/smart-agent/rag/corrections/active-filtering-rag.js +33 -0
  33. package/dist/smart-agent/rag/corrections/active-filtering-rag.js.map +1 -0
  34. package/dist/smart-agent/rag/corrections/errors.d.ts +23 -0
  35. package/dist/smart-agent/rag/corrections/errors.d.ts.map +1 -0
  36. package/dist/smart-agent/rag/corrections/errors.js +44 -0
  37. package/dist/smart-agent/rag/corrections/errors.js.map +1 -0
  38. package/dist/smart-agent/rag/corrections/index.d.ts +4 -0
  39. package/dist/smart-agent/rag/corrections/index.d.ts.map +1 -0
  40. package/dist/smart-agent/rag/corrections/index.js +4 -0
  41. package/dist/smart-agent/rag/corrections/index.js.map +1 -0
  42. package/dist/smart-agent/rag/corrections/metadata.d.ts +24 -0
  43. package/dist/smart-agent/rag/corrections/metadata.d.ts.map +1 -0
  44. package/dist/smart-agent/rag/corrections/metadata.js +42 -0
  45. package/dist/smart-agent/rag/corrections/metadata.js.map +1 -0
  46. package/dist/smart-agent/rag/in-memory-rag.d.ts +3 -1
  47. package/dist/smart-agent/rag/in-memory-rag.d.ts.map +1 -1
  48. package/dist/smart-agent/rag/in-memory-rag.js +28 -0
  49. package/dist/smart-agent/rag/in-memory-rag.js.map +1 -1
  50. package/dist/smart-agent/rag/index.d.ts +7 -0
  51. package/dist/smart-agent/rag/index.d.ts.map +1 -1
  52. package/dist/smart-agent/rag/index.js +7 -0
  53. package/dist/smart-agent/rag/index.js.map +1 -1
  54. package/dist/smart-agent/rag/inverted-index.d.ts +2 -0
  55. package/dist/smart-agent/rag/inverted-index.d.ts.map +1 -1
  56. package/dist/smart-agent/rag/inverted-index.js +16 -0
  57. package/dist/smart-agent/rag/inverted-index.js.map +1 -1
  58. package/dist/smart-agent/rag/mcp-tools/index.d.ts +2 -0
  59. package/dist/smart-agent/rag/mcp-tools/index.d.ts.map +1 -0
  60. package/dist/smart-agent/rag/mcp-tools/index.js +2 -0
  61. package/dist/smart-agent/rag/mcp-tools/index.js.map +1 -0
  62. package/dist/smart-agent/rag/mcp-tools/rag-collection-tools.d.ts +20 -0
  63. package/dist/smart-agent/rag/mcp-tools/rag-collection-tools.d.ts.map +1 -0
  64. package/dist/smart-agent/rag/mcp-tools/rag-collection-tools.js +234 -0
  65. package/dist/smart-agent/rag/mcp-tools/rag-collection-tools.js.map +1 -0
  66. package/dist/smart-agent/rag/overlays/index.d.ts +3 -0
  67. package/dist/smart-agent/rag/overlays/index.d.ts.map +1 -0
  68. package/dist/smart-agent/rag/overlays/index.js +3 -0
  69. package/dist/smart-agent/rag/overlays/index.js.map +1 -0
  70. package/dist/smart-agent/rag/overlays/overlay-rag.d.ts +15 -0
  71. package/dist/smart-agent/rag/overlays/overlay-rag.d.ts.map +1 -0
  72. package/dist/smart-agent/rag/overlays/overlay-rag.js +55 -0
  73. package/dist/smart-agent/rag/overlays/overlay-rag.js.map +1 -0
  74. package/dist/smart-agent/rag/overlays/session-scoped-rag.d.ts +12 -0
  75. package/dist/smart-agent/rag/overlays/session-scoped-rag.d.ts.map +1 -0
  76. package/dist/smart-agent/rag/overlays/session-scoped-rag.js +31 -0
  77. package/dist/smart-agent/rag/overlays/session-scoped-rag.js.map +1 -0
  78. package/dist/smart-agent/rag/providers/base-provider.d.ts +29 -0
  79. package/dist/smart-agent/rag/providers/base-provider.d.ts.map +1 -0
  80. package/dist/smart-agent/rag/providers/base-provider.js +30 -0
  81. package/dist/smart-agent/rag/providers/base-provider.js.map +1 -0
  82. package/dist/smart-agent/rag/providers/in-memory-rag-provider.d.ts +31 -0
  83. package/dist/smart-agent/rag/providers/in-memory-rag-provider.d.ts.map +1 -0
  84. package/dist/smart-agent/rag/providers/in-memory-rag-provider.js +26 -0
  85. package/dist/smart-agent/rag/providers/in-memory-rag-provider.js.map +1 -0
  86. package/dist/smart-agent/rag/providers/index.d.ts +6 -0
  87. package/dist/smart-agent/rag/providers/index.d.ts.map +1 -0
  88. package/dist/smart-agent/rag/providers/index.js +6 -0
  89. package/dist/smart-agent/rag/providers/index.js.map +1 -0
  90. package/dist/smart-agent/rag/providers/qdrant-rag-provider.d.ts +39 -0
  91. package/dist/smart-agent/rag/providers/qdrant-rag-provider.d.ts.map +1 -0
  92. package/dist/smart-agent/rag/providers/qdrant-rag-provider.js +93 -0
  93. package/dist/smart-agent/rag/providers/qdrant-rag-provider.js.map +1 -0
  94. package/dist/smart-agent/rag/providers/simple-provider-registry.d.ts +8 -0
  95. package/dist/smart-agent/rag/providers/simple-provider-registry.d.ts.map +1 -0
  96. package/dist/smart-agent/rag/providers/simple-provider-registry.js +16 -0
  97. package/dist/smart-agent/rag/providers/simple-provider-registry.js.map +1 -0
  98. package/dist/smart-agent/rag/providers/vector-rag-provider.d.ts +33 -0
  99. package/dist/smart-agent/rag/providers/vector-rag-provider.d.ts.map +1 -0
  100. package/dist/smart-agent/rag/providers/vector-rag-provider.js +28 -0
  101. package/dist/smart-agent/rag/providers/vector-rag-provider.js.map +1 -0
  102. package/dist/smart-agent/rag/qdrant-rag.d.ts +4 -2
  103. package/dist/smart-agent/rag/qdrant-rag.d.ts.map +1 -1
  104. package/dist/smart-agent/rag/qdrant-rag.js +94 -0
  105. package/dist/smart-agent/rag/qdrant-rag.js.map +1 -1
  106. package/dist/smart-agent/rag/registry/index.d.ts +2 -0
  107. package/dist/smart-agent/rag/registry/index.d.ts.map +1 -0
  108. package/dist/smart-agent/rag/registry/index.js +2 -0
  109. package/dist/smart-agent/rag/registry/index.js.map +1 -0
  110. package/dist/smart-agent/rag/registry/simple-rag-registry.d.ts +34 -0
  111. package/dist/smart-agent/rag/registry/simple-rag-registry.d.ts.map +1 -0
  112. package/dist/smart-agent/rag/registry/simple-rag-registry.js +143 -0
  113. package/dist/smart-agent/rag/registry/simple-rag-registry.js.map +1 -0
  114. package/dist/smart-agent/rag/strategies/edit/direct.d.ts +13 -0
  115. package/dist/smart-agent/rag/strategies/edit/direct.d.ts.map +1 -0
  116. package/dist/smart-agent/rag/strategies/edit/direct.js +31 -0
  117. package/dist/smart-agent/rag/strategies/edit/direct.js.map +1 -0
  118. package/dist/smart-agent/rag/strategies/edit/immutable.d.ts +11 -0
  119. package/dist/smart-agent/rag/strategies/edit/immutable.d.ts.map +1 -0
  120. package/dist/smart-agent/rag/strategies/edit/immutable.js +14 -0
  121. package/dist/smart-agent/rag/strategies/edit/immutable.js.map +1 -0
  122. package/dist/smart-agent/rag/strategies/edit/index.d.ts +5 -0
  123. package/dist/smart-agent/rag/strategies/edit/index.d.ts.map +1 -0
  124. package/dist/smart-agent/rag/strategies/edit/index.js +5 -0
  125. package/dist/smart-agent/rag/strategies/edit/index.js.map +1 -0
  126. package/dist/smart-agent/rag/strategies/edit/overlay.d.ts +8 -0
  127. package/dist/smart-agent/rag/strategies/edit/overlay.d.ts.map +1 -0
  128. package/dist/smart-agent/rag/strategies/edit/overlay.js +8 -0
  129. package/dist/smart-agent/rag/strategies/edit/overlay.js.map +1 -0
  130. package/dist/smart-agent/rag/strategies/edit/session-scoped.d.ts +19 -0
  131. package/dist/smart-agent/rag/strategies/edit/session-scoped.d.ts.map +1 -0
  132. package/dist/smart-agent/rag/strategies/edit/session-scoped.js +46 -0
  133. package/dist/smart-agent/rag/strategies/edit/session-scoped.js.map +1 -0
  134. package/dist/smart-agent/rag/strategies/id/caller-provided.d.ts +6 -0
  135. package/dist/smart-agent/rag/strategies/id/caller-provided.d.ts.map +1 -0
  136. package/dist/smart-agent/rag/strategies/id/caller-provided.js +10 -0
  137. package/dist/smart-agent/rag/strategies/id/caller-provided.js.map +1 -0
  138. package/dist/smart-agent/rag/strategies/id/canonical-key.d.ts +6 -0
  139. package/dist/smart-agent/rag/strategies/id/canonical-key.d.ts.map +1 -0
  140. package/dist/smart-agent/rag/strategies/id/canonical-key.js +14 -0
  141. package/dist/smart-agent/rag/strategies/id/canonical-key.js.map +1 -0
  142. package/dist/smart-agent/rag/strategies/id/global-unique.d.ts +6 -0
  143. package/dist/smart-agent/rag/strategies/id/global-unique.d.ts.map +1 -0
  144. package/dist/smart-agent/rag/strategies/id/global-unique.js +9 -0
  145. package/dist/smart-agent/rag/strategies/id/global-unique.js.map +1 -0
  146. package/dist/smart-agent/rag/strategies/id/index.d.ts +5 -0
  147. package/dist/smart-agent/rag/strategies/id/index.d.ts.map +1 -0
  148. package/dist/smart-agent/rag/strategies/id/index.js +5 -0
  149. package/dist/smart-agent/rag/strategies/id/index.js.map +1 -0
  150. package/dist/smart-agent/rag/strategies/id/session-scoped.d.ts +8 -0
  151. package/dist/smart-agent/rag/strategies/id/session-scoped.d.ts.map +1 -0
  152. package/dist/smart-agent/rag/strategies/id/session-scoped.js +14 -0
  153. package/dist/smart-agent/rag/strategies/id/session-scoped.js.map +1 -0
  154. package/dist/smart-agent/rag/vector-rag.d.ts +4 -2
  155. package/dist/smart-agent/rag/vector-rag.d.ts.map +1 -1
  156. package/dist/smart-agent/rag/vector-rag.js +71 -28
  157. package/dist/smart-agent/rag/vector-rag.js.map +1 -1
  158. package/dist/smart-agent/resilience/fallback-rag.d.ts +5 -5
  159. package/dist/smart-agent/resilience/fallback-rag.d.ts.map +1 -1
  160. package/dist/smart-agent/resilience/fallback-rag.js +52 -23
  161. package/dist/smart-agent/resilience/fallback-rag.js.map +1 -1
  162. package/dist/smart-agent/testing/index.d.ts +4 -2
  163. package/dist/smart-agent/testing/index.d.ts.map +1 -1
  164. package/dist/smart-agent/testing/index.js +41 -17
  165. package/dist/smart-agent/testing/index.js.map +1 -1
  166. package/package.json +1 -1
  167. package/dist/agents/sap-ai-core-direct-agent.d.ts +0 -24
  168. package/dist/agents/sap-ai-core-direct-agent.d.ts.map +0 -1
  169. package/dist/agents/sap-ai-core-direct-agent.js +0 -117
  170. package/dist/agents/sap-ai-core-direct-agent.js.map +0 -1
  171. package/dist/llm-providers/sap-ai-core-direct.d.ts +0 -30
  172. package/dist/llm-providers/sap-ai-core-direct.d.ts.map +0 -1
  173. package/dist/llm-providers/sap-ai-core-direct.js +0 -178
  174. package/dist/llm-providers/sap-ai-core-direct.js.map +0 -1
  175. package/dist/smart-agent/interfaces/tool-result-compactor.d.ts +0 -11
  176. package/dist/smart-agent/interfaces/tool-result-compactor.d.ts.map +0 -1
  177. package/dist/smart-agent/interfaces/tool-result-compactor.js +0 -2
  178. package/dist/smart-agent/interfaces/tool-result-compactor.js.map +0 -1
  179. package/dist/smart-agent/pipeline/handlers/rag-upsert.d.ts +0 -18
  180. package/dist/smart-agent/pipeline/handlers/rag-upsert.d.ts.map +0 -1
  181. package/dist/smart-agent/pipeline/handlers/rag-upsert.js +0 -45
  182. package/dist/smart-agent/pipeline/handlers/rag-upsert.js.map +0 -1
  183. package/dist/smart-agent/policy/llm-tool-result-compactor.d.ts +0 -23
  184. package/dist/smart-agent/policy/llm-tool-result-compactor.d.ts.map +0 -1
  185. package/dist/smart-agent/policy/llm-tool-result-compactor.js +0 -57
  186. package/dist/smart-agent/policy/llm-tool-result-compactor.js.map +0 -1
  187. package/dist/smart-agent/policy/rag-only-tool-result-compactor.d.ts +0 -19
  188. package/dist/smart-agent/policy/rag-only-tool-result-compactor.d.ts.map +0 -1
  189. package/dist/smart-agent/policy/rag-only-tool-result-compactor.js +0 -33
  190. package/dist/smart-agent/policy/rag-only-tool-result-compactor.js.map +0 -1
  191. package/dist/smart-agent/policy/truncating-tool-result-compactor.d.ts +0 -19
  192. package/dist/smart-agent/policy/truncating-tool-result-compactor.d.ts.map +0 -1
  193. package/dist/smart-agent/policy/truncating-tool-result-compactor.js +0 -37
  194. package/dist/smart-agent/policy/truncating-tool-result-compactor.js.map +0 -1
@@ -1,178 +0,0 @@
1
- /**
2
- * SAP AI Core Direct LLM Provider
3
- *
4
- * Bypasses OrchestrationClient and sends OpenAI-compatible HTTP requests
5
- * directly to SAP AI Core deployment endpoints.
6
- * Token counts are accurate (no orchestration overhead).
7
- */
8
- import { BaseLLMProvider } from './base.js';
9
- export class SapAiCoreDirectProvider extends BaseLLMProvider {
10
- model;
11
- resourceGroup;
12
- deploymentUrl = null;
13
- modelOverride;
14
- setModelOverride(model) {
15
- this.modelOverride = model;
16
- }
17
- constructor(config) {
18
- super(config);
19
- this.model = config.model || 'gpt-4o';
20
- this.resourceGroup = config.resourceGroup || 'default';
21
- }
22
- async resolveUrl() {
23
- if (this.deploymentUrl)
24
- return this.deploymentUrl;
25
- const { resolveDeploymentUrl } = await import('@sap-ai-sdk/ai-api');
26
- const url = await resolveDeploymentUrl({
27
- scenarioId: 'foundation-models',
28
- model: { name: this.model },
29
- resourceGroup: this.resourceGroup,
30
- });
31
- if (!url) {
32
- throw new Error(`SAP AI Core: no deployment found for model "${this.model}" in resource group "${this.resourceGroup}"`);
33
- }
34
- this.deploymentUrl = url;
35
- return url;
36
- }
37
- async chat(messages, tools) {
38
- try {
39
- const url = await this.resolveUrl();
40
- const model = this.modelOverride ?? this.model;
41
- const body = {
42
- model,
43
- messages: this.formatMessages(messages),
44
- temperature: this.config.temperature || 0.7,
45
- max_tokens: this.config.maxTokens || 16384,
46
- };
47
- if (tools && tools.length > 0) {
48
- body.tools = tools;
49
- body.tool_choice = 'auto';
50
- }
51
- const res = await fetch(`${url}/chat/completions`, {
52
- method: 'POST',
53
- headers: { 'Content-Type': 'application/json' },
54
- body: JSON.stringify(body),
55
- });
56
- if (!res.ok) {
57
- const errText = await res.text();
58
- throw new Error(`HTTP ${res.status}: ${errText}`);
59
- }
60
- const data = (await res.json());
61
- const choice = data.choices[0];
62
- return {
63
- content: choice.message.content || '',
64
- finishReason: choice.finish_reason,
65
- raw: data,
66
- };
67
- }
68
- catch (error) {
69
- const msg = error instanceof Error ? error.message : String(error);
70
- throw new Error(`SAP AI Core Direct API error: ${msg}`);
71
- }
72
- finally {
73
- this.modelOverride = undefined;
74
- }
75
- }
76
- async *streamChat(messages, tools) {
77
- try {
78
- const url = await this.resolveUrl();
79
- const model = this.modelOverride ?? this.model;
80
- const body = {
81
- model,
82
- messages: this.formatMessages(messages),
83
- temperature: this.config.temperature || 0.7,
84
- max_tokens: this.config.maxTokens || 16384,
85
- stream: true,
86
- };
87
- if (tools && tools.length > 0) {
88
- body.tools = tools;
89
- body.tool_choice = 'auto';
90
- }
91
- const res = await fetch(`${url}/chat/completions`, {
92
- method: 'POST',
93
- headers: { 'Content-Type': 'application/json' },
94
- body: JSON.stringify(body),
95
- });
96
- if (!res.ok) {
97
- const errText = await res.text();
98
- throw new Error(`HTTP ${res.status}: ${errText}`);
99
- }
100
- if (!res.body)
101
- throw new Error('No response body for streaming');
102
- const decoder = new TextDecoder();
103
- let buffer = '';
104
- for await (const rawChunk of res.body) {
105
- buffer += decoder.decode(rawChunk, { stream: true });
106
- const lines = buffer.split('\n');
107
- buffer = lines.pop() || '';
108
- for (const line of lines) {
109
- const trimmed = line.trim();
110
- if (!trimmed?.startsWith('data: '))
111
- continue;
112
- const payload = trimmed.slice(6);
113
- if (payload === '[DONE]')
114
- return;
115
- try {
116
- const chunk = JSON.parse(payload);
117
- const delta = chunk.choices[0]?.delta;
118
- const usage = chunk.usage;
119
- yield {
120
- content: delta?.content || '',
121
- finishReason: chunk.choices[0]?.finish_reason ?? undefined,
122
- raw: chunk,
123
- ...(usage
124
- ? {
125
- usage: {
126
- promptTokens: usage.prompt_tokens || 0,
127
- completionTokens: usage.completion_tokens || 0,
128
- totalTokens: usage.total_tokens || 0,
129
- },
130
- }
131
- : {}),
132
- };
133
- }
134
- catch {
135
- // Skip malformed chunks
136
- }
137
- }
138
- }
139
- }
140
- catch (error) {
141
- const msg = error instanceof Error ? error.message : String(error);
142
- throw new Error(`SAP AI Core Direct streaming error: ${msg}`);
143
- }
144
- finally {
145
- this.modelOverride = undefined;
146
- }
147
- }
148
- async getModels() {
149
- return [{ id: this.model }];
150
- }
151
- formatMessages(messages) {
152
- return messages.map((msg) => {
153
- if (msg.role === 'assistant' &&
154
- msg.tool_calls &&
155
- msg.tool_calls.length > 0) {
156
- return {
157
- role: 'assistant',
158
- content: msg.content || undefined,
159
- tool_calls: msg.tool_calls,
160
- };
161
- }
162
- if (msg.role === 'tool' && msg.tool_call_id) {
163
- return {
164
- role: 'tool',
165
- content: typeof msg.content === 'string'
166
- ? msg.content
167
- : JSON.stringify(msg.content ?? ''),
168
- tool_call_id: msg.tool_call_id,
169
- };
170
- }
171
- return {
172
- role: msg.role,
173
- content: msg.content ?? '',
174
- };
175
- });
176
- }
177
- }
178
- //# sourceMappingURL=sap-ai-core-direct.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sap-ai-core-direct.js","sourceRoot":"","sources":["../../src/llm-providers/sap-ai-core-direct.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import type { Message } from '../../types.js';
2
- /**
3
- * Strategy for compacting tool results in tool-loop message history.
4
- *
5
- * Called before each LLM iteration (after the first) to reduce payload size.
6
- * Implementations decide which tool results to keep full and which to summarize.
7
- */
8
- export interface IToolResultCompactor {
9
- compact(messages: Message[], currentIteration: number): Promise<Message[]> | Message[];
10
- }
11
- //# sourceMappingURL=tool-result-compactor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool-result-compactor.d.ts","sourceRoot":"","sources":["../../../src/smart-agent/interfaces/tool-result-compactor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,CACL,QAAQ,EAAE,OAAO,EAAE,EACnB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC;CACnC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=tool-result-compactor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool-result-compactor.js","sourceRoot":"","sources":["../../../src/smart-agent/interfaces/tool-result-compactor.ts"],"names":[],"mappings":""}
@@ -1,18 +0,0 @@
1
- /**
2
- * RagUpsertHandler — upserts classified subprompts to RAG stores.
3
- *
4
- * Reads: `ctx.subprompts`, `ctx.ragStores`
5
- * Writes: (side effect — data stored in RAG)
6
- *
7
- * Upserts subprompts to their matching RAG store. A subprompt's `type`
8
- * is matched to a store key directly (e.g. type `feedback` → store `feedback`).
9
- * Skipped when `ragUpsertEnabled` is false.
10
- */
11
- import type { ISpan } from '../../tracer/types.js';
12
- import type { PipelineContext } from '../context.js';
13
- import type { IStageHandler } from '../stage-handler.js';
14
- export declare class RagUpsertHandler implements IStageHandler {
15
- execute(ctx: PipelineContext, _config: Record<string, unknown>, span: ISpan): Promise<boolean>;
16
- private _buildMetadata;
17
- }
18
- //# sourceMappingURL=rag-upsert.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rag-upsert.d.ts","sourceRoot":"","sources":["../../../../src/smart-agent/pipeline/handlers/rag-upsert.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,qBAAa,gBAAiB,YAAW,aAAa;IAC9C,OAAO,CACX,GAAG,EAAE,eAAe,EACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,IAAI,EAAE,KAAK,GACV,OAAO,CAAC,OAAO,CAAC;IAgCnB,OAAO,CAAC,cAAc;CASvB"}
@@ -1,45 +0,0 @@
1
- /**
2
- * RagUpsertHandler — upserts classified subprompts to RAG stores.
3
- *
4
- * Reads: `ctx.subprompts`, `ctx.ragStores`
5
- * Writes: (side effect — data stored in RAG)
6
- *
7
- * Upserts subprompts to their matching RAG store. A subprompt's `type`
8
- * is matched to a store key directly (e.g. type `feedback` → store `feedback`).
9
- * Skipped when `ragUpsertEnabled` is false.
10
- */
11
- export class RagUpsertHandler {
12
- async execute(ctx, _config, span) {
13
- if (ctx.config.ragUpsertEnabled === false) {
14
- span.setAttribute('skipped', true);
15
- return true;
16
- }
17
- // Match subprompt types to store keys (try exact match, then type + 's')
18
- const resolveStore = (type) => ctx.ragStores[type] ?? ctx.ragStores[`${type}s`];
19
- const others = ctx.subprompts.filter((sp) => sp.type !== 'action' && sp.type !== 'chat' && resolveStore(sp.type));
20
- if (others.length === 0) {
21
- span.setAttribute('count', 0);
22
- return true;
23
- }
24
- const metadata = this._buildMetadata(ctx);
25
- await Promise.allSettled(others.map(async (sp) => {
26
- const store = resolveStore(sp.type);
27
- if (store)
28
- await store.upsert(sp.text, metadata, ctx.options);
29
- }));
30
- span.setAttribute('count', others.length);
31
- return true;
32
- }
33
- _buildMetadata(ctx) {
34
- const p = ctx.config.sessionPolicy;
35
- if (!p)
36
- return {};
37
- const m = {};
38
- if (p.namespace !== undefined)
39
- m.namespace = p.namespace;
40
- if (p.maxSessionAgeMs !== undefined)
41
- m.ttl = Math.floor((Date.now() + p.maxSessionAgeMs) / 1000);
42
- return m;
43
- }
44
- }
45
- //# sourceMappingURL=rag-upsert.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rag-upsert.js","sourceRoot":"","sources":["../../../../src/smart-agent/pipeline/handlers/rag-upsert.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,MAAM,OAAO,gBAAgB;IAC3B,KAAK,CAAC,OAAO,CACX,GAAoB,EACpB,OAAgC,EAChC,IAAW;QAEX,IAAI,GAAG,CAAC,MAAM,CAAC,gBAAgB,KAAK,KAAK,EAAE,CAAC;YAC1C,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACnC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,yEAAyE;QACzE,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE,CACpC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAClC,CAAC,EAAE,EAAE,EAAE,CACL,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,CACtE,CAAC;QAEF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAE1C,MAAM,OAAO,CAAC,UAAU,CACtB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;YACtB,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,KAAK;gBAAE,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAChE,CAAC,CAAC,CACH,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,cAAc,CAAC,GAAoB;QACzC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC;QACnC,IAAI,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC;QAClB,MAAM,CAAC,GAAgB,EAAE,CAAC;QAC1B,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS;YAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;QACzD,IAAI,CAAC,CAAC,eAAe,KAAK,SAAS;YACjC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC;QAC9D,OAAO,CAAC,CAAC;IACX,CAAC;CACF"}
@@ -1,23 +0,0 @@
1
- import type { Message } from '../../types.js';
2
- import type { ILlm } from '../interfaces/llm.js';
3
- import type { IToolResultCompactor } from '../interfaces/tool-result-compactor.js';
4
- export interface LlmToolResultCompactorConfig {
5
- /** Results longer than this (chars) are summarized via LLM. Default: 1024. */
6
- threshold?: number;
7
- /** Number of recent tool results to keep full. Default: 3. */
8
- keep?: number;
9
- }
10
- /**
11
- * Uses a helper LLM to create meaningful summaries of large tool results.
12
- * Only results exceeding `threshold` chars are summarized.
13
- * Small results and recent results (last `keep`) pass through unchanged.
14
- */
15
- export declare class LlmToolResultCompactor implements IToolResultCompactor {
16
- private readonly llm;
17
- private readonly threshold;
18
- private readonly keep;
19
- constructor(llm: ILlm, config?: LlmToolResultCompactorConfig);
20
- compact(messages: Message[], _currentIteration: number): Promise<Message[]>;
21
- private summarize;
22
- }
23
- //# sourceMappingURL=llm-tool-result-compactor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"llm-tool-result-compactor.d.ts","sourceRoot":"","sources":["../../../src/smart-agent/policy/llm-tool-result-compactor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAOnF,MAAM,WAAW,4BAA4B;IAC3C,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,qBAAa,sBAAuB,YAAW,oBAAoB;IAK/D,OAAO,CAAC,QAAQ,CAAC,GAAG;IAJtB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;gBAGX,GAAG,EAAE,IAAI,EAC1B,MAAM,CAAC,EAAE,4BAA4B;IAMjC,OAAO,CACX,QAAQ,EAAE,OAAO,EAAE,EACnB,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,OAAO,EAAE,CAAC;YA2BP,SAAS;CAcxB"}
@@ -1,57 +0,0 @@
1
- const SUMMARY_PROMPT = `Summarize this tool result in one line (max 200 chars).
2
- Keep: object names, counts, success/failure status.
3
- Remove: raw XML/JSON bodies, verbose descriptions, duplicate content.
4
- Reply with ONLY the summary line, nothing else.`;
5
- /**
6
- * Uses a helper LLM to create meaningful summaries of large tool results.
7
- * Only results exceeding `threshold` chars are summarized.
8
- * Small results and recent results (last `keep`) pass through unchanged.
9
- */
10
- export class LlmToolResultCompactor {
11
- llm;
12
- threshold;
13
- keep;
14
- constructor(llm, config) {
15
- this.llm = llm;
16
- this.threshold = config?.threshold ?? 1024;
17
- this.keep = config?.keep ?? 3;
18
- }
19
- async compact(messages, _currentIteration) {
20
- const toolIndices = [];
21
- for (let i = 0; i < messages.length; i++) {
22
- if (messages[i].role === 'tool') {
23
- toolIndices.push(i);
24
- }
25
- }
26
- if (toolIndices.length <= this.keep)
27
- return messages;
28
- const cutoff = toolIndices[toolIndices.length - this.keep];
29
- const compactSet = new Set(toolIndices.filter((idx) => idx < cutoff));
30
- const result = [...messages];
31
- for (const idx of compactSet) {
32
- const msg = result[idx];
33
- const text = typeof msg.content === 'string' ? msg.content : '';
34
- if (text.length <= this.threshold)
35
- continue;
36
- const summary = await this.summarize(text);
37
- result[idx] = { ...msg, content: summary };
38
- }
39
- return result;
40
- }
41
- async summarize(text) {
42
- try {
43
- const chatResult = await this.llm.chat([
44
- { role: 'system', content: SUMMARY_PROMPT },
45
- { role: 'user', content: text },
46
- ]);
47
- if (chatResult.ok && chatResult.value.content) {
48
- return chatResult.value.content.slice(0, 300);
49
- }
50
- }
51
- catch {
52
- // Fallback to truncation on LLM failure
53
- }
54
- return `${text.slice(0, 200)}\n… [truncated, ${text.length} chars]`;
55
- }
56
- }
57
- //# sourceMappingURL=llm-tool-result-compactor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"llm-tool-result-compactor.js","sourceRoot":"","sources":["../../../src/smart-agent/policy/llm-tool-result-compactor.ts"],"names":[],"mappings":"AAIA,MAAM,cAAc,GAAG;;;gDAGyB,CAAC;AASjD;;;;GAIG;AACH,MAAM,OAAO,sBAAsB;IAKd;IAJF,SAAS,CAAS;IAClB,IAAI,CAAS;IAE9B,YACmB,GAAS,EAC1B,MAAqC;QADpB,QAAG,GAAH,GAAG,CAAM;QAG1B,IAAI,CAAC,SAAS,GAAG,MAAM,EAAE,SAAS,IAAI,IAAI,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,OAAO,CACX,QAAmB,EACnB,iBAAyB;QAEzB,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAChC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAED,IAAI,WAAW,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,QAAQ,CAAC;QAErD,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;QAEtE,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;QAE7B,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS;gBAAE,SAAS;YAE5C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;QAC7C,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,IAAY;QAClC,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBACrC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE;gBAC3C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;aAChC,CAAC,CAAC;YACH,IAAI,UAAU,CAAC,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBAC9C,OAAO,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;QAC1C,CAAC;QACD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,mBAAmB,IAAI,CAAC,MAAM,SAAS,CAAC;IACtE,CAAC;CACF"}
@@ -1,19 +0,0 @@
1
- import type { Message } from '../../types.js';
2
- import type { IToolResultCompactor } from '../interfaces/tool-result-compactor.js';
3
- /**
4
- * Removes all old tool results from context between iterations.
5
- * Only the last `keep` tool results are preserved.
6
- * Older tool results are replaced with a minimal placeholder.
7
- *
8
- * Use this when history is managed entirely via RAG — the tool-loop
9
- * context contains only recent actions, everything else is retrieved
10
- * from RAG stores at assembly time.
11
- */
12
- export declare class RagOnlyToolResultCompactor implements IToolResultCompactor {
13
- private readonly keep;
14
- constructor(opts?: {
15
- keep?: number;
16
- });
17
- compact(messages: Message[], _currentIteration: number): Message[];
18
- }
19
- //# sourceMappingURL=rag-only-tool-result-compactor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rag-only-tool-result-compactor.d.ts","sourceRoot":"","sources":["../../../src/smart-agent/policy/rag-only-tool-result-compactor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAEnF;;;;;;;;GAQG;AACH,qBAAa,0BAA2B,YAAW,oBAAoB;IACrE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;gBAElB,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;IAIpC,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,iBAAiB,EAAE,MAAM,GAAG,OAAO,EAAE;CAkBnE"}
@@ -1,33 +0,0 @@
1
- /**
2
- * Removes all old tool results from context between iterations.
3
- * Only the last `keep` tool results are preserved.
4
- * Older tool results are replaced with a minimal placeholder.
5
- *
6
- * Use this when history is managed entirely via RAG — the tool-loop
7
- * context contains only recent actions, everything else is retrieved
8
- * from RAG stores at assembly time.
9
- */
10
- export class RagOnlyToolResultCompactor {
11
- keep;
12
- constructor(opts) {
13
- this.keep = opts?.keep ?? 1;
14
- }
15
- compact(messages, _currentIteration) {
16
- const toolIndices = [];
17
- for (let i = 0; i < messages.length; i++) {
18
- if (messages[i].role === 'tool') {
19
- toolIndices.push(i);
20
- }
21
- }
22
- if (toolIndices.length <= this.keep)
23
- return messages;
24
- const cutoff = toolIndices[toolIndices.length - this.keep];
25
- const compactSet = new Set(toolIndices.filter((idx) => idx < cutoff));
26
- return messages.map((msg, i) => {
27
- if (!compactSet.has(i))
28
- return msg;
29
- return { ...msg, content: '[result removed — available via history]' };
30
- });
31
- }
32
- }
33
- //# sourceMappingURL=rag-only-tool-result-compactor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rag-only-tool-result-compactor.js","sourceRoot":"","sources":["../../../src/smart-agent/policy/rag-only-tool-result-compactor.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,MAAM,OAAO,0BAA0B;IACpB,IAAI,CAAS;IAE9B,YAAY,IAAwB;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,CAAC,QAAmB,EAAE,iBAAyB;QACpD,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAChC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAED,IAAI,WAAW,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,QAAQ,CAAC;QAErD,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;QAEtE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,OAAO,GAAG,CAAC;YACnC,OAAO,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,0CAA0C,EAAE,CAAC;QACzE,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -1,19 +0,0 @@
1
- import type { Message } from '../../types.js';
2
- import type { IToolResultCompactor } from '../interfaces/tool-result-compactor.js';
3
- /**
4
- * Keeps the last `keep` tool-result messages at full length.
5
- * Older tool results exceeding `threshold` chars are truncated to `previewLength`
6
- * chars with a truncation notice.
7
- */
8
- export declare class TruncatingToolResultCompactor implements IToolResultCompactor {
9
- private readonly keep;
10
- private readonly threshold;
11
- private readonly previewLength;
12
- constructor(opts?: {
13
- keep?: number;
14
- threshold?: number;
15
- previewLength?: number;
16
- });
17
- compact(messages: Message[], _currentIteration: number): Message[];
18
- }
19
- //# sourceMappingURL=truncating-tool-result-compactor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"truncating-tool-result-compactor.d.ts","sourceRoot":"","sources":["../../../src/smart-agent/policy/truncating-tool-result-compactor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAEnF;;;;GAIG;AACH,qBAAa,6BAA8B,YAAW,oBAAoB;IACxE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;gBAE3B,IAAI,CAAC,EAAE;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB;IAMD,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,iBAAiB,EAAE,MAAM,GAAG,OAAO,EAAE;CAqBnE"}
@@ -1,37 +0,0 @@
1
- /**
2
- * Keeps the last `keep` tool-result messages at full length.
3
- * Older tool results exceeding `threshold` chars are truncated to `previewLength`
4
- * chars with a truncation notice.
5
- */
6
- export class TruncatingToolResultCompactor {
7
- keep;
8
- threshold;
9
- previewLength;
10
- constructor(opts) {
11
- this.keep = opts?.keep ?? 3;
12
- this.threshold = opts?.threshold ?? 300;
13
- this.previewLength = opts?.previewLength ?? 200;
14
- }
15
- compact(messages, _currentIteration) {
16
- const toolIndices = [];
17
- for (let i = 0; i < messages.length; i++) {
18
- if (messages[i].role === 'tool') {
19
- toolIndices.push(i);
20
- }
21
- }
22
- if (toolIndices.length <= this.keep)
23
- return messages;
24
- const cutoff = toolIndices[toolIndices.length - this.keep];
25
- const compactSet = new Set(toolIndices.filter((idx) => idx < cutoff));
26
- return messages.map((msg, i) => {
27
- if (!compactSet.has(i))
28
- return msg;
29
- const text = typeof msg.content === 'string' ? msg.content : '';
30
- if (text.length <= this.threshold)
31
- return msg;
32
- const summary = `${text.slice(0, this.previewLength)}\n… [truncated, ${text.length} chars total]`;
33
- return { ...msg, content: summary };
34
- });
35
- }
36
- }
37
- //# sourceMappingURL=truncating-tool-result-compactor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"truncating-tool-result-compactor.js","sourceRoot":"","sources":["../../../src/smart-agent/policy/truncating-tool-result-compactor.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,OAAO,6BAA6B;IACvB,IAAI,CAAS;IACb,SAAS,CAAS;IAClB,aAAa,CAAS;IAEvC,YAAY,IAIX;QACC,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,GAAG,CAAC;QACxC,IAAI,CAAC,aAAa,GAAG,IAAI,EAAE,aAAa,IAAI,GAAG,CAAC;IAClD,CAAC;IAED,OAAO,CAAC,QAAmB,EAAE,iBAAyB;QACpD,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAChC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAED,IAAI,WAAW,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,QAAQ,CAAC;QAErD,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;QAEtE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,OAAO,GAAG,CAAC;YACnC,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS;gBAAE,OAAO,GAAG,CAAC;YAC9C,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,mBAAmB,IAAI,CAAC,MAAM,eAAe,CAAC;YAClG,OAAO,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}