@just-every/ensemble 0.2.69 → 0.2.70
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/dist/core/ensemble_request.d.ts.map +1 -1
- package/dist/core/ensemble_request.js +1 -1
- package/dist/core/ensemble_request.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/model_providers/openai_chat.d.ts.map +1 -1
- package/dist/model_providers/openai_chat.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/summary_utils.d.ts +7 -0
- package/dist/utils/summary_utils.d.ts.map +1 -0
- package/dist/utils/summary_utils.js +206 -0
- package/dist/utils/summary_utils.js.map +1 -0
- package/dist/utils/tool_result_processor.d.ts +3 -3
- package/dist/utils/tool_result_processor.d.ts.map +1 -1
- package/dist/utils/tool_result_processor.js +166 -10
- package/dist/utils/tool_result_processor.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ToolFunction } from '../types/types.js';
|
|
2
|
+
export declare function createSummary(document: string, context: string, summaryFn: (document: string, context: string) => Promise<string>, includeExpansionReferences?: boolean, summariesDir?: string): Promise<string>;
|
|
3
|
+
export declare function read_source(summary_id: string, line_start?: number, line_end?: number, summariesDir?: string): Promise<string>;
|
|
4
|
+
export declare function write_source(summary_id: string, file_path: string, summariesDir?: string): Promise<string>;
|
|
5
|
+
export declare function getSummaryTools(summariesDir?: string): ToolFunction[];
|
|
6
|
+
export declare function hasExpansionTools(toolNames: string[]): boolean;
|
|
7
|
+
//# sourceMappingURL=summary_utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summary_utils.d.ts","sourceRoot":"","sources":["../../utils/summary_utils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAiFjD,wBAAsB,aAAa,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EACjE,0BAA0B,GAAE,OAAe,EAC3C,YAAY,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC,CAiHjB;AAYD,wBAAsB,WAAW,CAC7B,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC,CAiCjB;AAUD,wBAAsB,YAAY,CAC9B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC,CAsCjB;AASD,wBAAgB,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAsDrE;AAQD,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAI9D"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import fs from 'fs/promises';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import crypto from 'crypto';
|
|
4
|
+
import { createToolFunction } from './create_tool_function.js';
|
|
5
|
+
const SUMMARIZE_AT_CHARS = 5000;
|
|
6
|
+
const SUMMARIZE_TRUNCATE_CHARS = 200000;
|
|
7
|
+
const HASH_MAP_FILENAME = 'summary_hash_map.json';
|
|
8
|
+
async function ensureDir(dir) {
|
|
9
|
+
try {
|
|
10
|
+
await fs.mkdir(dir, { recursive: true });
|
|
11
|
+
}
|
|
12
|
+
catch (error) {
|
|
13
|
+
if (error.code !== 'EEXIST') {
|
|
14
|
+
throw error;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
async function loadHashMap(file_path) {
|
|
19
|
+
try {
|
|
20
|
+
const data = await fs.readFile(file_path, 'utf-8');
|
|
21
|
+
return JSON.parse(data);
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
if (error.code === 'ENOENT') {
|
|
25
|
+
return {};
|
|
26
|
+
}
|
|
27
|
+
console.error(`Error loading summary hash map from ${file_path}:`, error);
|
|
28
|
+
return {};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
async function saveHashMap(file_path, map) {
|
|
32
|
+
try {
|
|
33
|
+
const data = JSON.stringify(map, null, 2);
|
|
34
|
+
await fs.writeFile(file_path, data, 'utf-8');
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
console.error(`Error saving summary hash map to ${file_path}:`, error);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function truncate(text, length = SUMMARIZE_TRUNCATE_CHARS, separator = '\n\n...[truncated for summary]...\n\n') {
|
|
41
|
+
text = text.trim();
|
|
42
|
+
if (text.length <= length) {
|
|
43
|
+
return text;
|
|
44
|
+
}
|
|
45
|
+
return (text.substring(0, length * 0.3) +
|
|
46
|
+
separator +
|
|
47
|
+
text.substring(text.length - length * 0.7 + separator.length));
|
|
48
|
+
}
|
|
49
|
+
export async function createSummary(document, context, summaryFn, includeExpansionReferences = false, summariesDir) {
|
|
50
|
+
if (document.length <= SUMMARIZE_AT_CHARS) {
|
|
51
|
+
return document;
|
|
52
|
+
}
|
|
53
|
+
const finalSummariesDir = summariesDir || './summaries';
|
|
54
|
+
await ensureDir(finalSummariesDir);
|
|
55
|
+
const hashMapPath = path.join(finalSummariesDir, HASH_MAP_FILENAME);
|
|
56
|
+
const documentHash = crypto
|
|
57
|
+
.createHash('sha256')
|
|
58
|
+
.update(document)
|
|
59
|
+
.digest('hex');
|
|
60
|
+
const hashMap = await loadHashMap(hashMapPath);
|
|
61
|
+
if (hashMap[documentHash]) {
|
|
62
|
+
const summaryId = hashMap[documentHash];
|
|
63
|
+
const summaryFilePath = path.join(finalSummariesDir, `summary-${summaryId}.txt`);
|
|
64
|
+
const originalFilePath = path.join(finalSummariesDir, `original-${summaryId}.txt`);
|
|
65
|
+
try {
|
|
66
|
+
const [existingSummary, originalDoc] = await Promise.all([
|
|
67
|
+
fs.readFile(summaryFilePath, 'utf-8'),
|
|
68
|
+
fs.readFile(originalFilePath, 'utf-8'),
|
|
69
|
+
]);
|
|
70
|
+
const originalLines = originalDoc.split('\n').length;
|
|
71
|
+
const summaryLines = existingSummary.split('\n').length;
|
|
72
|
+
const originalChars = originalDoc.length;
|
|
73
|
+
const summaryChars = existingSummary.length;
|
|
74
|
+
const metadata = includeExpansionReferences
|
|
75
|
+
? `\n\nSummarized large output to avoid excessive tokens (${originalLines} -> ${summaryLines} lines, ${originalChars} -> ${summaryChars} chars) [Write to file with write_source(${summaryId}, file_path) or read with read_source(${summaryId}, line_start, line_end)]`
|
|
76
|
+
: `\n\nSummarized large output to avoid excessive tokens (${originalLines} -> ${summaryLines} lines, ${originalChars} -> ${summaryChars} chars)`;
|
|
77
|
+
console.log(`Retrieved summary from cache for hash: ${documentHash.substring(0, 8)}...`);
|
|
78
|
+
return existingSummary.trim() + metadata;
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
console.error(`Error reading cached summary files for ID ${summaryId}:`, error);
|
|
82
|
+
delete hashMap[documentHash];
|
|
83
|
+
await saveHashMap(hashMapPath, hashMap);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const originalDocumentForSave = document;
|
|
87
|
+
const originalLines = originalDocumentForSave.split('\n').length;
|
|
88
|
+
document = truncate(document);
|
|
89
|
+
const summary = await summaryFn(document, context);
|
|
90
|
+
const trimmedSummary = summary.trim();
|
|
91
|
+
const summaryLines = trimmedSummary.split('\n').length;
|
|
92
|
+
const newSummaryId = crypto.randomUUID();
|
|
93
|
+
const summaryFilePath = path.join(finalSummariesDir, `summary-${newSummaryId}.txt`);
|
|
94
|
+
const originalFilePath = path.join(finalSummariesDir, `original-${newSummaryId}.txt`);
|
|
95
|
+
try {
|
|
96
|
+
await Promise.all([
|
|
97
|
+
fs.writeFile(summaryFilePath, trimmedSummary, 'utf-8'),
|
|
98
|
+
fs.writeFile(originalFilePath, originalDocumentForSave, 'utf-8'),
|
|
99
|
+
]);
|
|
100
|
+
hashMap[documentHash] = newSummaryId;
|
|
101
|
+
await saveHashMap(hashMapPath, hashMap);
|
|
102
|
+
console.log(`Saved new summary with ID: ${newSummaryId} for hash: ${documentHash.substring(0, 8)}...`);
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
console.error(`Error saving new summary files for ID ${newSummaryId}:`, error);
|
|
106
|
+
return trimmedSummary;
|
|
107
|
+
}
|
|
108
|
+
const originalChars = originalDocumentForSave.length;
|
|
109
|
+
const summaryChars = trimmedSummary.length;
|
|
110
|
+
const metadata = includeExpansionReferences
|
|
111
|
+
? `\n\nSummarized large output to avoid excessive tokens (${originalLines} -> ${summaryLines} lines, ${originalChars} -> ${summaryChars} chars) [Write to file with write_source(${newSummaryId}, file_path) or read with read_source(${newSummaryId}, line_start, line_end)]`
|
|
112
|
+
: `\n\nSummarized large output to avoid excessive tokens (${originalLines} -> ${summaryLines} lines, ${originalChars} -> ${summaryChars} chars)`;
|
|
113
|
+
return trimmedSummary + metadata;
|
|
114
|
+
}
|
|
115
|
+
export async function read_source(summary_id, line_start, line_end, summariesDir) {
|
|
116
|
+
const finalSummariesDir = summariesDir || './summaries';
|
|
117
|
+
const originalFilePath = path.join(finalSummariesDir, `original-${summary_id}.txt`);
|
|
118
|
+
try {
|
|
119
|
+
let content = await fs.readFile(originalFilePath, 'utf-8');
|
|
120
|
+
if (line_start !== undefined && line_end !== undefined) {
|
|
121
|
+
const lines = content.split('\n');
|
|
122
|
+
const start = Math.max(0, line_start);
|
|
123
|
+
const end = Math.min(lines.length, line_end + 1);
|
|
124
|
+
if (start >= end || start >= lines.length) {
|
|
125
|
+
return `Error: Invalid line range requested (${line_start}-${line_end}) for document with ${lines.length} lines.`;
|
|
126
|
+
}
|
|
127
|
+
content = lines.slice(start, end).join('\n');
|
|
128
|
+
}
|
|
129
|
+
return content;
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
if (error.code === 'ENOENT') {
|
|
133
|
+
return `Error: Original document for summary ID '${summary_id}' not found at ${originalFilePath}.`;
|
|
134
|
+
}
|
|
135
|
+
console.error(`Error reading original summary source for ID ${summary_id}:`, error);
|
|
136
|
+
return `Error: Could not retrieve original document for summary ID '${summary_id}'.`;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
export async function write_source(summary_id, file_path, summariesDir) {
|
|
140
|
+
const finalSummariesDir = summariesDir || './summaries';
|
|
141
|
+
const originalFilePath = path.join(finalSummariesDir, `original-${summary_id}.txt`);
|
|
142
|
+
try {
|
|
143
|
+
const content = await fs.readFile(originalFilePath, 'utf-8');
|
|
144
|
+
if (!file_path) {
|
|
145
|
+
return 'Error: file_path is required.';
|
|
146
|
+
}
|
|
147
|
+
try {
|
|
148
|
+
const directory = path.dirname(file_path);
|
|
149
|
+
await fs.mkdir(directory, { recursive: true });
|
|
150
|
+
await fs.writeFile(file_path, content, 'utf-8');
|
|
151
|
+
console.log(`Summary written to file: ${file_path}`);
|
|
152
|
+
return `Successfully wrote ${content.length} chars to file: ${file_path}\n\nStart of content:\n\n${content.substring(0, 400)}...`;
|
|
153
|
+
}
|
|
154
|
+
catch (writeError) {
|
|
155
|
+
console.error(`Error writing summary to file ${file_path}:`, writeError);
|
|
156
|
+
return `Error: Could not write summary to file ${file_path}.`;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
if (error.code === 'ENOENT') {
|
|
161
|
+
return `Error: Original document for summary ID '${summary_id}' not found at ${originalFilePath}.`;
|
|
162
|
+
}
|
|
163
|
+
console.error(`Error reading original summary source for ID ${summary_id}:`, error);
|
|
164
|
+
return `Error: Could not retrieve original document for summary ID '${summary_id}'.`;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
export function getSummaryTools(summariesDir) {
|
|
168
|
+
const readSourceWrapper = async (summary_id, line_start, line_end) => {
|
|
169
|
+
return read_source(summary_id, line_start, line_end, summariesDir);
|
|
170
|
+
};
|
|
171
|
+
const writeSourceWrapper = async (summary_id, file_path) => {
|
|
172
|
+
return write_source(summary_id, file_path, summariesDir);
|
|
173
|
+
};
|
|
174
|
+
return [
|
|
175
|
+
createToolFunction(readSourceWrapper, 'Read the original (not summarized) document content. If possible, limit lines to limit tokens returned. Results will be truncated to 1000 characters - for larger files, use write_source.', {
|
|
176
|
+
summary_id: {
|
|
177
|
+
type: 'string',
|
|
178
|
+
description: 'The unique ID of the summary.',
|
|
179
|
+
},
|
|
180
|
+
line_start: {
|
|
181
|
+
type: 'number',
|
|
182
|
+
description: 'Starting line to retrieve (0-based). Optional.',
|
|
183
|
+
optional: true,
|
|
184
|
+
},
|
|
185
|
+
line_end: {
|
|
186
|
+
type: 'number',
|
|
187
|
+
description: 'Ending line to retrieve (0-based). Optional.',
|
|
188
|
+
optional: true,
|
|
189
|
+
},
|
|
190
|
+
}),
|
|
191
|
+
createToolFunction(writeSourceWrapper, 'Write the original (not summarized) document to a file.', {
|
|
192
|
+
summary_id: {
|
|
193
|
+
type: 'string',
|
|
194
|
+
description: 'The unique ID of the summary.',
|
|
195
|
+
},
|
|
196
|
+
file_path: {
|
|
197
|
+
type: 'string',
|
|
198
|
+
description: 'Relative or absolute path to write the document to.',
|
|
199
|
+
},
|
|
200
|
+
}),
|
|
201
|
+
];
|
|
202
|
+
}
|
|
203
|
+
export function hasExpansionTools(toolNames) {
|
|
204
|
+
return (toolNames.includes('write_source') && toolNames.includes('read_source'));
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=summary_utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summary_utils.js","sourceRoot":"","sources":["../../utils/summary_utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ToolCall } from '../types/types.js';
|
|
2
|
-
export declare function createSummary(content: string, prompt: string): Promise<string>;
|
|
3
|
-
export declare function processToolResult(toolCall: ToolCall, rawResult: string): Promise<string>;
|
|
1
|
+
import { ToolCall, type AgentDefinition } from '../types/types.js';
|
|
2
|
+
export declare function createSummary(content: string, prompt: string, agent?: AgentDefinition): Promise<string>;
|
|
3
|
+
export declare function processToolResult(toolCall: ToolCall, rawResult: string, agent?: AgentDefinition): Promise<string>;
|
|
4
4
|
export declare function shouldSummarizeResult(toolName: string, resultLength: number): boolean;
|
|
5
5
|
export declare function getTruncationMessage(toolName: string): string;
|
|
6
6
|
export declare function clearSummaryCache(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool_result_processor.d.ts","sourceRoot":"","sources":["../../utils/tool_result_processor.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,QAAQ,
|
|
1
|
+
{"version":3,"file":"tool_result_processor.d.ts","sourceRoot":"","sources":["../../utils/tool_result_processor.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,QAAQ,EAER,KAAK,eAAe,EACvB,MAAM,mBAAmB,CAAC;AAwG3B,wBAAsB,aAAa,CAC/B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,MAAM,CAAC,CA0FjB;AA6MD,wBAAsB,iBAAiB,CACnC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,MAAM,CAAC,CA8DjB;AAKD,wBAAgB,qBAAqB,CACjC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACrB,OAAO,CAST;AAKD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQ7D;AAsDD,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAKD,wBAAgB,oBAAoB,IAAI;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAaA"}
|
|
@@ -1,9 +1,45 @@
|
|
|
1
1
|
import { MAX_RESULT_LENGTH, SKIP_SUMMARIZATION_TOOLS, TOOL_CONFIGS, } from '../config/tool_execution.js';
|
|
2
2
|
import crypto from 'crypto';
|
|
3
|
+
import fs from 'fs/promises';
|
|
4
|
+
import path from 'path';
|
|
3
5
|
const SUMMARIZE_AT_CHARS = 5000;
|
|
4
6
|
const SUMMARIZE_TRUNCATE_CHARS = 200000;
|
|
5
7
|
const summaryCache = new Map();
|
|
6
8
|
const CACHE_EXPIRATION_MS = 60 * 60 * 1000;
|
|
9
|
+
const HASH_MAP_FILENAME = 'summary_hash_map.json';
|
|
10
|
+
async function ensureDir(dir) {
|
|
11
|
+
try {
|
|
12
|
+
await fs.mkdir(dir, { recursive: true });
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
if (error.code !== 'EEXIST') {
|
|
16
|
+
throw error;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
async function loadHashMap(file_path) {
|
|
21
|
+
try {
|
|
22
|
+
const data = await fs.readFile(file_path, 'utf-8');
|
|
23
|
+
return JSON.parse(data);
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
if (error.code === 'ENOENT') {
|
|
27
|
+
return {};
|
|
28
|
+
}
|
|
29
|
+
console.error(`Error loading summary hash map from ${file_path}:`, error);
|
|
30
|
+
return {};
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
async function saveHashMap(file_path, map) {
|
|
34
|
+
try {
|
|
35
|
+
const data = JSON.stringify(map, null, 2);
|
|
36
|
+
await fs.writeFile(file_path, data, 'utf-8');
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
console.error(`Error saving summary hash map to ${file_path}:`, error);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const agentsWithSummaryTools = new Set();
|
|
7
43
|
const FAILURE_PATTERNS = [
|
|
8
44
|
/error|exception|failed|timeout|rejected|unable to|cannot|not found|invalid/gi,
|
|
9
45
|
/retry.*attempt|retrying|trying again/gi,
|
|
@@ -23,7 +59,7 @@ function truncate(text, length = SUMMARIZE_TRUNCATE_CHARS, separator = '\n\n...[
|
|
|
23
59
|
separator +
|
|
24
60
|
text.substring(text.length - endLength));
|
|
25
61
|
}
|
|
26
|
-
export async function createSummary(content, prompt) {
|
|
62
|
+
export async function createSummary(content, prompt, agent) {
|
|
27
63
|
if (content.length <= SUMMARIZE_AT_CHARS) {
|
|
28
64
|
return content;
|
|
29
65
|
}
|
|
@@ -34,10 +70,14 @@ export async function createSummary(content, prompt) {
|
|
|
34
70
|
const cacheKey = `${contentHash}-${prompt.substring(0, 50)}`;
|
|
35
71
|
const cachedSummary = summaryCache.get(cacheKey);
|
|
36
72
|
if (cachedSummary &&
|
|
37
|
-
Date.now() - cachedSummary.timestamp < CACHE_EXPIRATION_MS
|
|
73
|
+
Date.now() - cachedSummary.timestamp < CACHE_EXPIRATION_MS &&
|
|
74
|
+
!agent) {
|
|
38
75
|
console.log(`Retrieved summary from cache for hash: ${contentHash.substring(0, 8)}...`);
|
|
39
76
|
return cachedSummary.summary;
|
|
40
77
|
}
|
|
78
|
+
if (agent) {
|
|
79
|
+
return createExpandableSummary(content, prompt, agent);
|
|
80
|
+
}
|
|
41
81
|
try {
|
|
42
82
|
const truncatedContent = truncate(content, SUMMARIZE_TRUNCATE_CHARS);
|
|
43
83
|
const originalLines = content.split('\n').length;
|
|
@@ -54,12 +94,12 @@ export async function createSummary(content, prompt) {
|
|
|
54
94
|
content: truncatedContent,
|
|
55
95
|
},
|
|
56
96
|
];
|
|
57
|
-
const
|
|
97
|
+
const summaryAgent = {
|
|
58
98
|
modelClass: 'summary',
|
|
59
99
|
name: 'SummaryAgent',
|
|
60
100
|
};
|
|
61
101
|
let summary = '';
|
|
62
|
-
for await (const event of ensembleRequest(messages,
|
|
102
|
+
for await (const event of ensembleRequest(messages, summaryAgent)) {
|
|
63
103
|
if (event.type === 'message_complete' && 'content' in event) {
|
|
64
104
|
summary += event.content;
|
|
65
105
|
}
|
|
@@ -71,10 +111,12 @@ export async function createSummary(content, prompt) {
|
|
|
71
111
|
const summaryLines = trimmedSummary.split('\n').length;
|
|
72
112
|
const metadata = `\n\n[Summarized output: ${originalLines} → ${summaryLines} lines, ${content.length} → ${trimmedSummary.length} chars]`;
|
|
73
113
|
const fullSummary = trimmedSummary + metadata;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
114
|
+
if (!agent) {
|
|
115
|
+
summaryCache.set(cacheKey, {
|
|
116
|
+
summary: fullSummary,
|
|
117
|
+
timestamp: Date.now(),
|
|
118
|
+
});
|
|
119
|
+
}
|
|
78
120
|
return fullSummary;
|
|
79
121
|
}
|
|
80
122
|
catch (error) {
|
|
@@ -83,7 +125,121 @@ export async function createSummary(content, prompt) {
|
|
|
83
125
|
return truncated + '\n\n[Summary generation failed, output truncated]';
|
|
84
126
|
}
|
|
85
127
|
}
|
|
86
|
-
|
|
128
|
+
async function createExpandableSummary(content, prompt, agent) {
|
|
129
|
+
const summariesDir = './summaries';
|
|
130
|
+
await ensureDir(summariesDir);
|
|
131
|
+
const hashMapPath = path.join(summariesDir, HASH_MAP_FILENAME);
|
|
132
|
+
const documentHash = crypto
|
|
133
|
+
.createHash('sha256')
|
|
134
|
+
.update(content)
|
|
135
|
+
.digest('hex');
|
|
136
|
+
const hashMap = await loadHashMap(hashMapPath);
|
|
137
|
+
if (hashMap[documentHash]) {
|
|
138
|
+
const summaryId = hashMap[documentHash];
|
|
139
|
+
const summaryFilePath = path.join(summariesDir, `summary-${summaryId}.txt`);
|
|
140
|
+
const originalFilePath = path.join(summariesDir, `original-${summaryId}.txt`);
|
|
141
|
+
try {
|
|
142
|
+
const [existingSummary, originalDoc] = await Promise.all([
|
|
143
|
+
fs.readFile(summaryFilePath, 'utf-8'),
|
|
144
|
+
fs.readFile(originalFilePath, 'utf-8'),
|
|
145
|
+
]);
|
|
146
|
+
const originalLines = originalDoc.split('\n').length;
|
|
147
|
+
const summaryLines = existingSummary.split('\n').length;
|
|
148
|
+
const originalChars = originalDoc.length;
|
|
149
|
+
const summaryChars = existingSummary.length;
|
|
150
|
+
console.log(`Retrieved expandable summary from cache for hash: ${documentHash.substring(0, 8)}...`);
|
|
151
|
+
await injectSummaryTools(agent);
|
|
152
|
+
const metadata = `\n\nSummarized large output to avoid excessive tokens (${originalLines} -> ${summaryLines} lines, ${originalChars} -> ${summaryChars} chars) [Write to file with write_source(${summaryId}, file_path) or read with read_source(${summaryId}, line_start, line_end)]`;
|
|
153
|
+
return existingSummary.trim() + metadata;
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
console.error(`Error reading cached summary files for ID ${summaryId}:`, error);
|
|
157
|
+
delete hashMap[documentHash];
|
|
158
|
+
await saveHashMap(hashMapPath, hashMap);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
const originalDocumentForSave = content;
|
|
162
|
+
const originalLines = originalDocumentForSave.split('\n').length;
|
|
163
|
+
const truncatedContent = truncate(content, SUMMARIZE_TRUNCATE_CHARS);
|
|
164
|
+
try {
|
|
165
|
+
const { ensembleRequest } = await import('../core/ensemble_request.js');
|
|
166
|
+
const messages = [
|
|
167
|
+
{
|
|
168
|
+
type: 'message',
|
|
169
|
+
role: 'system',
|
|
170
|
+
content: prompt,
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
type: 'message',
|
|
174
|
+
role: 'user',
|
|
175
|
+
content: truncatedContent,
|
|
176
|
+
},
|
|
177
|
+
];
|
|
178
|
+
const summaryAgent = {
|
|
179
|
+
modelClass: 'summary',
|
|
180
|
+
name: 'SummaryAgent',
|
|
181
|
+
};
|
|
182
|
+
let summary = '';
|
|
183
|
+
for await (const event of ensembleRequest(messages, summaryAgent)) {
|
|
184
|
+
if (event.type === 'message_complete' && 'content' in event) {
|
|
185
|
+
summary += event.content;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
if (!summary) {
|
|
189
|
+
throw new Error('No summary generated');
|
|
190
|
+
}
|
|
191
|
+
const trimmedSummary = summary.trim();
|
|
192
|
+
const summaryLines = trimmedSummary.split('\n').length;
|
|
193
|
+
const newSummaryId = crypto.randomUUID();
|
|
194
|
+
const summaryFilePath = path.join(summariesDir, `summary-${newSummaryId}.txt`);
|
|
195
|
+
const originalFilePath = path.join(summariesDir, `original-${newSummaryId}.txt`);
|
|
196
|
+
try {
|
|
197
|
+
await Promise.all([
|
|
198
|
+
fs.writeFile(summaryFilePath, trimmedSummary, 'utf-8'),
|
|
199
|
+
fs.writeFile(originalFilePath, originalDocumentForSave, 'utf-8'),
|
|
200
|
+
]);
|
|
201
|
+
hashMap[documentHash] = newSummaryId;
|
|
202
|
+
await saveHashMap(hashMapPath, hashMap);
|
|
203
|
+
console.log(`Saved new expandable summary with ID: ${newSummaryId} for hash: ${documentHash.substring(0, 8)}...`);
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
console.error(`Error saving new summary files for ID ${newSummaryId}:`, error);
|
|
207
|
+
return trimmedSummary;
|
|
208
|
+
}
|
|
209
|
+
const originalChars = originalDocumentForSave.length;
|
|
210
|
+
const summaryChars = trimmedSummary.length;
|
|
211
|
+
await injectSummaryTools(agent);
|
|
212
|
+
const metadata = `\n\nSummarized large output to avoid excessive tokens (${originalLines} -> ${summaryLines} lines, ${originalChars} -> ${summaryChars} chars) [Write to file with write_source(${newSummaryId}, file_path) or read with read_source(${newSummaryId}, line_start, line_end)]`;
|
|
213
|
+
return trimmedSummary + metadata;
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
console.error('Error creating expandable summary:', error);
|
|
217
|
+
const truncated = truncate(content, MAX_RESULT_LENGTH);
|
|
218
|
+
return truncated + '\n\n[Summary generation failed, output truncated]';
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
async function injectSummaryTools(agent) {
|
|
222
|
+
const agentId = agent.agent_id || 'unknown';
|
|
223
|
+
if (agentsWithSummaryTools.has(agentId)) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
const { getSummaryTools } = await import('./summary_utils.js');
|
|
227
|
+
const summaryTools = getSummaryTools();
|
|
228
|
+
if (!agent.tools) {
|
|
229
|
+
agent.tools = [];
|
|
230
|
+
}
|
|
231
|
+
const hasReadSource = agent.tools.some(tool => tool.definition.function.name === 'read_source');
|
|
232
|
+
const hasWriteSource = agent.tools.some(tool => tool.definition.function.name === 'write_source');
|
|
233
|
+
if (!hasReadSource) {
|
|
234
|
+
agent.tools.push(summaryTools[0]);
|
|
235
|
+
}
|
|
236
|
+
if (!hasWriteSource) {
|
|
237
|
+
agent.tools.push(summaryTools[1]);
|
|
238
|
+
}
|
|
239
|
+
agentsWithSummaryTools.add(agentId);
|
|
240
|
+
console.log(`Injected summary tools into agent ${agentId}`);
|
|
241
|
+
}
|
|
242
|
+
export async function processToolResult(toolCall, rawResult, agent) {
|
|
87
243
|
const toolName = toolCall.function.name;
|
|
88
244
|
const config = TOOL_CONFIGS[toolName] || {};
|
|
89
245
|
if (rawResult.startsWith('data:image/')) {
|
|
@@ -109,7 +265,7 @@ export async function processToolResult(toolCall, rawResult) {
|
|
|
109
265
|
if (potentialIssues.isLikelyFailing) {
|
|
110
266
|
summaryPrompt += ` Note: The output appears to contain errors or issues. Please highlight any errors, failures, or problems in your summary.`;
|
|
111
267
|
}
|
|
112
|
-
const summary = await createSummary(rawResult, summaryPrompt);
|
|
268
|
+
const summary = await createSummary(rawResult, summaryPrompt, agent);
|
|
113
269
|
if (potentialIssues.isLikelyFailing && potentialIssues.issues.length > 0) {
|
|
114
270
|
return (summary +
|
|
115
271
|
`\n\n⚠️ Potential issues detected: ${potentialIssues.issues.join(', ')}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool_result_processor.js","sourceRoot":"","sources":["../../utils/tool_result_processor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tool_result_processor.js","sourceRoot":"","sources":["../../utils/tool_result_processor.ts"],"names":[],"mappings":"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"}
|