@vybestack/llxprt-code-core 0.4.2-nightly.251016.b2bc46ab → 0.4.2-nightly.251018.d0c73eea
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/src/core/geminiChat.d.ts +2 -0
- package/dist/src/core/geminiChat.js +103 -33
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/providers/openai/OpenAIProvider.js +1 -11
- package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
- package/dist/src/providers/tokenizers/OpenAITokenizer.d.ts +1 -0
- package/dist/src/providers/tokenizers/OpenAITokenizer.js +5 -0
- package/dist/src/providers/tokenizers/OpenAITokenizer.js.map +1 -1
- package/dist/src/services/fileDiscoveryService.d.ts +2 -0
- package/dist/src/services/fileDiscoveryService.js +58 -20
- package/dist/src/services/fileDiscoveryService.js.map +1 -1
- package/dist/src/services/history/HistoryService.d.ts +8 -0
- package/dist/src/services/history/HistoryService.js +69 -0
- package/dist/src/services/history/HistoryService.js.map +1 -1
- package/dist/src/tools/glob.js +15 -5
- package/dist/src/tools/glob.js.map +1 -1
- package/dist/src/tools/read-many-files.js +9 -10
- package/dist/src/tools/read-many-files.js.map +1 -1
- package/dist/src/tools/shell.d.ts +16 -0
- package/dist/src/tools/shell.js +154 -53
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/utils/toolOutputLimiter.d.ts +3 -0
- package/dist/src/utils/toolOutputLimiter.js +98 -18
- package/dist/src/utils/toolOutputLimiter.js.map +1 -1
- package/package.json +1 -1
package/dist/src/tools/shell.js
CHANGED
|
@@ -7,6 +7,7 @@ import fs from 'fs';
|
|
|
7
7
|
import path from 'path';
|
|
8
8
|
import os, { EOL } from 'os';
|
|
9
9
|
import crypto from 'crypto';
|
|
10
|
+
import { spawnSync } from 'child_process';
|
|
10
11
|
import { ToolErrorType } from './tool-error.js';
|
|
11
12
|
import { BaseDeclarativeTool, BaseToolInvocation, ToolConfirmationOutcome, Kind, } from './tools.js';
|
|
12
13
|
import { getErrorMessage } from '../utils/errors.js';
|
|
@@ -58,6 +59,21 @@ class ShellToolInvocation extends BaseToolInvocation {
|
|
|
58
59
|
return confirmationDetails;
|
|
59
60
|
}
|
|
60
61
|
async execute(signal, updateOutput, terminalColumns, terminalRows) {
|
|
62
|
+
// Validate filtering parameters
|
|
63
|
+
if (this.params.head_lines) {
|
|
64
|
+
validatePositiveInteger(this.params.head_lines, 'head_lines');
|
|
65
|
+
}
|
|
66
|
+
if (this.params.tail_lines) {
|
|
67
|
+
validatePositiveInteger(this.params.tail_lines, 'tail_lines');
|
|
68
|
+
}
|
|
69
|
+
if (this.params.grep_pattern) {
|
|
70
|
+
if (!this.params.grep_pattern.trim()) {
|
|
71
|
+
throw new Error('grep_pattern cannot be empty');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (this.params.grep_flags) {
|
|
75
|
+
validateGrepFlags(this.params.grep_flags);
|
|
76
|
+
}
|
|
61
77
|
const strippedCommand = stripShellWrapper(this.params.command);
|
|
62
78
|
if (signal.aborted) {
|
|
63
79
|
return {
|
|
@@ -86,7 +102,7 @@ class ShellToolInvocation extends BaseToolInvocation {
|
|
|
86
102
|
let outputChunks = [cumulativeOutput];
|
|
87
103
|
let lastUpdateTime = Date.now();
|
|
88
104
|
let isBinaryStream = false;
|
|
89
|
-
const
|
|
105
|
+
const executionResult = await ShellExecutionService.execute(commandToExecute, cwd, (event) => {
|
|
90
106
|
if (!updateOutput) {
|
|
91
107
|
return;
|
|
92
108
|
}
|
|
@@ -126,9 +142,10 @@ class ShellToolInvocation extends BaseToolInvocation {
|
|
|
126
142
|
lastUpdateTime = Date.now();
|
|
127
143
|
}
|
|
128
144
|
}, signal, this.config.getShouldUseNodePtyShell(), terminalColumns, terminalRows);
|
|
129
|
-
const result = await
|
|
145
|
+
const result = await executionResult.result;
|
|
130
146
|
const backgroundPIDs = [];
|
|
131
|
-
|
|
147
|
+
let pgid = null;
|
|
148
|
+
if (os.platform() !== 'win32' && result) {
|
|
132
149
|
if (fs.existsSync(tempFilePath)) {
|
|
133
150
|
const pgrepLines = fs
|
|
134
151
|
.readFileSync(tempFilePath, 'utf8')
|
|
@@ -139,7 +156,7 @@ class ShellToolInvocation extends BaseToolInvocation {
|
|
|
139
156
|
console.error(`pgrep: ${line}`);
|
|
140
157
|
}
|
|
141
158
|
const pid = Number(line);
|
|
142
|
-
if (pid !== result.pid) {
|
|
159
|
+
if (result.pid && pid !== result.pid) {
|
|
143
160
|
backgroundPIDs.push(pid);
|
|
144
161
|
}
|
|
145
162
|
}
|
|
@@ -149,63 +166,91 @@ class ShellToolInvocation extends BaseToolInvocation {
|
|
|
149
166
|
console.error('missing pgrep output');
|
|
150
167
|
}
|
|
151
168
|
}
|
|
169
|
+
// Try to get the actual PGID
|
|
170
|
+
try {
|
|
171
|
+
const psResult = spawnSync('ps', [
|
|
172
|
+
'-o',
|
|
173
|
+
'pgid=',
|
|
174
|
+
'-p',
|
|
175
|
+
String(result.pid),
|
|
176
|
+
]);
|
|
177
|
+
if (psResult.status === 0 && psResult.stdout.toString().trim()) {
|
|
178
|
+
pgid = parseInt(psResult.stdout.toString().trim(), 10);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
// If we can't get the PGID, that's okay
|
|
183
|
+
console.error('Failed to get PGID:', error);
|
|
184
|
+
}
|
|
152
185
|
}
|
|
186
|
+
const rawOutput = result?.output ?? '';
|
|
187
|
+
const filterInfo = applyOutputFilters(rawOutput, this.params);
|
|
188
|
+
const filteredOutput = filterInfo.content;
|
|
153
189
|
let llmContent = '';
|
|
154
|
-
|
|
190
|
+
let returnDisplayMessage = '';
|
|
191
|
+
if (!result) {
|
|
192
|
+
llmContent = 'Command failed to execute.';
|
|
193
|
+
if (this.config.getDebugMode()) {
|
|
194
|
+
returnDisplayMessage = llmContent;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
else if (result.aborted) {
|
|
155
198
|
llmContent = 'Command was cancelled by user before it could complete.';
|
|
156
|
-
if (
|
|
157
|
-
llmContent += ` Below is the output before it was cancelled:\n${
|
|
199
|
+
if (rawOutput && rawOutput.trim()) {
|
|
200
|
+
llmContent += ` Below is the output before it was cancelled:\n${rawOutput}`;
|
|
158
201
|
}
|
|
159
202
|
else {
|
|
160
203
|
llmContent += ' There was no output before it was cancelled.';
|
|
161
204
|
}
|
|
205
|
+
if (this.config.getDebugMode()) {
|
|
206
|
+
returnDisplayMessage = llmContent;
|
|
207
|
+
}
|
|
208
|
+
else if (filteredOutput && filteredOutput.trim()) {
|
|
209
|
+
returnDisplayMessage = filteredOutput;
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
returnDisplayMessage = 'Command cancelled by user.';
|
|
213
|
+
}
|
|
162
214
|
}
|
|
163
215
|
else {
|
|
164
|
-
// Create a formatted error string for display, replacing the wrapper command
|
|
165
|
-
// with the user-facing command.
|
|
166
216
|
const finalError = result.error
|
|
167
217
|
? result.error.message.replace(commandToExecute, this.params.command)
|
|
168
218
|
: '(none)';
|
|
169
219
|
llmContent = [
|
|
170
220
|
`Command: ${this.params.command}`,
|
|
171
221
|
`Directory: ${this.params.directory || '(root)'}`,
|
|
172
|
-
`
|
|
173
|
-
`
|
|
222
|
+
`Stdout: ${filteredOutput || '(empty)'}`,
|
|
223
|
+
`Stderr: ${result.stderr || '(empty)'}`,
|
|
224
|
+
`Error: ${finalError}`,
|
|
174
225
|
`Exit Code: ${result.exitCode ?? '(none)'}`,
|
|
175
226
|
`Signal: ${result.signal ?? '(none)'}`,
|
|
176
227
|
`Background PIDs: ${backgroundPIDs.length ? backgroundPIDs.join(', ') : '(none)'}`,
|
|
177
|
-
`Process Group PGID: ${result.pid ?? '(none)'}`,
|
|
228
|
+
`Process Group PGID: ${pgid ?? result.pid ?? '(none)'}`,
|
|
178
229
|
].join('\n');
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
if (this.config.getDebugMode()) {
|
|
182
|
-
returnDisplayMessage = llmContent;
|
|
183
|
-
}
|
|
184
|
-
else {
|
|
185
|
-
if (result.output.trim()) {
|
|
186
|
-
returnDisplayMessage = result.output;
|
|
230
|
+
if (this.config.getDebugMode()) {
|
|
231
|
+
returnDisplayMessage = llmContent;
|
|
187
232
|
}
|
|
188
|
-
else {
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
returnDisplayMessage = `Command terminated by signal: ${result.signal}`;
|
|
194
|
-
}
|
|
195
|
-
else if (result.error) {
|
|
196
|
-
returnDisplayMessage = `Command failed: ${getErrorMessage(result.error)}`;
|
|
197
|
-
}
|
|
198
|
-
else if (result.exitCode !== null && result.exitCode !== 0) {
|
|
199
|
-
returnDisplayMessage = `Command exited with code: ${result.exitCode}`;
|
|
200
|
-
}
|
|
201
|
-
// If output is empty and command succeeded (code 0, no error/signal/abort),
|
|
202
|
-
// returnDisplayMessage will remain empty, which is fine.
|
|
233
|
+
else if (filteredOutput && filteredOutput.trim()) {
|
|
234
|
+
returnDisplayMessage = filteredOutput;
|
|
235
|
+
}
|
|
236
|
+
else if (result.signal) {
|
|
237
|
+
returnDisplayMessage = `Command terminated by signal: ${result.signal}`;
|
|
203
238
|
}
|
|
239
|
+
else if (result.error) {
|
|
240
|
+
returnDisplayMessage = `Command failed: ${getErrorMessage(result.error)}`;
|
|
241
|
+
}
|
|
242
|
+
else if (result.exitCode !== null && result.exitCode !== 0) {
|
|
243
|
+
returnDisplayMessage = `Command exited with code: ${result.exitCode}`;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
if (filterInfo.description && !this.config.getDebugMode()) {
|
|
247
|
+
returnDisplayMessage = returnDisplayMessage
|
|
248
|
+
? `[${filterInfo.description}]\n${returnDisplayMessage}`
|
|
249
|
+
: `[${filterInfo.description}]`;
|
|
204
250
|
}
|
|
205
|
-
let processedContent = llmContent;
|
|
206
251
|
// Check if summarization is configured
|
|
207
252
|
const summarizeConfig = this.config.getSummarizeToolOutputConfig();
|
|
208
|
-
const executionError = result
|
|
253
|
+
const executionError = result?.error
|
|
209
254
|
? {
|
|
210
255
|
error: {
|
|
211
256
|
message: result.error.message,
|
|
@@ -213,7 +258,11 @@ class ShellToolInvocation extends BaseToolInvocation {
|
|
|
213
258
|
},
|
|
214
259
|
}
|
|
215
260
|
: {};
|
|
216
|
-
|
|
261
|
+
let llmPayload = llmContent;
|
|
262
|
+
if (summarizeConfig &&
|
|
263
|
+
summarizeConfig[ShellTool.Name] &&
|
|
264
|
+
result &&
|
|
265
|
+
!result.aborted) {
|
|
217
266
|
// Get the ServerToolsProvider for summarization
|
|
218
267
|
const contentGenConfig = this.config.getContentGeneratorConfig();
|
|
219
268
|
if (contentGenConfig?.providerManager) {
|
|
@@ -223,14 +272,17 @@ class ShellToolInvocation extends BaseToolInvocation {
|
|
|
223
272
|
// TODO: Need to adapt summarizeToolOutput to use ServerToolsProvider
|
|
224
273
|
// For now, check if it's a Gemini provider and use the existing function
|
|
225
274
|
if (serverToolsProvider.name === 'gemini') {
|
|
226
|
-
|
|
275
|
+
const summary = await summarizeToolOutput(llmContent, this.config.getGeminiClient(), signal, summarizeConfig[ShellTool.Name].tokenBudget);
|
|
276
|
+
if (summary) {
|
|
277
|
+
llmPayload = summary;
|
|
278
|
+
}
|
|
227
279
|
}
|
|
228
280
|
// If not Gemini, we can't summarize yet - need provider-agnostic summarization
|
|
229
281
|
}
|
|
230
282
|
}
|
|
231
283
|
}
|
|
232
284
|
// ALWAYS apply token-based limiting at the end to protect the outer model
|
|
233
|
-
const limitedResult = limitOutputTokens(
|
|
285
|
+
const limitedResult = limitOutputTokens(llmPayload, this.config, 'run_shell_command');
|
|
234
286
|
if (limitedResult.wasTruncated) {
|
|
235
287
|
const formatted = formatLimitedOutput(limitedResult);
|
|
236
288
|
return {
|
|
@@ -252,20 +304,69 @@ class ShellToolInvocation extends BaseToolInvocation {
|
|
|
252
304
|
}
|
|
253
305
|
}
|
|
254
306
|
}
|
|
307
|
+
function applyOutputFilters(output, params) {
|
|
308
|
+
let content = output;
|
|
309
|
+
const descriptionParts = [];
|
|
310
|
+
// Apply grep filter first
|
|
311
|
+
if (params.grep_pattern) {
|
|
312
|
+
const lines = content.split('\n');
|
|
313
|
+
let filteredLines;
|
|
314
|
+
if (params.grep_flags?.includes('-v')) {
|
|
315
|
+
// Inverted grep
|
|
316
|
+
const options = params.grep_flags.includes('-i') ? 'i' : '';
|
|
317
|
+
const regex = new RegExp(params.grep_pattern, options);
|
|
318
|
+
filteredLines = lines.filter((line) => !regex.test(line));
|
|
319
|
+
}
|
|
320
|
+
else {
|
|
321
|
+
// Normal grep
|
|
322
|
+
const options = params.grep_flags?.includes('-i') ? 'i' : '';
|
|
323
|
+
const regex = new RegExp(params.grep_pattern, options);
|
|
324
|
+
filteredLines = lines.filter((line) => regex.test(line));
|
|
325
|
+
}
|
|
326
|
+
content = filteredLines.join('\n');
|
|
327
|
+
descriptionParts.push(`grep_pattern filter: "${params.grep_pattern}"`);
|
|
328
|
+
if (params.grep_flags?.length) {
|
|
329
|
+
descriptionParts.push(`flags: [${params.grep_flags.join(', ')}]`);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
// Apply head_lines filter
|
|
333
|
+
if (params.head_lines) {
|
|
334
|
+
validatePositiveInteger(params.head_lines, 'head_lines');
|
|
335
|
+
const lines = content.split('\n');
|
|
336
|
+
const headLines = lines.slice(0, params.head_lines);
|
|
337
|
+
const wasTruncated = lines.length > params.head_lines;
|
|
338
|
+
content = headLines.join('\n');
|
|
339
|
+
descriptionParts.push(`head_lines filter: showing first ${params.head_lines} lines${wasTruncated ? ` (of ${lines.length} total)` : ''}`);
|
|
340
|
+
}
|
|
341
|
+
// Apply tail_lines filter
|
|
342
|
+
if (params.tail_lines) {
|
|
343
|
+
validatePositiveInteger(params.tail_lines, 'tail_lines');
|
|
344
|
+
const lines = content.split('\n');
|
|
345
|
+
const tailLines = lines.slice(-params.tail_lines);
|
|
346
|
+
const wasTruncated = lines.length > params.tail_lines;
|
|
347
|
+
content = tailLines.join('\n');
|
|
348
|
+
descriptionParts.push(`tail_lines filter: showing last ${params.tail_lines} lines${wasTruncated ? ` (of ${lines.length} total)` : ''}`);
|
|
349
|
+
}
|
|
350
|
+
return {
|
|
351
|
+
content,
|
|
352
|
+
description: descriptionParts.length > 0 ? descriptionParts.join('; ') : undefined,
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
function validatePositiveInteger(value, paramName) {
|
|
356
|
+
if (!Number.isInteger(value) || value <= 0) {
|
|
357
|
+
throw new Error(`${paramName} must be a positive integer, got: ${value}`);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
function validateGrepFlags(flags) {
|
|
361
|
+
const validFlags = ['-i', '-v', '-E', '-F', '-x', '-w'];
|
|
362
|
+
for (const flag of flags) {
|
|
363
|
+
if (!validFlags.includes(flag)) {
|
|
364
|
+
throw new Error(`Invalid grep flag: ${flag}. Valid flags: ${validFlags.join(', ')}`);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
255
368
|
function getShellToolDescription() {
|
|
256
|
-
const returnedInfo =
|
|
257
|
-
|
|
258
|
-
The following information is returned:
|
|
259
|
-
|
|
260
|
-
Command: Executed command.
|
|
261
|
-
Directory: Directory (relative to project root) where command was executed, or \`(root)\`.
|
|
262
|
-
Stdout: Output on stdout stream. Can be \`(empty)\` or partial on error and for any unwaited background processes.
|
|
263
|
-
Stderr: Output on stderr stream. Can be \`(empty)\` or partial on error and for any unwaited background processes.
|
|
264
|
-
Error: Error or \`(none)\` if no error was reported for the subprocess.
|
|
265
|
-
Exit Code: Exit code or \`(none)\` if terminated by signal.
|
|
266
|
-
Signal: Signal number or \`(none)\` if no signal was received.
|
|
267
|
-
Background PIDs: List of background processes started or \`(none)\`.
|
|
268
|
-
Process Group PGID: Process group started or \`(none)\``;
|
|
369
|
+
const returnedInfo = `\n\n The following information is returned:\n\n Command: Executed command.\n Directory: Directory (relative to project root) where command was executed, or \`(root)\`.\n Stdout: Output on stdout stream. Can be \`(empty)\` or partial on error and for any unwaited background processes.\n Stderr: Output on stderr stream. Can be \`(empty)\` or partial on error and for any unwaited background processes.\n Error: Error or \`(none)\` if no error was reported for the subprocess.\n Exit Code: Exit code or \`(none)\` if terminated by signal.\n Signal: Signal number or \`(none)\` if no signal was received.\n Background PIDs: List of background processes started or \`(none)\`.\n Process Group PGID: Process group started or \`(none)\``;
|
|
269
370
|
if (os.platform() === 'win32') {
|
|
270
371
|
return `This tool executes a given shell command as \`cmd.exe /c <command>\`. Command can start background processes using \`start /b\`.${returnedInfo}`;
|
|
271
372
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../src/tools/shell.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../src/tools/shell.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
import { Config } from '../config/config.js';
|
|
7
7
|
export declare const DEFAULT_MAX_TOKENS = 50000;
|
|
8
8
|
export declare const DEFAULT_TRUNCATE_MODE = "warn";
|
|
9
|
+
export declare const ESCAPE_BUFFER_PERCENTAGE = 0.8;
|
|
9
10
|
export declare function estimateTokens(text: string): number;
|
|
11
|
+
export declare function getEffectiveTokenLimit(maxTokens: number): number;
|
|
10
12
|
export interface OutputLimitConfig {
|
|
11
13
|
maxTokens?: number;
|
|
12
14
|
truncateMode?: 'warn' | 'truncate' | 'sample';
|
|
@@ -23,6 +25,7 @@ export interface TruncatedOutput {
|
|
|
23
25
|
export declare function getOutputLimits(config: Config): OutputLimitConfig;
|
|
24
26
|
/**
|
|
25
27
|
* Check if content exceeds token limit and handle according to truncate mode
|
|
28
|
+
* Uses escape buffer to account for JSON stringification inflation
|
|
26
29
|
*/
|
|
27
30
|
export declare function limitOutputTokens(content: string, config: Config, toolName: string): TruncatedOutput;
|
|
28
31
|
/**
|
|
@@ -3,12 +3,60 @@
|
|
|
3
3
|
* Copyright 2025 Vybestack LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { encoding_for_model } from '@dqbd/tiktoken';
|
|
7
|
+
import { TextDecoder } from 'node:util';
|
|
6
8
|
// Default limits
|
|
7
9
|
export const DEFAULT_MAX_TOKENS = 50000;
|
|
8
10
|
export const DEFAULT_TRUNCATE_MODE = 'warn';
|
|
9
|
-
//
|
|
11
|
+
// Escape overhead buffer to account for JSON stringification inflation
|
|
12
|
+
export const ESCAPE_BUFFER_PERCENTAGE = 0.8; // Use 80% of limit to leave 20% buffer
|
|
13
|
+
let cachedEncoder = null;
|
|
14
|
+
let encoderInitFailed = false;
|
|
15
|
+
const utf8Decoder = new TextDecoder();
|
|
16
|
+
const isWindows = process.platform === 'win32';
|
|
17
|
+
function getEncoder() {
|
|
18
|
+
if (encoderInitFailed) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
if (!cachedEncoder) {
|
|
22
|
+
try {
|
|
23
|
+
cachedEncoder = encoding_for_model('gpt-4o');
|
|
24
|
+
if (!isWindows) {
|
|
25
|
+
process.once('exit', () => {
|
|
26
|
+
cachedEncoder?.free();
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch (_error) {
|
|
31
|
+
encoderInitFailed = true;
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return cachedEncoder;
|
|
36
|
+
}
|
|
37
|
+
function encodeText(text) {
|
|
38
|
+
const encoder = getEncoder();
|
|
39
|
+
if (!encoder) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
return encoder.encode(text);
|
|
44
|
+
}
|
|
45
|
+
catch (_error) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// Token estimation using tiktoken for better accuracy
|
|
10
50
|
export function estimateTokens(text) {
|
|
11
|
-
|
|
51
|
+
const encoded = encodeText(text);
|
|
52
|
+
if (encoded) {
|
|
53
|
+
return encoded.length;
|
|
54
|
+
}
|
|
55
|
+
// Fallback to simple heuristic if tiktoken fails.
|
|
56
|
+
return Math.ceil(text.length / 3);
|
|
57
|
+
}
|
|
58
|
+
export function getEffectiveTokenLimit(maxTokens) {
|
|
59
|
+
return Math.floor(maxTokens * ESCAPE_BUFFER_PERCENTAGE);
|
|
12
60
|
}
|
|
13
61
|
/**
|
|
14
62
|
* Get output limit configuration from ephemeral settings
|
|
@@ -23,17 +71,21 @@ export function getOutputLimits(config) {
|
|
|
23
71
|
}
|
|
24
72
|
/**
|
|
25
73
|
* Check if content exceeds token limit and handle according to truncate mode
|
|
74
|
+
* Uses escape buffer to account for JSON stringification inflation
|
|
26
75
|
*/
|
|
27
76
|
export function limitOutputTokens(content, config, toolName) {
|
|
28
77
|
const limits = getOutputLimits(config);
|
|
29
|
-
const
|
|
30
|
-
|
|
78
|
+
const maxTokens = limits.maxTokens ?? DEFAULT_MAX_TOKENS;
|
|
79
|
+
const effectiveLimit = getEffectiveTokenLimit(maxTokens);
|
|
80
|
+
const encodedContent = encodeText(content);
|
|
81
|
+
const tokens = encodedContent?.length ?? Math.ceil(content.length / 3);
|
|
82
|
+
if (!maxTokens || tokens <= effectiveLimit) {
|
|
31
83
|
return {
|
|
32
84
|
content,
|
|
33
85
|
wasTruncated: false,
|
|
34
86
|
};
|
|
35
87
|
}
|
|
36
|
-
// Content exceeds limit
|
|
88
|
+
// Content exceeds limit (after accounting for escape buffer)
|
|
37
89
|
const originalTokens = tokens;
|
|
38
90
|
if (limits.truncateMode === 'warn') {
|
|
39
91
|
// Return empty content with warning message
|
|
@@ -41,7 +93,7 @@ export function limitOutputTokens(content, config, toolName) {
|
|
|
41
93
|
content: '',
|
|
42
94
|
wasTruncated: true,
|
|
43
95
|
originalTokens,
|
|
44
|
-
message: `${toolName} output exceeded token limit (${originalTokens} > ${
|
|
96
|
+
message: `${toolName} output exceeded token limit (${originalTokens} > ${effectiveLimit}). The results were found but are too large to display. Please:
|
|
45
97
|
1. Use more specific search patterns or file paths to narrow results
|
|
46
98
|
2. Search for specific function/class names instead of generic terms
|
|
47
99
|
3. Look in specific directories rather than the entire codebase
|
|
@@ -49,26 +101,39 @@ export function limitOutputTokens(content, config, toolName) {
|
|
|
49
101
|
};
|
|
50
102
|
}
|
|
51
103
|
else if (limits.truncateMode === 'truncate') {
|
|
52
|
-
// Truncate content to fit within limit
|
|
53
|
-
const
|
|
54
|
-
const
|
|
104
|
+
// Truncate content to fit within effective limit (accounting for escape buffer)
|
|
105
|
+
const encoder = getEncoder();
|
|
106
|
+
const targetTokenCount = Math.max(0, Math.min(effectiveLimit, tokens));
|
|
107
|
+
let truncatedContent = '';
|
|
108
|
+
let truncatedTokenCount = 0;
|
|
109
|
+
if (encodedContent && encoder) {
|
|
110
|
+
const truncatedTokens = encodedContent.subarray(0, targetTokenCount);
|
|
111
|
+
truncatedContent = utf8Decoder.decode(encoder.decode(truncatedTokens));
|
|
112
|
+
truncatedTokenCount = truncatedTokens.length;
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
const ratio = originalTokens > 0 ? Math.min(1, targetTokenCount / originalTokens) : 0;
|
|
116
|
+
const approxChars = Math.floor(content.length * ratio);
|
|
117
|
+
truncatedContent = content.slice(0, approxChars);
|
|
118
|
+
truncatedTokenCount = Math.ceil(truncatedContent.length / 3);
|
|
119
|
+
}
|
|
55
120
|
return {
|
|
56
|
-
content: truncatedContent
|
|
121
|
+
content: `${truncatedContent}\n\n[Output truncated due to token limit]`,
|
|
57
122
|
wasTruncated: true,
|
|
58
123
|
originalTokens,
|
|
59
|
-
message: `Output truncated from ${originalTokens} to ${
|
|
124
|
+
message: `Output truncated from ${originalTokens} to ${truncatedTokenCount} tokens`,
|
|
60
125
|
};
|
|
61
126
|
}
|
|
62
127
|
else {
|
|
63
128
|
// 'sample' mode - for line-based content, sample evenly
|
|
64
129
|
const lines = content.split('\n');
|
|
65
130
|
if (lines.length > 1) {
|
|
66
|
-
const targetLines = Math.floor(
|
|
131
|
+
const targetLines = Math.max(1, Math.floor(effectiveLimit / 10)); // Rough estimate of tokens per line
|
|
67
132
|
const step = Math.ceil(lines.length / targetLines);
|
|
68
133
|
const sampledLines = [];
|
|
69
134
|
for (let i = 0; i < lines.length; i += step) {
|
|
70
135
|
sampledLines.push(lines[i]);
|
|
71
|
-
if (estimateTokens(sampledLines.join('\n')) >
|
|
136
|
+
if (estimateTokens(sampledLines.join('\n')) > effectiveLimit) {
|
|
72
137
|
break;
|
|
73
138
|
}
|
|
74
139
|
}
|
|
@@ -81,14 +146,29 @@ export function limitOutputTokens(content, config, toolName) {
|
|
|
81
146
|
};
|
|
82
147
|
}
|
|
83
148
|
else {
|
|
84
|
-
// Single line or non-line content, fall back to truncate
|
|
85
|
-
const
|
|
86
|
-
const
|
|
149
|
+
// Single line or non-line content, fall back to truncate with escape buffer
|
|
150
|
+
const encoder = getEncoder();
|
|
151
|
+
const targetTokenCount = Math.max(0, Math.min(effectiveLimit, tokens));
|
|
152
|
+
let truncatedContent = '';
|
|
153
|
+
let truncatedTokenCount = 0;
|
|
154
|
+
if (encodedContent && encoder) {
|
|
155
|
+
const truncatedTokens = encodedContent.subarray(0, targetTokenCount);
|
|
156
|
+
truncatedContent = utf8Decoder.decode(encoder.decode(truncatedTokens));
|
|
157
|
+
truncatedTokenCount = truncatedTokens.length;
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
const ratio = originalTokens > 0
|
|
161
|
+
? Math.min(1, targetTokenCount / originalTokens)
|
|
162
|
+
: 0;
|
|
163
|
+
const approxChars = Math.floor(content.length * ratio);
|
|
164
|
+
truncatedContent = content.slice(0, approxChars);
|
|
165
|
+
truncatedTokenCount = Math.ceil(truncatedContent.length / 3);
|
|
166
|
+
}
|
|
87
167
|
return {
|
|
88
|
-
content: truncatedContent
|
|
168
|
+
content: `${truncatedContent}\n\n[Output truncated due to token limit]`,
|
|
89
169
|
wasTruncated: true,
|
|
90
170
|
originalTokens,
|
|
91
|
-
message: `Output truncated from ${originalTokens} to ${
|
|
171
|
+
message: `Output truncated from ${originalTokens} to ${truncatedTokenCount} tokens`,
|
|
92
172
|
};
|
|
93
173
|
}
|
|
94
174
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolOutputLimiter.js","sourceRoot":"","sources":["../../../src/utils/toolOutputLimiter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"toolOutputLimiter.js","sourceRoot":"","sources":["../../../src/utils/toolOutputLimiter.ts"],"names":[],"mappings":"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"}
|