@vybestack/llxprt-code-core 0.1.16-nightly.250805.82080ee4 → 0.1.17-nightly.250806.56cf0612

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 (98) hide show
  1. package/dist/src/config/config.d.ts +3 -0
  2. package/dist/src/config/config.js +28 -10
  3. package/dist/src/config/config.js.map +1 -1
  4. package/dist/src/config/config.test.js +63 -0
  5. package/dist/src/config/config.test.js.map +1 -1
  6. package/dist/src/core/client.d.ts +9 -2
  7. package/dist/src/core/client.js +41 -7
  8. package/dist/src/core/client.js.map +1 -1
  9. package/dist/src/core/client.test.js +1 -1
  10. package/dist/src/core/client.test.js.map +1 -1
  11. package/dist/src/core/coreToolScheduler.d.ts +6 -1
  12. package/dist/src/core/coreToolScheduler.js +96 -61
  13. package/dist/src/core/coreToolScheduler.js.map +1 -1
  14. package/dist/src/core/coreToolScheduler.test.js +142 -0
  15. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  16. package/dist/src/core/geminiChat.d.ts +9 -0
  17. package/dist/src/core/geminiChat.js +118 -0
  18. package/dist/src/core/geminiChat.js.map +1 -1
  19. package/dist/src/core/geminiChat.test.js +1 -0
  20. package/dist/src/core/geminiChat.test.js.map +1 -1
  21. package/dist/src/ide/detect-ide.js +6 -3
  22. package/dist/src/ide/detect-ide.js.map +1 -1
  23. package/dist/src/ide/ide-installer.d.ts +0 -1
  24. package/dist/src/ide/ide-installer.js +5 -7
  25. package/dist/src/ide/ide-installer.js.map +1 -1
  26. package/dist/src/ide/ide-installer.test.js +1 -24
  27. package/dist/src/ide/ide-installer.test.js.map +1 -1
  28. package/dist/src/mcp/oauth-provider.js +5 -1
  29. package/dist/src/mcp/oauth-provider.js.map +1 -1
  30. package/dist/src/mcp/oauth-provider.test.js +85 -6
  31. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  32. package/dist/src/providers/integration/multi-provider.integration.test.js +1 -1
  33. package/dist/src/providers/integration/multi-provider.integration.test.js.map +1 -1
  34. package/dist/src/services/loopDetectionService.js +2 -4
  35. package/dist/src/services/loopDetectionService.js.map +1 -1
  36. package/dist/src/tools/glob.d.ts +4 -0
  37. package/dist/src/tools/glob.js +38 -4
  38. package/dist/src/tools/glob.js.map +1 -1
  39. package/dist/src/tools/glob.test.js +1 -0
  40. package/dist/src/tools/glob.test.js.map +1 -1
  41. package/dist/src/tools/grep.d.ts +4 -0
  42. package/dist/src/tools/grep.js +66 -10
  43. package/dist/src/tools/grep.js.map +1 -1
  44. package/dist/src/tools/grep.test.js +3 -0
  45. package/dist/src/tools/grep.test.js.map +1 -1
  46. package/dist/src/tools/ls.d.ts +4 -0
  47. package/dist/src/tools/ls.js +37 -4
  48. package/dist/src/tools/ls.js.map +1 -1
  49. package/dist/src/tools/ls.test.js +1 -0
  50. package/dist/src/tools/ls.test.js.map +1 -1
  51. package/dist/src/tools/mcp-client.d.ts +1 -1
  52. package/dist/src/tools/mcp-client.js +29 -17
  53. package/dist/src/tools/mcp-client.js.map +1 -1
  54. package/dist/src/tools/mcp-tool.js +104 -45
  55. package/dist/src/tools/mcp-tool.js.map +1 -1
  56. package/dist/src/tools/mcp-tool.test.js +280 -2
  57. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  58. package/dist/src/tools/read-many-files.js +135 -3
  59. package/dist/src/tools/read-many-files.js.map +1 -1
  60. package/dist/src/tools/read-many-files.test.js +280 -0
  61. package/dist/src/tools/read-many-files.test.js.map +1 -1
  62. package/dist/src/tools/shell.js +23 -2
  63. package/dist/src/tools/shell.js.map +1 -1
  64. package/dist/src/tools/shell.multibyte.test.js +1 -0
  65. package/dist/src/tools/shell.multibyte.test.js.map +1 -1
  66. package/dist/src/tools/shell.test.js +3 -0
  67. package/dist/src/tools/shell.test.js.map +1 -1
  68. package/dist/src/tools/tool-registry.d.ts +5 -0
  69. package/dist/src/tools/tool-registry.js +24 -1
  70. package/dist/src/tools/tool-registry.js.map +1 -1
  71. package/dist/src/tools/tool-registry.test.js +49 -0
  72. package/dist/src/tools/tool-registry.test.js.map +1 -1
  73. package/dist/src/types/modelParams.d.ts +12 -0
  74. package/dist/src/utils/fileUtils.js +1 -1
  75. package/dist/src/utils/fileUtils.js.map +1 -1
  76. package/dist/src/utils/fileUtils.test.js +13 -0
  77. package/dist/src/utils/fileUtils.test.js.map +1 -1
  78. package/dist/src/utils/memoryDiscovery.d.ts +1 -1
  79. package/dist/src/utils/memoryDiscovery.js +18 -6
  80. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  81. package/dist/src/utils/memoryDiscovery.test.js +30 -71
  82. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  83. package/dist/src/utils/paths.d.ts +11 -2
  84. package/dist/src/utils/paths.js +24 -7
  85. package/dist/src/utils/paths.js.map +1 -1
  86. package/dist/src/utils/paths.test.d.ts +6 -0
  87. package/dist/src/utils/paths.test.js +153 -0
  88. package/dist/src/utils/paths.test.js.map +1 -0
  89. package/dist/src/utils/toolOutputLimiter.d.ts +34 -0
  90. package/dist/src/utils/toolOutputLimiter.js +119 -0
  91. package/dist/src/utils/toolOutputLimiter.js.map +1 -0
  92. package/dist/src/utils/toolOutputLimiter.test.d.ts +6 -0
  93. package/dist/src/utils/toolOutputLimiter.test.js +164 -0
  94. package/dist/src/utils/toolOutputLimiter.test.js.map +1 -0
  95. package/dist/src/utils/workspaceContext.d.ts +4 -0
  96. package/dist/src/utils/workspaceContext.js +33 -0
  97. package/dist/src/utils/workspaceContext.js.map +1 -1
  98. package/package.json +1 -1
@@ -0,0 +1,119 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ // Default limits
7
+ export const DEFAULT_MAX_TOKENS = 50000;
8
+ export const DEFAULT_TRUNCATE_MODE = 'warn';
9
+ // Simple token estimation - roughly 4 characters per token
10
+ export function estimateTokens(text) {
11
+ return Math.ceil(text.length / 4);
12
+ }
13
+ /**
14
+ * Get output limit configuration from ephemeral settings
15
+ */
16
+ export function getOutputLimits(config) {
17
+ const ephemeralSettings = config.getEphemeralSettings();
18
+ return {
19
+ maxTokens: ephemeralSettings['tool-output-max-tokens'] ??
20
+ DEFAULT_MAX_TOKENS,
21
+ truncateMode: ephemeralSettings['tool-output-truncate-mode'] ?? DEFAULT_TRUNCATE_MODE,
22
+ };
23
+ }
24
+ /**
25
+ * Check if content exceeds token limit and handle according to truncate mode
26
+ */
27
+ export function limitOutputTokens(content, config, toolName) {
28
+ const limits = getOutputLimits(config);
29
+ const tokens = estimateTokens(content);
30
+ if (!limits.maxTokens || tokens <= limits.maxTokens) {
31
+ return {
32
+ content,
33
+ wasTruncated: false,
34
+ };
35
+ }
36
+ // Content exceeds limit
37
+ const originalTokens = tokens;
38
+ if (limits.truncateMode === 'warn') {
39
+ // Return empty content with warning message
40
+ return {
41
+ content: '',
42
+ wasTruncated: true,
43
+ originalTokens,
44
+ message: `${toolName} output exceeded token limit (${originalTokens} > ${limits.maxTokens}). The results were found but are too large to display. Please:
45
+ 1. Use more specific search patterns or file paths to narrow results
46
+ 2. Search for specific function/class names instead of generic terms
47
+ 3. Look in specific directories rather than the entire codebase
48
+ 4. Use exact match patterns when possible`,
49
+ };
50
+ }
51
+ else if (limits.truncateMode === 'truncate') {
52
+ // Truncate content to fit within limit
53
+ const maxChars = limits.maxTokens * 4; // Rough estimate
54
+ const truncatedContent = content.substring(0, maxChars);
55
+ return {
56
+ content: truncatedContent + '\n\n[Output truncated due to token limit]',
57
+ wasTruncated: true,
58
+ originalTokens,
59
+ message: `Output truncated from ${originalTokens} to ${limits.maxTokens} tokens`,
60
+ };
61
+ }
62
+ else {
63
+ // 'sample' mode - for line-based content, sample evenly
64
+ const lines = content.split('\n');
65
+ if (lines.length > 1) {
66
+ const targetLines = Math.floor(limits.maxTokens / 10); // Rough estimate of tokens per line
67
+ const step = Math.ceil(lines.length / targetLines);
68
+ const sampledLines = [];
69
+ for (let i = 0; i < lines.length; i += step) {
70
+ sampledLines.push(lines[i]);
71
+ if (estimateTokens(sampledLines.join('\n')) > limits.maxTokens * 0.9) {
72
+ break;
73
+ }
74
+ }
75
+ return {
76
+ content: sampledLines.join('\n') +
77
+ `\n\n[Sampled ${sampledLines.length} of ${lines.length} lines due to token limit]`,
78
+ wasTruncated: true,
79
+ originalTokens,
80
+ message: `Output sampled to fit within ${limits.maxTokens} token limit`,
81
+ };
82
+ }
83
+ else {
84
+ // Single line or non-line content, fall back to truncate
85
+ const maxChars = limits.maxTokens * 4; // Rough estimate
86
+ const truncatedContent = content.substring(0, maxChars);
87
+ return {
88
+ content: truncatedContent + '\n\n[Output truncated due to token limit]',
89
+ wasTruncated: true,
90
+ originalTokens,
91
+ message: `Output truncated from ${originalTokens} to ${limits.maxTokens} tokens`,
92
+ };
93
+ }
94
+ }
95
+ }
96
+ /**
97
+ * Format output with truncation handling
98
+ */
99
+ export function formatLimitedOutput(result) {
100
+ if (!result.wasTruncated) {
101
+ return {
102
+ llmContent: result.content,
103
+ returnDisplay: result.content,
104
+ };
105
+ }
106
+ if (result.message && !result.content) {
107
+ // Warn mode - no content
108
+ return {
109
+ llmContent: result.message,
110
+ returnDisplay: `## Token Limit Exceeded\n\n${result.message}`,
111
+ };
112
+ }
113
+ // Truncate or sample mode
114
+ return {
115
+ llmContent: result.content,
116
+ returnDisplay: result.content + (result.message ? `\n\n## Note\n${result.message}` : ''),
117
+ };
118
+ }
119
+ //# sourceMappingURL=toolOutputLimiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolOutputLimiter.js","sourceRoot":"","sources":["../../../src/utils/toolOutputLimiter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,iBAAiB;AACjB,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACxC,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAE5C,2DAA2D;AAC3D,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC;AAcD;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,MAAM,iBAAiB,GAAG,MAAM,CAAC,oBAAoB,EAAE,CAAC;IAExD,OAAO;QACL,SAAS,EACN,iBAAiB,CAAC,wBAAwB,CAAwB;YACnE,kBAAkB;QACpB,YAAY,EACT,iBAAiB,CAAC,2BAA2B,CAIhC,IAAI,qBAAqB;KAC1C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAe,EACf,MAAc,EACd,QAAgB;IAEhB,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAEvC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACpD,OAAO;YACL,OAAO;YACP,YAAY,EAAE,KAAK;SACpB,CAAC;IACJ,CAAC;IAED,wBAAwB;IACxB,MAAM,cAAc,GAAG,MAAM,CAAC;IAE9B,IAAI,MAAM,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;QACnC,4CAA4C;QAC5C,OAAO;YACL,OAAO,EAAE,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,cAAc;YACd,OAAO,EAAE,GAAG,QAAQ,iCAAiC,cAAc,MAAM,MAAM,CAAC,SAAS;;;;0CAIrD;SACrC,CAAC;IACJ,CAAC;SAAM,IAAI,MAAM,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;QAC9C,uCAAuC;QACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,iBAAiB;QACxD,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAExD,OAAO;YACL,OAAO,EAAE,gBAAgB,GAAG,2CAA2C;YACvE,YAAY,EAAE,IAAI;YAClB,cAAc;YACd,OAAO,EAAE,yBAAyB,cAAc,OAAO,MAAM,CAAC,SAAS,SAAS;SACjF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,wDAAwD;QACxD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,oCAAoC;YAC3F,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC;YACnD,MAAM,YAAY,GAAa,EAAE,CAAC;YAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC5C,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5B,IAAI,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;oBACrE,MAAM;gBACR,CAAC;YACH,CAAC;YAED,OAAO;gBACL,OAAO,EACL,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;oBACvB,gBAAgB,YAAY,CAAC,MAAM,OAAO,KAAK,CAAC,MAAM,4BAA4B;gBACpF,YAAY,EAAE,IAAI;gBAClB,cAAc;gBACd,OAAO,EAAE,gCAAgC,MAAM,CAAC,SAAS,cAAc;aACxE,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,yDAAyD;YACzD,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,iBAAiB;YACxD,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YAExD,OAAO;gBACL,OAAO,EAAE,gBAAgB,GAAG,2CAA2C;gBACvE,YAAY,EAAE,IAAI;gBAClB,cAAc;gBACd,OAAO,EAAE,yBAAyB,cAAc,OAAO,MAAM,CAAC,SAAS,SAAS;aACjF,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAuB;IAIzD,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACzB,OAAO;YACL,UAAU,EAAE,MAAM,CAAC,OAAO;YAC1B,aAAa,EAAE,MAAM,CAAC,OAAO;SAC9B,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACtC,yBAAyB;QACzB,OAAO;YACL,UAAU,EAAE,MAAM,CAAC,OAAO;YAC1B,aAAa,EAAE,8BAA8B,MAAM,CAAC,OAAO,EAAE;SAC9D,CAAC;IACJ,CAAC;IAED,0BAA0B;IAC1B,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,OAAO;QAC1B,aAAa,EACX,MAAM,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5E,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,164 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect, beforeEach, vi } from 'vitest';
7
+ import { estimateTokens, getOutputLimits, limitOutputTokens, formatLimitedOutput, DEFAULT_MAX_TOKENS, DEFAULT_TRUNCATE_MODE, } from './toolOutputLimiter.js';
8
+ describe('toolOutputLimiter', () => {
9
+ let mockConfig;
10
+ beforeEach(() => {
11
+ mockConfig = {
12
+ getEphemeralSettings: vi.fn().mockReturnValue({}),
13
+ };
14
+ });
15
+ describe('estimateTokens', () => {
16
+ it('should estimate tokens as roughly 1/4 of characters', () => {
17
+ expect(estimateTokens('hello')).toBe(2); // 5 chars / 4 = 1.25, ceil = 2
18
+ expect(estimateTokens('hello world')).toBe(3); // 11 chars / 4 = 2.75, ceil = 3
19
+ expect(estimateTokens('')).toBe(0);
20
+ expect(estimateTokens('a'.repeat(100))).toBe(25); // 100 / 4 = 25
21
+ });
22
+ });
23
+ describe('getOutputLimits', () => {
24
+ it('should return default values when no settings are provided', () => {
25
+ const limits = getOutputLimits(mockConfig);
26
+ expect(limits).toEqual({
27
+ maxTokens: DEFAULT_MAX_TOKENS,
28
+ truncateMode: DEFAULT_TRUNCATE_MODE,
29
+ });
30
+ });
31
+ it('should return configured values from ephemeral settings', () => {
32
+ mockConfig.getEphemeralSettings.mockReturnValue({
33
+ 'tool-output-max-tokens': 75000,
34
+ 'tool-output-truncate-mode': 'truncate',
35
+ });
36
+ const limits = getOutputLimits(mockConfig);
37
+ expect(limits).toEqual({
38
+ maxTokens: 75000,
39
+ truncateMode: 'truncate',
40
+ });
41
+ });
42
+ it('should handle partial settings', () => {
43
+ mockConfig.getEphemeralSettings.mockReturnValue({
44
+ 'tool-output-max-tokens': 100000,
45
+ // truncateMode not set
46
+ });
47
+ const limits = getOutputLimits(mockConfig);
48
+ expect(limits).toEqual({
49
+ maxTokens: 100000,
50
+ truncateMode: DEFAULT_TRUNCATE_MODE,
51
+ });
52
+ });
53
+ });
54
+ describe('limitOutputTokens', () => {
55
+ it('should not truncate content within limits', () => {
56
+ const content = 'This is a short message';
57
+ const result = limitOutputTokens(content, mockConfig, 'test-tool');
58
+ expect(result).toEqual({
59
+ content,
60
+ wasTruncated: false,
61
+ });
62
+ });
63
+ it('should warn when content exceeds limit in warn mode', () => {
64
+ const content = 'a'.repeat(250000); // Way over default 50k token limit
65
+ mockConfig.getEphemeralSettings.mockReturnValue({
66
+ 'tool-output-truncate-mode': 'warn',
67
+ });
68
+ const result = limitOutputTokens(content, mockConfig, 'test-tool');
69
+ expect(result.wasTruncated).toBe(true);
70
+ expect(result.content).toBe('');
71
+ expect(result.message).toContain('test-tool output exceeded token limit');
72
+ expect(result.message).toContain('62500 > 50000');
73
+ });
74
+ it('should truncate content in truncate mode', () => {
75
+ const content = 'a'.repeat(250000); // Way over default 50k token limit
76
+ mockConfig.getEphemeralSettings.mockReturnValue({
77
+ 'tool-output-truncate-mode': 'truncate',
78
+ });
79
+ const result = limitOutputTokens(content, mockConfig, 'test-tool');
80
+ expect(result.wasTruncated).toBe(true);
81
+ expect(result.content.length).toBeLessThan(content.length);
82
+ expect(result.content).toContain('[Output truncated due to token limit]');
83
+ expect(result.originalTokens).toBe(62500);
84
+ });
85
+ it('should sample lines in sample mode', () => {
86
+ const lines = Array.from({ length: 1000 }, (_, i) => `Line ${i}`);
87
+ const content = lines.join('\n');
88
+ mockConfig.getEphemeralSettings.mockReturnValue({
89
+ 'tool-output-truncate-mode': 'sample',
90
+ 'tool-output-max-tokens': 1000, // Very small limit
91
+ });
92
+ const result = limitOutputTokens(content, mockConfig, 'test-tool');
93
+ expect(result.wasTruncated).toBe(true);
94
+ expect(result.content).toContain('[Sampled');
95
+ expect(result.content).toContain('of 1000 lines due to token limit]');
96
+ expect(result.content.split('\n').length).toBeLessThan(1000);
97
+ });
98
+ it('should handle single line content in sample mode', () => {
99
+ const content = 'a'.repeat(250000); // Single line, way over limit
100
+ mockConfig.getEphemeralSettings.mockReturnValue({
101
+ 'tool-output-truncate-mode': 'sample',
102
+ });
103
+ const result = limitOutputTokens(content, mockConfig, 'test-tool');
104
+ // Should fall back to truncate behavior for single lines
105
+ expect(result.wasTruncated).toBe(true);
106
+ expect(result.content.length).toBeLessThan(content.length);
107
+ });
108
+ it('should respect custom max tokens setting', () => {
109
+ const content = 'a'.repeat(1000); // 250 tokens
110
+ mockConfig.getEphemeralSettings.mockReturnValue({
111
+ 'tool-output-max-tokens': 100,
112
+ 'tool-output-truncate-mode': 'warn',
113
+ });
114
+ const result = limitOutputTokens(content, mockConfig, 'test-tool');
115
+ expect(result.wasTruncated).toBe(true);
116
+ expect(result.message).toContain('250 > 100');
117
+ });
118
+ });
119
+ describe('formatLimitedOutput', () => {
120
+ it('should pass through non-truncated content', () => {
121
+ const result = formatLimitedOutput({
122
+ content: 'Normal content',
123
+ wasTruncated: false,
124
+ });
125
+ expect(result).toEqual({
126
+ llmContent: 'Normal content',
127
+ returnDisplay: 'Normal content',
128
+ });
129
+ });
130
+ it('should format warn mode output', () => {
131
+ const result = formatLimitedOutput({
132
+ content: '',
133
+ wasTruncated: true,
134
+ message: 'Tool output exceeded limit',
135
+ });
136
+ expect(result).toEqual({
137
+ llmContent: 'Tool output exceeded limit',
138
+ returnDisplay: '## Token Limit Exceeded\n\nTool output exceeded limit',
139
+ });
140
+ });
141
+ it('should format truncated output with message', () => {
142
+ const result = formatLimitedOutput({
143
+ content: 'Truncated content...',
144
+ wasTruncated: true,
145
+ message: 'Output was truncated',
146
+ });
147
+ expect(result).toEqual({
148
+ llmContent: 'Truncated content...',
149
+ returnDisplay: 'Truncated content...\n\n## Note\nOutput was truncated',
150
+ });
151
+ });
152
+ it('should handle truncated output without message', () => {
153
+ const result = formatLimitedOutput({
154
+ content: 'Truncated content...',
155
+ wasTruncated: true,
156
+ });
157
+ expect(result).toEqual({
158
+ llmContent: 'Truncated content...',
159
+ returnDisplay: 'Truncated content...',
160
+ });
161
+ });
162
+ });
163
+ });
164
+ //# sourceMappingURL=toolOutputLimiter.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolOutputLimiter.test.js","sourceRoot":"","sources":["../../../src/utils/toolOutputLimiter.test.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@
10
10
  */
11
11
  export declare class WorkspaceContext {
12
12
  private directories;
13
+ private initialDirectories;
13
14
  /**
14
15
  * Creates a new WorkspaceContext with the given initial directory and optional additional directories.
15
16
  * @param initialDirectory The initial working directory (usually cwd)
@@ -26,11 +27,14 @@ export declare class WorkspaceContext {
26
27
  * Internal method to add a directory with validation.
27
28
  */
28
29
  private addDirectoryInternal;
30
+ private addInitialDirectoryInternal;
29
31
  /**
30
32
  * Gets a copy of all workspace directories.
31
33
  * @returns Array of absolute directory paths
32
34
  */
33
35
  getDirectories(): readonly string[];
36
+ getInitialDirectories(): readonly string[];
37
+ setDirectories(directories: readonly string[]): void;
34
38
  /**
35
39
  * Checks if a given path is within any of the workspace directories.
36
40
  * @param pathToCheck The path to validate
@@ -12,6 +12,7 @@ import * as path from 'path';
12
12
  */
13
13
  export class WorkspaceContext {
14
14
  directories;
15
+ initialDirectories;
15
16
  /**
16
17
  * Creates a new WorkspaceContext with the given initial directory and optional additional directories.
17
18
  * @param initialDirectory The initial working directory (usually cwd)
@@ -19,9 +20,12 @@ export class WorkspaceContext {
19
20
  */
20
21
  constructor(initialDirectory, additionalDirectories = []) {
21
22
  this.directories = new Set();
23
+ this.initialDirectories = new Set();
22
24
  this.addDirectoryInternal(initialDirectory);
25
+ this.addInitialDirectoryInternal(initialDirectory);
23
26
  for (const dir of additionalDirectories) {
24
27
  this.addDirectoryInternal(dir);
28
+ this.addInitialDirectoryInternal(dir);
25
29
  }
26
30
  }
27
31
  /**
@@ -55,6 +59,26 @@ export class WorkspaceContext {
55
59
  }
56
60
  this.directories.add(realPath);
57
61
  }
62
+ addInitialDirectoryInternal(directory, basePath = process.cwd()) {
63
+ const absolutePath = path.isAbsolute(directory)
64
+ ? directory
65
+ : path.resolve(basePath, directory);
66
+ if (!fs.existsSync(absolutePath)) {
67
+ throw new Error(`Directory does not exist: ${absolutePath}`);
68
+ }
69
+ const stats = fs.statSync(absolutePath);
70
+ if (!stats.isDirectory()) {
71
+ throw new Error(`Path is not a directory: ${absolutePath}`);
72
+ }
73
+ let realPath;
74
+ try {
75
+ realPath = fs.realpathSync(absolutePath);
76
+ }
77
+ catch (_error) {
78
+ throw new Error(`Failed to resolve path: ${absolutePath}`);
79
+ }
80
+ this.initialDirectories.add(realPath);
81
+ }
58
82
  /**
59
83
  * Gets a copy of all workspace directories.
60
84
  * @returns Array of absolute directory paths
@@ -62,6 +86,15 @@ export class WorkspaceContext {
62
86
  getDirectories() {
63
87
  return Array.from(this.directories);
64
88
  }
89
+ getInitialDirectories() {
90
+ return Array.from(this.initialDirectories);
91
+ }
92
+ setDirectories(directories) {
93
+ this.directories.clear();
94
+ for (const dir of directories) {
95
+ this.addDirectoryInternal(dir);
96
+ }
97
+ }
65
98
  /**
66
99
  * Checks if a given path is within any of the workspace directories.
67
100
  * @param pathToCheck The path to validate
@@ -1 +1 @@
1
- {"version":3,"file":"workspaceContext.js","sourceRoot":"","sources":["../../../src/utils/workspaceContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspaceContext.js","sourceRoot":"","sources":["../../../src/utils/workspaceContext.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vybestack/llxprt-code-core",
3
- "version": "0.1.16-nightly.250805.82080ee4",
3
+ "version": "0.1.17-nightly.250806.56cf0612",
4
4
  "description": "LLxprt Code Core",
5
5
  "repository": {
6
6
  "type": "git",