@inoceanlee/brc 2.1.1 → 2.1.2

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 (99) hide show
  1. package/dist/cli.js +68 -16
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/setup.d.ts +14 -0
  4. package/dist/commands/setup.js +57 -0
  5. package/dist/commands/setup.js.map +1 -0
  6. package/dist/config/manager.js +16 -8
  7. package/dist/config/manager.js.map +1 -1
  8. package/dist/config/settings.d.ts +5 -1
  9. package/dist/config/settings.js +5 -1
  10. package/dist/config/settings.js.map +1 -1
  11. package/dist/lifecycle/identity.d.ts +8 -0
  12. package/dist/lifecycle/identity.js +126 -0
  13. package/dist/lifecycle/identity.js.map +1 -0
  14. package/dist/lifecycle/lock-store.d.ts +28 -0
  15. package/dist/lifecycle/lock-store.js +204 -0
  16. package/dist/lifecycle/lock-store.js.map +1 -0
  17. package/dist/lifecycle/lock.d.ts +12 -3
  18. package/dist/lifecycle/lock.js +50 -74
  19. package/dist/lifecycle/lock.js.map +1 -1
  20. package/dist/lifecycle/processes.d.ts +5 -7
  21. package/dist/lifecycle/processes.js +106 -108
  22. package/dist/lifecycle/processes.js.map +1 -1
  23. package/dist/lifecycle/services.d.ts +1 -0
  24. package/dist/lifecycle/services.js +2 -5
  25. package/dist/lifecycle/services.js.map +1 -1
  26. package/dist/maintenance/cleanup.js +177 -71
  27. package/dist/maintenance/cleanup.js.map +1 -1
  28. package/dist/native/win32-x64/brc-process.exe +0 -0
  29. package/dist/progress.d.ts +29 -0
  30. package/dist/progress.js +159 -0
  31. package/dist/progress.js.map +1 -0
  32. package/dist/services/agent/cli.js +1 -2
  33. package/dist/services/agent/cli.js.map +1 -1
  34. package/dist/services/agent/core/config-field-definitions.d.ts +1 -0
  35. package/dist/services/agent/core/config-field-definitions.js +36 -0
  36. package/dist/services/agent/core/config-field-definitions.js.map +1 -1
  37. package/dist/services/agent/core/config-manager.d.ts +3 -5
  38. package/dist/services/agent/core/config-manager.js +64 -109
  39. package/dist/services/agent/core/config-manager.js.map +1 -1
  40. package/dist/services/agent/core/config-storage.d.ts +11 -0
  41. package/dist/services/agent/core/config-storage.js +66 -0
  42. package/dist/services/agent/core/config-storage.js.map +1 -0
  43. package/dist/services/agent/core/config.d.ts +5 -0
  44. package/dist/services/agent/core/config.js +5 -1
  45. package/dist/services/agent/core/config.js.map +1 -1
  46. package/dist/services/agent/core/handlers/filesystem-handlers.js +3 -2
  47. package/dist/services/agent/core/handlers/filesystem-handlers.js.map +1 -1
  48. package/dist/services/agent/core/tools/config.d.ts +3 -1
  49. package/dist/services/agent/core/tools/config.js +5 -66
  50. package/dist/services/agent/core/tools/config.js.map +1 -1
  51. package/dist/services/agent/core/tools/edit.js +2 -1
  52. package/dist/services/agent/core/tools/edit.js.map +1 -1
  53. package/dist/services/agent/core/tools/filesystem.js +15 -21
  54. package/dist/services/agent/core/tools/filesystem.js.map +1 -1
  55. package/dist/services/agent/core/tools/improved-process-tools.js +3 -2
  56. package/dist/services/agent/core/tools/improved-process-tools.js.map +1 -1
  57. package/dist/services/agent/core/tools/schemas.d.ts +2 -2
  58. package/dist/services/agent/core/tools/schemas.js +1 -1
  59. package/dist/services/agent/core/tools/schemas.js.map +1 -1
  60. package/dist/services/agent/core/utils/files/text-reader.d.ts +31 -0
  61. package/dist/services/agent/core/utils/files/text-reader.js +261 -0
  62. package/dist/services/agent/core/utils/files/text-reader.js.map +1 -0
  63. package/dist/services/agent/core/utils/files/text.d.ts +1 -25
  64. package/dist/services/agent/core/utils/files/text.js +6 -245
  65. package/dist/services/agent/core/utils/files/text.js.map +1 -1
  66. package/dist/services/agent/core/utils/fuzzySearchLogger.js +2 -2
  67. package/dist/services/agent/core/utils/fuzzySearchLogger.js.map +1 -1
  68. package/dist/services/agent/core/utils/toolHistory.d.ts +2 -1
  69. package/dist/services/agent/core/utils/toolHistory.js +65 -79
  70. package/dist/services/agent/core/utils/toolHistory.js.map +1 -1
  71. package/dist/services/agent/core/utils/toolHistoryStorage.d.ts +11 -0
  72. package/dist/services/agent/core/utils/toolHistoryStorage.js +135 -0
  73. package/dist/services/agent/core/utils/toolHistoryStorage.js.map +1 -0
  74. package/dist/services/agent/dispatcher.js +3 -5
  75. package/dist/services/agent/dispatcher.js.map +1 -1
  76. package/dist/services/agent/service.js +2 -1
  77. package/dist/services/agent/service.js.map +1 -1
  78. package/dist/services/agent/transport/pairing.js +24 -24
  79. package/dist/services/agent/transport/pairing.js.map +1 -1
  80. package/dist/services/relay/store/sqlite.d.ts +1 -6
  81. package/dist/services/relay/store/sqlite.js +84 -84
  82. package/dist/services/relay/store/sqlite.js.map +1 -1
  83. package/dist/traefik/core.d.ts +17 -5
  84. package/dist/traefik/core.js +70 -64
  85. package/dist/traefik/core.js.map +1 -1
  86. package/dist/traefik/input.d.ts +6 -7
  87. package/dist/traefik/input.js +46 -88
  88. package/dist/traefik/input.js.map +1 -1
  89. package/dist/traefik/manager.d.ts +13 -0
  90. package/dist/traefik/manager.js +64 -24
  91. package/dist/traefik/manager.js.map +1 -1
  92. package/dist/traefik/output.d.ts +9 -11
  93. package/dist/traefik/output.js +112 -46
  94. package/dist/traefik/output.js.map +1 -1
  95. package/dist/traefik/runtime.d.ts +1 -1
  96. package/dist/traefik/runtime.js +4 -3
  97. package/dist/traefik/runtime.js.map +1 -1
  98. package/node_modules/brc-shared/package.json +1 -1
  99. package/package.json +2 -2
@@ -13,51 +13,31 @@
13
13
  * search/replace logic should be moved here. See comment in src/tools/edit.ts.
14
14
  */
15
15
  import fs from "fs/promises";
16
- import { createReadStream } from 'fs';
17
- import { createInterface } from 'readline';
16
+ import { AGENT_DEFAULTS } from '../../config.js';
17
+ import { TextReader } from './text-reader.js';
18
18
  // TODO: Centralize these constants with filesystem.ts to avoid silent drift
19
19
  // These duplicate concepts from filesystem.ts and should be moved to a shared
20
20
  // constants module (e.g., src/utils/files/constants.ts) during reorganization
21
21
  const FILE_SIZE_LIMITS = {
22
- LARGE_FILE_THRESHOLD: 10 * 1024 * 1024, // 10MB
23
22
  LINE_COUNT_LIMIT: 10 * 1024 * 1024, // 10MB for line counting
24
23
  };
25
- const READ_PERFORMANCE_THRESHOLDS = {
26
- SMALL_READ_THRESHOLD: 100, // For very small reads
27
- DEEP_OFFSET_THRESHOLD: 1000, // For byte estimation
28
- SAMPLE_SIZE: 10000, // Sample size for estimation
29
- CHUNK_SIZE: 8192, // 8KB chunks for reverse reading
30
- };
31
24
  /**
32
25
  * Text file handler implementation
33
26
  * Binary detection is done at the factory level - this handler assumes file is text
34
27
  */
35
28
  export class TextFileHandler {
29
+ reader = new TextReader(TextFileHandler.countLines, this.generateEnhancedStatusMessage);
36
30
  canHandle(_path) {
37
31
  // Text handler accepts all files that pass the factory's binary check
38
32
  // The factory routes binary files to BinaryFileHandler before reaching here
39
33
  return true;
40
34
  }
41
- async detectTextEncoding(filePath) {
42
- const fd = await fs.open(filePath, 'r');
43
- try {
44
- const bom = Buffer.alloc(2);
45
- const { bytesRead } = await fd.read(bom, 0, bom.length, 0);
46
- if (bytesRead === 2 && bom[0] === 0xff && bom[1] === 0xfe) {
47
- return 'utf16le';
48
- }
49
- return 'utf8';
50
- }
51
- finally {
52
- await fd.close();
53
- }
54
- }
55
35
  async read(filePath, options) {
56
36
  const offset = options?.offset ?? 0;
57
- const length = options?.length ?? 1000; // Default from config
37
+ const length = options?.length ?? AGENT_DEFAULTS.fileReadLineLimit;
58
38
  const includeStatusMessage = options?.includeStatusMessage ?? true;
59
39
  // Binary detection is done at factory level - just read as text
60
- return this.readFileWithSmartPositioning(filePath, offset, length, 'text/plain', includeStatusMessage, options?.signal);
40
+ return this.reader.readFileWithSmartPositioning(filePath, offset, length, 'text/plain', includeStatusMessage, options?.signal);
61
41
  }
62
42
  async write(path, content, mode = 'rewrite') {
63
43
  if (mode === 'append') {
@@ -83,7 +63,7 @@ export class TextFileHandler {
83
63
  // For text files that aren't too large, count lines
84
64
  if (stats.isFile() && stats.size < FILE_SIZE_LIMITS.LINE_COUNT_LIMIT) {
85
65
  try {
86
- const encoding = await this.detectTextEncoding(path);
66
+ const encoding = await this.reader.detectTextEncoding(path);
87
67
  let content = await fs.readFile(path, encoding);
88
68
  if (encoding === 'utf16le' && content.charCodeAt(0) === 0xfeff) {
89
69
  content = content.slice(1);
@@ -115,25 +95,6 @@ export class TextFileHandler {
115
95
  }
116
96
  return lines.length;
117
97
  }
118
- /**
119
- * Get file line count (for files under size limit)
120
- */
121
- async getFileLineCount(filePath, signal, encoding = 'utf8') {
122
- try {
123
- const stats = await fs.stat(filePath);
124
- if (stats.size < FILE_SIZE_LIMITS.LINE_COUNT_LIMIT) {
125
- let content = await fs.readFile(filePath, { encoding, signal });
126
- if (encoding === 'utf16le' && content.charCodeAt(0) === 0xfeff) {
127
- content = content.slice(1);
128
- }
129
- return TextFileHandler.countLines(content);
130
- }
131
- }
132
- catch (error) {
133
- // If we can't read the file, return undefined
134
- }
135
- return undefined;
136
- }
137
98
  /**
138
99
  * Generate enhanced status message
139
100
  */
@@ -197,205 +158,5 @@ export class TextFileHandler {
197
158
  }
198
159
  return lines;
199
160
  }
200
- /**
201
- * Read file with smart positioning for optimal performance
202
- */
203
- async readFileWithSmartPositioning(filePath, offset, length, mimeType, includeStatusMessage = true, signal) {
204
- const stats = await fs.stat(filePath);
205
- const fileSize = stats.size;
206
- const encoding = await this.detectTextEncoding(filePath);
207
- const totalLines = await this.getFileLineCount(filePath, signal, encoding);
208
- // UTF-16LE needs character-aware streaming. Skip the two-byte BOM and keep
209
- // the same line pagination/status semantics as ordinary text reads.
210
- if (encoding === 'utf16le') {
211
- if (offset < 0) {
212
- return await this.readFromEndWithReadline(filePath, Math.abs(offset), mimeType, includeStatusMessage, totalLines, signal, 'utf16le', 2);
213
- }
214
- return await this.readFromStartWithReadline(filePath, offset, length, mimeType, includeStatusMessage, totalLines, signal, 'utf16le', 2);
215
- }
216
- // For negative offsets (tail behavior), use reverse reading
217
- if (offset < 0) {
218
- const requestedLines = Math.abs(offset);
219
- if (fileSize > FILE_SIZE_LIMITS.LARGE_FILE_THRESHOLD &&
220
- requestedLines <= READ_PERFORMANCE_THRESHOLDS.SMALL_READ_THRESHOLD) {
221
- return await this.readLastNLinesReverse(filePath, requestedLines, mimeType, includeStatusMessage, totalLines, signal);
222
- }
223
- else {
224
- return await this.readFromEndWithReadline(filePath, requestedLines, mimeType, includeStatusMessage, totalLines, signal);
225
- }
226
- }
227
- // For positive offsets
228
- else {
229
- if (fileSize < FILE_SIZE_LIMITS.LARGE_FILE_THRESHOLD || offset === 0) {
230
- return await this.readFromStartWithReadline(filePath, offset, length, mimeType, includeStatusMessage, totalLines, signal);
231
- }
232
- else {
233
- if (offset > READ_PERFORMANCE_THRESHOLDS.DEEP_OFFSET_THRESHOLD) {
234
- return await this.readFromEstimatedPosition(filePath, offset, length, mimeType, includeStatusMessage, totalLines, signal);
235
- }
236
- else {
237
- return await this.readFromStartWithReadline(filePath, offset, length, mimeType, includeStatusMessage, totalLines, signal);
238
- }
239
- }
240
- }
241
- }
242
- /**
243
- * Read last N lines efficiently by reading file backwards
244
- */
245
- async readLastNLinesReverse(filePath, n, mimeType, includeStatusMessage = true, fileTotalLines, signal) {
246
- const fd = await fs.open(filePath, 'r');
247
- try {
248
- const stats = await fd.stat();
249
- const fileSize = stats.size;
250
- let position = fileSize;
251
- let lines = [];
252
- let partialLine = '';
253
- while (position > 0 && lines.length < n) {
254
- if (signal?.aborted) {
255
- const err = new Error('Read aborted');
256
- err.code = 'ABORT_ERR';
257
- throw err;
258
- }
259
- const readSize = Math.min(READ_PERFORMANCE_THRESHOLDS.CHUNK_SIZE, position);
260
- position -= readSize;
261
- const buffer = Buffer.alloc(readSize);
262
- await fd.read(buffer, 0, readSize, position);
263
- const chunk = buffer.toString('utf-8');
264
- const text = chunk + partialLine;
265
- const chunkLines = text.split('\n');
266
- partialLine = chunkLines.shift() || '';
267
- lines = chunkLines.concat(lines);
268
- }
269
- if (position === 0 && partialLine) {
270
- lines.unshift(partialLine);
271
- }
272
- const result = lines.slice(-n);
273
- const content = includeStatusMessage
274
- ? `${this.generateEnhancedStatusMessage(result.length, -n, fileTotalLines, true)}\n\n${result.join('\n')}`
275
- : result.join('\n');
276
- return { content, mimeType, metadata: {} };
277
- }
278
- finally {
279
- await fd.close();
280
- }
281
- }
282
- /**
283
- * Read from end using readline with circular buffer
284
- */
285
- async readFromEndWithReadline(filePath, requestedLines, mimeType, includeStatusMessage = true, fileTotalLines, signal, encoding, start) {
286
- const rl = createInterface({
287
- input: createReadStream(filePath, { signal, encoding, start }),
288
- crlfDelay: Infinity
289
- });
290
- const buffer = new Array(requestedLines);
291
- let bufferIndex = 0;
292
- let totalLines = 0;
293
- for await (const line of rl) {
294
- buffer[bufferIndex] = line;
295
- bufferIndex = (bufferIndex + 1) % requestedLines;
296
- totalLines++;
297
- }
298
- rl.close();
299
- let result;
300
- if (totalLines >= requestedLines) {
301
- result = [
302
- ...buffer.slice(bufferIndex),
303
- ...buffer.slice(0, bufferIndex)
304
- ].filter(line => line !== undefined);
305
- }
306
- else {
307
- result = buffer.slice(0, totalLines);
308
- }
309
- const content = includeStatusMessage
310
- ? `${this.generateEnhancedStatusMessage(result.length, -requestedLines, fileTotalLines, true)}\n\n${result.join('\n')}`
311
- : result.join('\n');
312
- return { content, mimeType, metadata: {} };
313
- }
314
- /**
315
- * Read from start/middle using readline
316
- */
317
- async readFromStartWithReadline(filePath, offset, length, mimeType, includeStatusMessage = true, fileTotalLines, signal, encoding, start) {
318
- const rl = createInterface({
319
- input: createReadStream(filePath, { signal, encoding, start }),
320
- crlfDelay: Infinity
321
- });
322
- const result = [];
323
- let lineNumber = 0;
324
- for await (const line of rl) {
325
- if (lineNumber >= offset && result.length < length) {
326
- result.push(line);
327
- }
328
- if (result.length >= length)
329
- break;
330
- lineNumber++;
331
- }
332
- rl.close();
333
- if (includeStatusMessage) {
334
- const statusMessage = this.generateEnhancedStatusMessage(result.length, offset, fileTotalLines, false);
335
- const content = `${statusMessage}\n\n${result.join('\n')}`;
336
- return { content, mimeType, metadata: {} };
337
- }
338
- else {
339
- const content = result.join('\n');
340
- return { content, mimeType, metadata: {} };
341
- }
342
- }
343
- /**
344
- * Read from estimated byte position for very large files
345
- */
346
- async readFromEstimatedPosition(filePath, offset, length, mimeType, includeStatusMessage = true, fileTotalLines, signal) {
347
- // First, do a quick scan to estimate lines per byte
348
- const rl = createInterface({
349
- input: createReadStream(filePath, { signal }),
350
- crlfDelay: Infinity
351
- });
352
- let sampleLines = 0;
353
- let bytesRead = 0;
354
- for await (const line of rl) {
355
- bytesRead += Buffer.byteLength(line, 'utf-8') + 1;
356
- sampleLines++;
357
- if (bytesRead >= READ_PERFORMANCE_THRESHOLDS.SAMPLE_SIZE)
358
- break;
359
- }
360
- rl.close();
361
- if (sampleLines === 0) {
362
- return await this.readFromStartWithReadline(filePath, offset, length, mimeType, includeStatusMessage, fileTotalLines, signal);
363
- }
364
- // Estimate position
365
- const avgLineLength = bytesRead / sampleLines;
366
- const estimatedBytePosition = Math.floor(offset * avgLineLength);
367
- const fd = await fs.open(filePath, 'r');
368
- try {
369
- const stats = await fd.stat();
370
- const startPosition = Math.min(estimatedBytePosition, stats.size);
371
- const stream = createReadStream(filePath, { start: startPosition, signal });
372
- const rl2 = createInterface({
373
- input: stream,
374
- crlfDelay: Infinity
375
- });
376
- const result = [];
377
- let firstLineSkipped = false;
378
- for await (const line of rl2) {
379
- if (!firstLineSkipped && startPosition > 0) {
380
- firstLineSkipped = true;
381
- continue;
382
- }
383
- if (result.length < length) {
384
- result.push(line);
385
- }
386
- else {
387
- break;
388
- }
389
- }
390
- rl2.close();
391
- const content = includeStatusMessage
392
- ? `${this.generateEnhancedStatusMessage(result.length, offset, fileTotalLines, false)}\n\n${result.join('\n')}`
393
- : result.join('\n');
394
- return { content, mimeType, metadata: {} };
395
- }
396
- finally {
397
- await fd.close();
398
- }
399
- }
400
161
  }
401
162
  //# sourceMappingURL=text.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"text.js","sourceRoot":"","sources":["../../../../src/core/utils/files/text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../../../src/core/utils/files/text.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import fs from 'fs/promises';
2
2
  import path from 'path';
3
- import os from 'os';
3
+ import { resolveAgentHome } from '../config.js';
4
4
  import { appendRotatingLog } from 'brc-shared';
5
5
  const FUZZY_LOG_HEADERS = [
6
6
  'timestamp',
@@ -25,7 +25,7 @@ class FuzzySearchLogger {
25
25
  initialized = false;
26
26
  constructor() {
27
27
  // Create log file in a dedicated directory
28
- const logDir = path.join(process.env.BRC_HOME ?? path.join(os.homedir(), '.brc'), 'logs');
28
+ const logDir = path.join(resolveAgentHome(process.env), 'logs');
29
29
  this.logPath = path.join(logDir, 'fuzzy-search.log');
30
30
  }
31
31
  async ensureLogFile() {
@@ -1 +1 @@
1
- {"version":3,"file":"fuzzySearchLogger.js","sourceRoot":"","sources":["../../../src/core/utils/fuzzySearchLogger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fuzzySearchLogger.js","sourceRoot":"","sources":["../../../src/core/utils/fuzzySearchLogger.ts"],"names":[],"mappings":"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"}
@@ -33,7 +33,7 @@ declare class ToolHistory {
33
33
  private readonly MAX_STORED_OUTPUT_BYTES;
34
34
  private readonly MAX_HISTORY_FILE_SIZE_BYTES;
35
35
  private readonly HISTORY_FILE_TRIM_TARGET_BYTES;
36
- private readonly historyFile;
36
+ private readonly storage;
37
37
  private writeQueue;
38
38
  private isWriting;
39
39
  private writeInterval?;
@@ -42,6 +42,7 @@ declare class ToolHistory {
42
42
  * Load history from disk (all instances share the same file)
43
43
  */
44
44
  private loadFromDisk;
45
+ private loadLocked;
45
46
  /**
46
47
  * Trim the on-disk history file to stay under the size cap by dropping the
47
48
  * oldest entries (lines) until the kept tail fits within the trim target.
@@ -1,6 +1,5 @@
1
- import * as fs from 'fs';
2
- import * as path from 'path';
3
- import * as os from 'os';
1
+ import { resolveAgentHome } from '../config.js';
2
+ import { ToolHistoryStorage } from './toolHistoryStorage.js';
4
3
  // Format timestamp in local timezone for display
5
4
  function formatLocalTimestamp(isoTimestamp) {
6
5
  const date = new Date(isoTimestamp);
@@ -14,6 +13,18 @@ function formatLocalTimestamp(isoTimestamp) {
14
13
  hour12: false
15
14
  });
16
15
  }
16
+ function trimHistory(lines, targetBytes) {
17
+ const kept = [];
18
+ let bytes = 0;
19
+ for (let i = lines.length - 1; i >= 0; i--) {
20
+ const lineBytes = Buffer.byteLength(lines[i], 'utf-8') + 1;
21
+ if (kept.length > 0 && bytes + lineBytes > targetBytes)
22
+ break;
23
+ kept.push(lines[i]);
24
+ bytes += lineBytes;
25
+ }
26
+ return kept.reverse();
27
+ }
17
28
  class ToolHistory {
18
29
  history = [];
19
30
  MAX_ENTRIES = 1000;
@@ -41,19 +52,12 @@ class ToolHistory {
41
52
  // all the way to zero, so a single overflow doesn't cause every subsequent
42
53
  // flush to re-trim.
43
54
  HISTORY_FILE_TRIM_TARGET_BYTES = 4 * 1024 * 1024;
44
- historyFile;
55
+ storage;
45
56
  writeQueue = [];
46
57
  isWriting = false;
47
58
  writeInterval;
48
59
  constructor() {
49
- // Store history in same directory as config to keep everything together
50
- const historyDir = (process.env.BRC_HOME ?? path.join(os.homedir(), '.brc'));
51
- // Ensure directory exists
52
- if (!fs.existsSync(historyDir)) {
53
- fs.mkdirSync(historyDir, { recursive: true });
54
- }
55
- // Use append-only JSONL format (JSON Lines)
56
- this.historyFile = path.join(historyDir, 'tool-history.jsonl');
60
+ this.storage = new ToolHistoryStorage(resolveAgentHome(process.env));
57
61
  // Load existing history on startup
58
62
  this.loadFromDisk();
59
63
  // Start async write processor
@@ -64,41 +68,47 @@ class ToolHistory {
64
68
  */
65
69
  loadFromDisk() {
66
70
  try {
67
- if (!fs.existsSync(this.historyFile)) {
68
- return;
69
- }
70
- // If the file is over the cap, trim it down before reading so we
71
- // load a bounded amount.
72
- this.trimHistoryFileIfTooLarge();
73
- const content = fs.readFileSync(this.historyFile, 'utf-8');
74
- const lines = content.trim().split('\n').filter(line => line.trim());
75
- // Parse each line as JSON
76
- const records = [];
77
- for (const line of lines) {
78
- try {
79
- records.push(JSON.parse(line));
80
- }
81
- catch (e) {
82
- // Silently skip invalid lines
83
- }
84
- }
85
- // Keep only last 1000 entries, and cap on the way IN as well as on the
86
- // way out. Entries written before the cap existed are still on disk and
87
- // are well under the whole-file trim threshold, so without this the cap
88
- // does nothing for anyone upgrading with an existing history file — i.e.
89
- // for everyone it was written for.
90
- this.history = records
91
- .slice(-this.MAX_ENTRIES)
92
- .map(record => ({ ...record, output: this.capOutput(record.output) }));
93
- // If file is getting too large, trim it
94
- if (lines.length > this.MAX_ENTRIES * 2) {
95
- this.trimHistoryFile();
96
- }
71
+ this.storage.withLock(() => this.loadLocked());
97
72
  }
98
73
  catch (error) {
74
+ if (error.code === 'ELOCKED')
75
+ throw error;
99
76
  // Silently fail
100
77
  }
101
78
  }
79
+ loadLocked() {
80
+ if (this.storage.size() === 0)
81
+ return;
82
+ // If the file is over the cap, trim it down before reading so we
83
+ // load a bounded amount.
84
+ this.trimHistoryFileIfTooLarge();
85
+ const content = this.storage.readText();
86
+ if (content === null)
87
+ return;
88
+ const lines = content.trim().split('\n').filter(line => line.trim());
89
+ // Parse each line as JSON
90
+ const records = [];
91
+ for (const line of lines) {
92
+ try {
93
+ records.push(JSON.parse(line));
94
+ }
95
+ catch (e) {
96
+ // Silently skip invalid lines
97
+ }
98
+ }
99
+ // Keep only last 1000 entries, and cap on the way IN as well as on the
100
+ // way out. Entries written before the cap existed are still on disk and
101
+ // are well under the whole-file trim threshold, so without this the cap
102
+ // does nothing for anyone upgrading with an existing history file — i.e.
103
+ // for everyone it was written for.
104
+ this.history = records
105
+ .slice(-this.MAX_ENTRIES)
106
+ .map(record => ({ ...record, output: this.capOutput(record.output) }));
107
+ // If file is getting too large, trim it
108
+ if (lines.length > this.MAX_ENTRIES * 2) {
109
+ this.trimHistoryFile();
110
+ }
111
+ }
102
112
  /**
103
113
  * Trim the on-disk history file to stay under the size cap by dropping the
104
114
  * oldest entries (lines) until the kept tail fits within the trim target.
@@ -110,40 +120,18 @@ class ToolHistory {
110
120
  * exceeds the trim target — there is no useful state below that.
111
121
  */
112
122
  trimHistoryFileIfTooLarge() {
113
- let stats;
114
123
  try {
115
- if (!fs.existsSync(this.historyFile)) {
124
+ if (this.storage.size() <= this.MAX_HISTORY_FILE_SIZE_BYTES)
116
125
  return false;
117
- }
118
- stats = fs.statSync(this.historyFile);
119
- if (stats.size <= this.MAX_HISTORY_FILE_SIZE_BYTES) {
126
+ const content = this.storage.readText();
127
+ if (content === null)
120
128
  return false;
121
- }
122
- }
123
- catch (error) {
124
- return false;
125
- }
126
- try {
127
- const content = fs.readFileSync(this.historyFile, 'utf-8');
128
129
  const lines = content.split('\n').filter(line => line.length > 0);
129
130
  if (lines.length === 0) {
130
131
  return false;
131
132
  }
132
- // Walk lines from newest to oldest, accumulating bytes (line + '\n'),
133
- // and keep as many as fit within the trim target. Always keep at
134
- // least the last line.
135
- const kept = [];
136
- let bytes = 0;
137
- for (let i = lines.length - 1; i >= 0; i--) {
138
- const lineBytes = Buffer.byteLength(lines[i], 'utf-8') + 1; // +1 for '\n'
139
- if (kept.length > 0 && bytes + lineBytes > this.HISTORY_FILE_TRIM_TARGET_BYTES) {
140
- break;
141
- }
142
- kept.push(lines[i]);
143
- bytes += lineBytes;
144
- }
145
- kept.reverse();
146
- fs.writeFileSync(this.historyFile, kept.join('\n') + '\n', 'utf-8');
133
+ const kept = trimHistory(lines, this.HISTORY_FILE_TRIM_TARGET_BYTES);
134
+ this.storage.rewriteText(kept.join('\n') + '\n');
147
135
  return true;
148
136
  }
149
137
  catch (error) {
@@ -160,7 +148,7 @@ class ToolHistory {
160
148
  const keepEntries = this.history.slice(-this.MAX_ENTRIES);
161
149
  // Write them back
162
150
  const lines = keepEntries.map(entry => JSON.stringify(entry)).join('\n') + '\n';
163
- fs.writeFileSync(this.historyFile, lines, 'utf-8');
151
+ this.storage.rewriteText(lines);
164
152
  }
165
153
  catch (error) {
166
154
  // Silently fail
@@ -188,14 +176,12 @@ class ToolHistory {
188
176
  const toWrite = [...this.writeQueue];
189
177
  this.writeQueue = [];
190
178
  try {
191
- // If the on-disk file has grown past the cap, trim it down to the
192
- // target size (keeping the most recent entries) before appending.
193
- // The in-memory cache is unaffected — it is already bounded by
194
- // MAX_ENTRIES via addCall.
195
- this.trimHistoryFileIfTooLarge();
196
- // Append to file (atomic append operation)
197
- const lines = toWrite.map(entry => JSON.stringify(entry)).join('\n') + '\n';
198
- fs.appendFileSync(this.historyFile, lines, 'utf-8');
179
+ this.storage.withLock(() => {
180
+ // Read and compact while holding the same lock as every writer.
181
+ this.trimHistoryFileIfTooLarge();
182
+ const lines = toWrite.map(entry => JSON.stringify(entry)).join('\n') + '\n';
183
+ this.storage.appendText(lines);
184
+ });
199
185
  }
200
186
  catch (error) {
201
187
  // Put back in queue on failure
@@ -288,7 +274,7 @@ class ToolHistory {
288
274
  totalEntries: this.history.length,
289
275
  oldestEntry: this.history[0]?.timestamp,
290
276
  newestEntry: this.history[this.history.length - 1]?.timestamp,
291
- historyFile: this.historyFile,
277
+ historyFile: this.storage.file,
292
278
  queuedWrites: this.writeQueue.length
293
279
  };
294
280
  }
@@ -1 +1 @@
1
- {"version":3,"file":"toolHistory.js","sourceRoot":"","sources":["../../../src/core/utils/toolHistory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toolHistory.js","sourceRoot":"","sources":["../../../src/core/utils/toolHistory.ts"],"names":[],"mappings":"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"}