@defai.digital/ax-cli 2.6.7 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/.ax-cli/checkpoints/2025-11-20/checkpoint-2dd84869-e62d-46c8-9885-7e45f37f36e2.json +69 -0
  2. package/.ax-cli/checkpoints/2025-11-20/checkpoint-484dc350-353f-4808-9ed1-ebb3cefdab37.json +24 -0
  3. package/.ax-cli/checkpoints/2025-11-20/checkpoint-74a18b87-6172-4215-962b-44bb9f46a662.json +69 -0
  4. package/.ax-cli/checkpoints/2025-11-20/checkpoint-870a5fb9-6e82-4ff2-8ec8-af4c251cc514.json +44 -0
  5. package/.ax-cli/checkpoints/2025-11-20/checkpoint-93946601-0e83-456c-ba47-def9713124dd.json +24 -0
  6. package/.ax-cli/checkpoints/metadata.json +62 -0
  7. package/README.md +46 -2
  8. package/dist/agent/context-manager.d.ts +3 -2
  9. package/dist/agent/context-manager.js +35 -20
  10. package/dist/agent/context-manager.js.map +1 -1
  11. package/dist/agent/dependency-resolver.d.ts +83 -0
  12. package/dist/agent/dependency-resolver.js +302 -0
  13. package/dist/agent/dependency-resolver.js.map +1 -0
  14. package/dist/agent/index.js +7 -3
  15. package/dist/agent/index.js.map +1 -1
  16. package/dist/agent/llm-agent.d.ts +63 -0
  17. package/dist/agent/llm-agent.js +250 -0
  18. package/dist/agent/llm-agent.js.map +1 -1
  19. package/dist/agent/specialized/analysis-agent.d.ts +11 -0
  20. package/dist/agent/specialized/analysis-agent.js +33 -0
  21. package/dist/agent/specialized/analysis-agent.js.map +1 -0
  22. package/dist/agent/specialized/debug-agent.d.ts +11 -0
  23. package/dist/agent/specialized/debug-agent.js +33 -0
  24. package/dist/agent/specialized/debug-agent.js.map +1 -0
  25. package/dist/agent/specialized/documentation-agent.d.ts +11 -0
  26. package/dist/agent/specialized/documentation-agent.js +33 -0
  27. package/dist/agent/specialized/documentation-agent.js.map +1 -0
  28. package/dist/agent/specialized/index.d.ts +11 -0
  29. package/dist/agent/specialized/index.js +12 -0
  30. package/dist/agent/specialized/index.js.map +1 -0
  31. package/dist/agent/specialized/performance-agent.d.ts +11 -0
  32. package/dist/agent/specialized/performance-agent.js +33 -0
  33. package/dist/agent/specialized/performance-agent.js.map +1 -0
  34. package/dist/agent/specialized/refactoring-agent.d.ts +11 -0
  35. package/dist/agent/specialized/refactoring-agent.js +33 -0
  36. package/dist/agent/specialized/refactoring-agent.js.map +1 -0
  37. package/dist/agent/specialized/testing-agent.d.ts +11 -0
  38. package/dist/agent/specialized/testing-agent.js +33 -0
  39. package/dist/agent/specialized/testing-agent.js.map +1 -0
  40. package/dist/agent/subagent-orchestrator.d.ts +124 -0
  41. package/dist/agent/subagent-orchestrator.js +345 -0
  42. package/dist/agent/subagent-orchestrator.js.map +1 -0
  43. package/dist/agent/subagent-types.d.ts +262 -0
  44. package/dist/agent/subagent-types.js +152 -0
  45. package/dist/agent/subagent-types.js.map +1 -0
  46. package/dist/agent/subagent.d.ts +88 -0
  47. package/dist/agent/subagent.js +402 -0
  48. package/dist/agent/subagent.js.map +1 -0
  49. package/dist/checkpoint/index.d.ts +9 -0
  50. package/dist/checkpoint/index.js +11 -0
  51. package/dist/checkpoint/index.js.map +1 -0
  52. package/dist/checkpoint/manager.d.ts +99 -0
  53. package/dist/checkpoint/manager.js +281 -0
  54. package/dist/checkpoint/manager.js.map +1 -0
  55. package/dist/checkpoint/storage.d.ts +31 -0
  56. package/dist/checkpoint/storage.js +265 -0
  57. package/dist/checkpoint/storage.js.map +1 -0
  58. package/dist/checkpoint/types.d.ts +111 -0
  59. package/dist/checkpoint/types.js +17 -0
  60. package/dist/checkpoint/types.js.map +1 -0
  61. package/dist/commands/rewind.d.ts +19 -0
  62. package/dist/commands/rewind.js +221 -0
  63. package/dist/commands/rewind.js.map +1 -0
  64. package/dist/hooks/use-input-handler.js +176 -0
  65. package/dist/hooks/use-input-handler.js.map +1 -1
  66. package/dist/index.js +25 -2
  67. package/dist/index.js.map +1 -1
  68. package/dist/llm/client.js +3 -2
  69. package/dist/llm/client.js.map +1 -1
  70. package/dist/mcp/client.d.ts +1 -0
  71. package/dist/mcp/client.js +27 -12
  72. package/dist/mcp/client.js.map +1 -1
  73. package/dist/mcp/transports.d.ts +0 -1
  74. package/dist/mcp/transports.js +10 -7
  75. package/dist/mcp/transports.js.map +1 -1
  76. package/dist/schemas/api-schemas.js +4 -0
  77. package/dist/schemas/api-schemas.js.map +1 -1
  78. package/dist/tools/bash.js +26 -1
  79. package/dist/tools/bash.js.map +1 -1
  80. package/dist/tools/search.js +21 -9
  81. package/dist/tools/search.js.map +1 -1
  82. package/dist/tools/text-editor.d.ts +16 -0
  83. package/dist/tools/text-editor.js +33 -0
  84. package/dist/tools/text-editor.js.map +1 -1
  85. package/dist/ui/components/chat-interface.d.ts +2 -1
  86. package/dist/ui/components/chat-interface.js +14 -10
  87. package/dist/ui/components/chat-interface.js.map +1 -1
  88. package/dist/ui/components/subagent-monitor.d.ts +29 -0
  89. package/dist/ui/components/subagent-monitor.js +150 -0
  90. package/dist/ui/components/subagent-monitor.js.map +1 -0
  91. package/dist/utils/history-manager.d.ts +16 -3
  92. package/dist/utils/history-manager.js +89 -9
  93. package/dist/utils/history-manager.js.map +1 -1
  94. package/dist/utils/incremental-analyzer.js +9 -3
  95. package/dist/utils/incremental-analyzer.js.map +1 -1
  96. package/dist/utils/json-utils.d.ts +7 -0
  97. package/dist/utils/json-utils.js +70 -2
  98. package/dist/utils/json-utils.js.map +1 -1
  99. package/dist/utils/settings-manager.js +12 -10
  100. package/dist/utils/settings-manager.js.map +1 -1
  101. package/dist/utils/text-utils.js +3 -3
  102. package/dist/utils/text-utils.js.map +1 -1
  103. package/dist/utils/token-counter.d.ts +5 -0
  104. package/dist/utils/token-counter.js +18 -3
  105. package/dist/utils/token-counter.js.map +1 -1
  106. package/package.json +2 -1
@@ -1,13 +1,19 @@
1
1
  import { ChatEntry } from "../agent/llm-agent.js";
2
2
  /**
3
3
  * HistoryManager - Manages conversation history persistence
4
- * Saves chat history to disk and restores it on app restart
4
+ * Supports both global history and directory-specific sessions
5
5
  */
6
6
  export declare class HistoryManager {
7
7
  private historyDir;
8
8
  private historyFile;
9
9
  private maxHistoryEntries;
10
- constructor(baseDir?: string, maxEntries?: number);
10
+ private currentProjectDir?;
11
+ constructor(baseDir?: string, maxEntries?: number, projectDir?: string);
12
+ /**
13
+ * Generate a session ID based on project directory path
14
+ * Uses a hash of the absolute path for consistent session identification
15
+ */
16
+ private getSessionIdForDirectory;
11
17
  /**
12
18
  * Ensure history directory exists
13
19
  */
@@ -15,6 +21,7 @@ export declare class HistoryManager {
15
21
  /**
16
22
  * Save chat history to disk
17
23
  * Only keeps the most recent entries up to maxHistoryEntries
24
+ * Uses atomic write pattern (temp file + rename) to prevent corruption
18
25
  */
19
26
  saveHistory(chatHistory: ChatEntry[]): void;
20
27
  /**
@@ -33,5 +40,11 @@ export declare class HistoryManager {
33
40
  }
34
41
  /**
35
42
  * Get the singleton HistoryManager instance
43
+ * @param projectDir Optional project directory for session-specific history
44
+ * @param force Force create new instance (useful for --continue flag)
45
+ */
46
+ export declare function getHistoryManager(projectDir?: string, force?: boolean): HistoryManager;
47
+ /**
48
+ * Reset the singleton instance (useful for testing)
36
49
  */
37
- export declare function getHistoryManager(): HistoryManager;
50
+ export declare function resetHistoryManager(): void;
@@ -1,19 +1,39 @@
1
1
  import * as fs from "fs";
2
2
  import * as path from "path";
3
+ import * as crypto from "crypto";
4
+ import * as os from "os";
3
5
  /**
4
6
  * HistoryManager - Manages conversation history persistence
5
- * Saves chat history to disk and restores it on app restart
7
+ * Supports both global history and directory-specific sessions
6
8
  */
7
9
  export class HistoryManager {
8
10
  historyDir;
9
11
  historyFile;
10
12
  maxHistoryEntries;
11
- constructor(baseDir = path.join(process.env.HOME || "~", ".ax-cli"), maxEntries = 50) {
13
+ currentProjectDir;
14
+ constructor(baseDir = path.join(os.homedir(), ".ax-cli"), maxEntries = 50, projectDir) {
12
15
  this.historyDir = baseDir;
13
- this.historyFile = path.join(baseDir, "history.json");
16
+ this.currentProjectDir = projectDir;
17
+ // Use project-specific history file if projectDir is provided
18
+ if (projectDir) {
19
+ const sessionId = this.getSessionIdForDirectory(projectDir);
20
+ this.historyFile = path.join(baseDir, "sessions", `${sessionId}.json`);
21
+ }
22
+ else {
23
+ this.historyFile = path.join(baseDir, "history.json");
24
+ }
14
25
  this.maxHistoryEntries = maxEntries;
15
26
  this.ensureHistoryDir();
16
27
  }
28
+ /**
29
+ * Generate a session ID based on project directory path
30
+ * Uses a hash of the absolute path for consistent session identification
31
+ */
32
+ getSessionIdForDirectory(dir) {
33
+ const absolutePath = path.resolve(dir);
34
+ const hash = crypto.createHash('sha256').update(absolutePath).digest('hex');
35
+ return hash.substring(0, 16); // Use first 16 chars for shorter filenames
36
+ }
17
37
  /**
18
38
  * Ensure history directory exists
19
39
  */
@@ -21,10 +41,18 @@ export class HistoryManager {
21
41
  if (!fs.existsSync(this.historyDir)) {
22
42
  fs.mkdirSync(this.historyDir, { recursive: true });
23
43
  }
44
+ // Ensure sessions directory exists if using project-specific history
45
+ if (this.currentProjectDir) {
46
+ const sessionsDir = path.join(this.historyDir, "sessions");
47
+ if (!fs.existsSync(sessionsDir)) {
48
+ fs.mkdirSync(sessionsDir, { recursive: true });
49
+ }
50
+ }
24
51
  }
25
52
  /**
26
53
  * Save chat history to disk
27
54
  * Only keeps the most recent entries up to maxHistoryEntries
55
+ * Uses atomic write pattern (temp file + rename) to prevent corruption
28
56
  */
29
57
  saveHistory(chatHistory) {
30
58
  try {
@@ -35,10 +63,34 @@ export class HistoryManager {
35
63
  ...entry,
36
64
  timestamp: entry.timestamp.toISOString(),
37
65
  }));
38
- fs.writeFileSync(this.historyFile, JSON.stringify(serialized, null, 2), "utf-8");
66
+ // Add session metadata if using project-specific history
67
+ const data = this.currentProjectDir ? {
68
+ metadata: {
69
+ projectDir: this.currentProjectDir,
70
+ lastUpdated: new Date().toISOString(),
71
+ version: 1,
72
+ },
73
+ history: serialized,
74
+ } : serialized;
75
+ // Atomic write pattern: write to temp file, then rename
76
+ // This prevents corruption if process crashes mid-write
77
+ const tempFile = `${this.historyFile}.tmp`;
78
+ fs.writeFileSync(tempFile, JSON.stringify(data, null, 2), "utf-8");
79
+ // Atomic rename - if this succeeds, we know the write was complete
80
+ fs.renameSync(tempFile, this.historyFile);
39
81
  }
40
82
  catch (error) {
41
83
  console.error("Failed to save chat history:", error);
84
+ // Clean up temp file if it exists
85
+ try {
86
+ const tempFile = `${this.historyFile}.tmp`;
87
+ if (fs.existsSync(tempFile)) {
88
+ fs.unlinkSync(tempFile);
89
+ }
90
+ }
91
+ catch {
92
+ // Ignore cleanup errors
93
+ }
42
94
  }
43
95
  }
44
96
  /**
@@ -52,8 +104,21 @@ export class HistoryManager {
52
104
  }
53
105
  const content = fs.readFileSync(this.historyFile, "utf-8");
54
106
  const parsed = JSON.parse(content);
107
+ // Handle both old format (array) and new format (object with metadata)
108
+ const historyData = Array.isArray(parsed) ? parsed : parsed.history || [];
109
+ // Validate that historyData is actually an array
110
+ if (!Array.isArray(historyData)) {
111
+ console.warn("Invalid history file format: history data is not an array");
112
+ return [];
113
+ }
55
114
  // Deserialize (convert ISO strings back to Date objects)
56
- const history = parsed.map((entry) => ({
115
+ // Filter out any invalid entries instead of crashing
116
+ const history = historyData
117
+ .filter((entry) => {
118
+ // Basic validation: must be object with required fields
119
+ return entry && typeof entry === 'object' && entry.type && entry.timestamp;
120
+ })
121
+ .map((entry) => ({
57
122
  ...entry,
58
123
  timestamp: new Date(entry.timestamp),
59
124
  }));
@@ -87,7 +152,14 @@ export class HistoryManager {
87
152
  }
88
153
  const content = fs.readFileSync(this.historyFile, "utf-8");
89
154
  const parsed = JSON.parse(content);
90
- return Array.isArray(parsed) ? parsed.length : 0;
155
+ // Handle both old format (array) and new format (object with metadata)
156
+ if (Array.isArray(parsed)) {
157
+ return parsed.length;
158
+ }
159
+ else if (parsed.history && Array.isArray(parsed.history)) {
160
+ return parsed.history.length;
161
+ }
162
+ return 0;
91
163
  }
92
164
  catch {
93
165
  return 0;
@@ -98,11 +170,19 @@ export class HistoryManager {
98
170
  let historyManagerInstance = null;
99
171
  /**
100
172
  * Get the singleton HistoryManager instance
173
+ * @param projectDir Optional project directory for session-specific history
174
+ * @param force Force create new instance (useful for --continue flag)
101
175
  */
102
- export function getHistoryManager() {
103
- if (!historyManagerInstance) {
104
- historyManagerInstance = new HistoryManager();
176
+ export function getHistoryManager(projectDir, force = false) {
177
+ if (force || !historyManagerInstance) {
178
+ historyManagerInstance = new HistoryManager(path.join(os.homedir(), ".ax-cli"), 50, projectDir);
105
179
  }
106
180
  return historyManagerInstance;
107
181
  }
182
+ /**
183
+ * Reset the singleton instance (useful for testing)
184
+ */
185
+ export function resetHistoryManager() {
186
+ historyManagerInstance = null;
187
+ }
108
188
  //# sourceMappingURL=history-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"history-manager.js","sourceRoot":"","sources":["../../src/utils/history-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B;;;GAGG;AACH,MAAM,OAAO,cAAc;IACjB,UAAU,CAAS;IACnB,WAAW,CAAS;IACpB,iBAAiB,CAAS;IAElC,YACE,UAAkB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,SAAS,CAAC,EAC/D,aAAqB,EAAE;QAEvB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACtD,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC;QACpC,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACK,gBAAgB;QACtB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACpC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,WAAwB;QAClC,IAAI,CAAC;YACH,oCAAoC;YACpC,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAEjE,+DAA+D;YAC/D,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC7C,GAAG,KAAK;gBACR,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE;aACzC,CAAC,CAAC,CAAC;YAEJ,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EACnC,OAAO,CACR,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,WAAW;QACT,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBACrC,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAEnC,yDAAyD;YACzD,MAAM,OAAO,GAAgB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,CAAC;gBACvD,GAAG,KAAK;gBACR,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;aACrC,CAAC,CAAC,CAAC;YAEJ,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;YACrD,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,YAAY;QACV,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBACpC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBACrC,OAAO,CAAC,CAAC;YACX,CAAC;YAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;CACF;AAED,qBAAqB;AACrB,IAAI,sBAAsB,GAA0B,IAAI,CAAC;AAEzD;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5B,sBAAsB,GAAG,IAAI,cAAc,EAAE,CAAC;IAChD,CAAC;IACD,OAAO,sBAAsB,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"history-manager.js","sourceRoot":"","sources":["../../src/utils/history-manager.ts"],"names":[],"mappings":"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"}
@@ -108,6 +108,9 @@ export async function getChangedFiles(config = {}) {
108
108
  continue;
109
109
  const [status, ...paths] = line.split('\t');
110
110
  const filePath = paths[0];
111
+ // Skip if no file path found
112
+ if (!filePath)
113
+ continue;
111
114
  // Skip if already in changed files
112
115
  if (changedFiles.some((f) => f.path === filePath)) {
113
116
  continue;
@@ -236,9 +239,12 @@ export function getGitInfo(baseDir = process.cwd()) {
236
239
  cwd: baseDir,
237
240
  encoding: 'utf-8',
238
241
  }).trim();
239
- const [aheadStr, behindStr] = aheadBehind.split('\t');
240
- ahead = parseInt(aheadStr, 10);
241
- behind = parseInt(behindStr, 10);
242
+ const splitParts = aheadBehind.split('\t');
243
+ if (splitParts.length >= 2) {
244
+ const [aheadStr, behindStr] = splitParts;
245
+ ahead = parseInt(aheadStr, 10);
246
+ behind = parseInt(behindStr, 10);
247
+ }
242
248
  }
243
249
  catch {
244
250
  // No upstream branch
@@ -1 +1 @@
1
- {"version":3,"file":"incremental-analyzer.js","sourceRoot":"","sources":["../../src/utils/incremental-analyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"incremental-analyzer.js","sourceRoot":"","sources":["../../src/utils/incremental-analyzer.ts"],"names":[],"mappings":"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"}
@@ -35,6 +35,13 @@ export declare function stringifyJson(data: unknown, pretty?: boolean): {
35
35
  };
36
36
  /**
37
37
  * Write JSON file with validation and formatting
38
+ * Uses atomic write pattern (temp file + rename) to prevent corruption
39
+ *
40
+ * Bug fixes:
41
+ * - Uses unique temp file names (PID + timestamp) to prevent race conditions
42
+ * - Handles cross-filesystem renames with copy+delete fallback
43
+ * - Ensures parent directory exists
44
+ * - Cleans up stale temp files
38
45
  */
39
46
  export declare function writeJsonFile<T>(filePath: string, data: T, schema?: z.ZodSchema<T>, pretty?: boolean): {
40
47
  success: true;
@@ -2,7 +2,8 @@
2
2
  * JSON Parsing Utilities
3
3
  * Centralized JSON operations with validation and error handling
4
4
  */
5
- import { readFileSync, writeFileSync } from 'fs';
5
+ import { readFileSync, writeFileSync, renameSync, unlinkSync, existsSync, copyFileSync, mkdirSync } from 'fs';
6
+ import { dirname } from 'path';
6
7
  /**
7
8
  * Parse JSON string with Zod schema validation
8
9
  */
@@ -60,8 +61,16 @@ export function stringifyJson(data, pretty = false) {
60
61
  }
61
62
  /**
62
63
  * Write JSON file with validation and formatting
64
+ * Uses atomic write pattern (temp file + rename) to prevent corruption
65
+ *
66
+ * Bug fixes:
67
+ * - Uses unique temp file names (PID + timestamp) to prevent race conditions
68
+ * - Handles cross-filesystem renames with copy+delete fallback
69
+ * - Ensures parent directory exists
70
+ * - Cleans up stale temp files
63
71
  */
64
72
  export function writeJsonFile(filePath, data, schema, pretty = true) {
73
+ let tempFile;
65
74
  try {
66
75
  // Validate before writing
67
76
  if (schema) {
@@ -77,10 +86,69 @@ export function writeJsonFile(filePath, data, schema, pretty = true) {
77
86
  if (!stringifyResult.success) {
78
87
  return stringifyResult;
79
88
  }
80
- writeFileSync(filePath, stringifyResult.json, 'utf8');
89
+ // Ensure parent directory exists (Bug #24 fix)
90
+ const dir = dirname(filePath);
91
+ if (!existsSync(dir)) {
92
+ try {
93
+ mkdirSync(dir, { recursive: true });
94
+ }
95
+ catch (mkdirError) {
96
+ return {
97
+ success: false,
98
+ error: `Cannot create directory ${dir}: ${mkdirError instanceof Error ? mkdirError.message : 'Unknown error'}`,
99
+ };
100
+ }
101
+ }
102
+ // Create unique temp file name to prevent race conditions (Bug #21 fix)
103
+ // Format: <filepath>.tmp.<pid>.<timestamp>
104
+ tempFile = `${filePath}.tmp.${process.pid}.${Date.now()}`;
105
+ // Clean up any stale temp files from this process (Bug #23 fix)
106
+ // Check if our specific temp file already exists from a crashed previous write
107
+ try {
108
+ if (existsSync(tempFile)) {
109
+ unlinkSync(tempFile);
110
+ }
111
+ }
112
+ catch {
113
+ // Ignore stale file cleanup errors
114
+ }
115
+ // Atomic write pattern: write to temp file, then rename
116
+ // This prevents corruption if process crashes during write
117
+ writeFileSync(tempFile, stringifyResult.json, 'utf8');
118
+ // Atomic rename - if this succeeds, we know the write was complete
119
+ try {
120
+ renameSync(tempFile, filePath);
121
+ }
122
+ catch (renameError) {
123
+ // Handle cross-filesystem rename (Bug #22 fix)
124
+ if (renameError.code === 'EXDEV') {
125
+ // Fallback: copy + delete (not atomic, but works across filesystems)
126
+ try {
127
+ copyFileSync(tempFile, filePath);
128
+ unlinkSync(tempFile);
129
+ }
130
+ catch (copyError) {
131
+ throw new Error(`Cross-filesystem copy failed: ${copyError instanceof Error ? copyError.message : 'Unknown error'}`);
132
+ }
133
+ }
134
+ else {
135
+ throw renameError;
136
+ }
137
+ }
81
138
  return { success: true };
82
139
  }
83
140
  catch (error) {
141
+ // Clean up temp file if it exists
142
+ if (tempFile) {
143
+ try {
144
+ if (existsSync(tempFile)) {
145
+ unlinkSync(tempFile);
146
+ }
147
+ }
148
+ catch {
149
+ // Ignore cleanup errors
150
+ }
151
+ }
84
152
  return {
85
153
  success: false,
86
154
  error: error instanceof Error ? error.message : 'Failed to write file',
@@ -1 +1 @@
1
- {"version":3,"file":"json-utils.js","sourceRoot":"","sources":["../../src/utils/json-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"json-utils.js","sourceRoot":"","sources":["../../src/utils/json-utils.ts"],"names":[],"mappings":"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"}
@@ -118,8 +118,8 @@ export class SettingsManager {
118
118
  }
119
119
  }
120
120
  const mergedSettings = { ...existingSettings, ...settings };
121
- // Use json-utils for consistent writing
122
- const writeResult = writeJsonFile(this.userSettingsPath, mergedSettings, undefined, // no schema
121
+ // Use json-utils for consistent writing with schema validation
122
+ const writeResult = writeJsonFile(this.userSettingsPath, mergedSettings, UserSettingsSchema, // validate before writing
123
123
  true // pretty
124
124
  );
125
125
  if (!writeResult.success) {
@@ -127,9 +127,10 @@ export class SettingsManager {
127
127
  }
128
128
  // Set secure permissions for API key
129
129
  chmodSync(this.userSettingsPath, 0o600);
130
- // Invalidate cache after save
131
- this.userSettingsCache = null;
132
- this.cacheTimestamp.user = 0;
130
+ // Update cache with new settings instead of invalidating
131
+ // This improves performance and prevents race conditions
132
+ this.userSettingsCache = mergedSettings;
133
+ this.cacheTimestamp.user = Date.now();
133
134
  }
134
135
  catch (error) {
135
136
  console.error("Failed to save user settings:", error instanceof Error ? error.message : "Unknown error");
@@ -212,16 +213,17 @@ export class SettingsManager {
212
213
  }
213
214
  }
214
215
  const mergedSettings = { ...existingSettings, ...settings };
215
- // Use json-utils for consistent writing
216
- const writeResult = writeJsonFile(this.projectSettingsPath, mergedSettings, undefined, // no schema
216
+ // Use json-utils for consistent writing with schema validation
217
+ const writeResult = writeJsonFile(this.projectSettingsPath, mergedSettings, ProjectSettingsSchema, // validate before writing
217
218
  true // pretty
218
219
  );
219
220
  if (!writeResult.success) {
220
221
  throw new Error(`Failed to write settings: ${writeResult.error}`);
221
222
  }
222
- // Invalidate cache after save
223
- this.projectSettingsCache = null;
224
- this.cacheTimestamp.project = 0;
223
+ // Update cache with new settings instead of invalidating
224
+ // This improves performance and prevents race conditions
225
+ this.projectSettingsCache = mergedSettings;
226
+ this.cacheTimestamp.project = Date.now();
225
227
  }
226
228
  catch (error) {
227
229
  console.error("Failed to save project settings:", error instanceof Error ? error.message : "Unknown error");
@@ -1 +1 @@
1
- {"version":3,"file":"settings-manager.js","sourceRoot":"","sources":["../../src/utils/settings-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings-manager.js","sourceRoot":"","sources":["../../src/utils/settings-manager.ts"],"names":[],"mappings":"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"}
@@ -181,11 +181,11 @@ export function deleteCharAfter(text, position) {
181
181
  */
182
182
  export function insertText(text, position, insert) {
183
183
  const newText = text.slice(0, position) + insert + text.slice(position);
184
- // Use grapheme-aware length for correct cursor position with emoji/Unicode
185
- const insertGraphemes = [...insert].length;
184
+ // Use code unit length for position since String operations use code units, not graphemes
185
+ // This ensures cursor position stays aligned with String.length and slice operations
186
186
  return {
187
187
  text: newText,
188
- position: position + insertGraphemes,
188
+ position: position + insert.length,
189
189
  };
190
190
  }
191
191
  //# sourceMappingURL=text-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"text-utils.js","sourceRoot":"","sources":["../../src/utils/text-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAwB;IACrD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,QAAgB;IAC1D,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAE5B,IAAI,GAAG,GAAG,QAAQ,GAAG,CAAC,CAAC;IACvB,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC7C,GAAG,EAAE,CAAC;IACR,CAAC;IAED,0EAA0E;IAC1E,IAAI,GAAG,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACzC,GAAG,EAAE,CAAC;IACR,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,QAAgB;IACxD,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC;IAEhD,IAAI,GAAG,GAAG,QAAQ,CAAC;IACnB,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACvD,GAAG,EAAE,CAAC;IACR,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,QAAgB;IAC/D,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAE5B,IAAI,GAAG,GAAG,QAAQ,GAAG,CAAC,CAAC;IAEvB,kBAAkB;IAClB,OAAO,GAAG,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC5C,GAAG,EAAE,CAAC;IACR,CAAC;IAED,yBAAyB;IACzB,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,GAAG,EAAE,CAAC;IACR,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,QAAgB;IAC3D,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC;IAEhD,IAAI,GAAG,GAAG,QAAQ,CAAC;IAEnB,oBAAoB;IACpB,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACvD,GAAG,EAAE,CAAC;IACR,CAAC;IAED,kBAAkB;IAClB,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACtD,GAAG,EAAE,CAAC;IACR,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,QAAgB;IAC7D,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEhE,OAAO;QACL,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,SAAS;KACpB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,QAAgB;IAC5D,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE9D,OAAO;QACL,IAAI,EAAE,OAAO;QACb,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,KAAa;IACzD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1C,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,cAAc,GAAG,CAAC,CAAC,CAAC;IAExB,yCAAyC;IACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7B,IAAI,EAAE,CAAC;YACP,cAAc,GAAG,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,cAAc,GAAG,CAAC,CAAC;IAE1E,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,QAAgB;IAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC7C,MAAM,gBAAgB,GAAG,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACxD,OAAO,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,QAAgB;IAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,gBAAgB,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,OAAO,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,GAAG,gBAAgB,CAAC;AAC7E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,QAAgB;IAC7D,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;QAClB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAED,kDAAkD;IAClD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAE7C,0DAA0D;IAC1D,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;QAClB,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACnD,IAAI,gBAAgB,IAAI,QAAQ,IAAI,gBAAgB,IAAI,QAAQ;YAC5D,UAAU,IAAI,QAAQ,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC;YACrD,WAAW,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7E,OAAO;QACL,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,QAAQ,GAAG,WAAW;KACjC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,QAAgB;IAC5D,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAED,kDAAkD;IAClD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAExC,0DAA0D;IAC1D,IAAI,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACjD,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ;YAC9C,cAAc,IAAI,QAAQ,IAAI,cAAc,IAAI,QAAQ,EAAE,CAAC;YAC7D,WAAW,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC,CAAC;IAC7E,OAAO;QACL,IAAI,EAAE,OAAO;QACb,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,QAAgB,EAAE,MAAc;IACvE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxE,2EAA2E;IAC3E,MAAM,eAAe,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC;IAC3C,OAAO;QACL,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,QAAQ,GAAG,eAAe;KACrC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"text-utils.js","sourceRoot":"","sources":["../../src/utils/text-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAwB;IACrD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,QAAgB;IAC1D,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAE5B,IAAI,GAAG,GAAG,QAAQ,GAAG,CAAC,CAAC;IACvB,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC7C,GAAG,EAAE,CAAC;IACR,CAAC;IAED,0EAA0E;IAC1E,IAAI,GAAG,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACzC,GAAG,EAAE,CAAC;IACR,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,QAAgB;IACxD,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC;IAEhD,IAAI,GAAG,GAAG,QAAQ,CAAC;IACnB,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACvD,GAAG,EAAE,CAAC;IACR,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,QAAgB;IAC/D,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAE5B,IAAI,GAAG,GAAG,QAAQ,GAAG,CAAC,CAAC;IAEvB,kBAAkB;IAClB,OAAO,GAAG,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC5C,GAAG,EAAE,CAAC;IACR,CAAC;IAED,yBAAyB;IACzB,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,GAAG,EAAE,CAAC;IACR,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,QAAgB;IAC3D,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC;IAEhD,IAAI,GAAG,GAAG,QAAQ,CAAC;IAEnB,oBAAoB;IACpB,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACvD,GAAG,EAAE,CAAC;IACR,CAAC;IAED,kBAAkB;IAClB,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACtD,GAAG,EAAE,CAAC;IACR,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,QAAgB;IAC7D,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEhE,OAAO;QACL,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,SAAS;KACpB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,QAAgB;IAC5D,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE9D,OAAO;QACL,IAAI,EAAE,OAAO;QACb,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,KAAa;IACzD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1C,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,cAAc,GAAG,CAAC,CAAC,CAAC;IAExB,yCAAyC;IACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7B,IAAI,EAAE,CAAC;YACP,cAAc,GAAG,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,cAAc,GAAG,CAAC,CAAC;IAE1E,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,QAAgB;IAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC7C,MAAM,gBAAgB,GAAG,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACxD,OAAO,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,QAAgB;IAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,gBAAgB,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,OAAO,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,GAAG,gBAAgB,CAAC;AAC7E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,QAAgB;IAC7D,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;QAClB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAED,kDAAkD;IAClD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAE7C,0DAA0D;IAC1D,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;QAClB,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACnD,IAAI,gBAAgB,IAAI,QAAQ,IAAI,gBAAgB,IAAI,QAAQ;YAC5D,UAAU,IAAI,QAAQ,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC;YACrD,WAAW,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7E,OAAO;QACL,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,QAAQ,GAAG,WAAW;KACjC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,QAAgB;IAC5D,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAED,kDAAkD;IAClD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAExC,0DAA0D;IAC1D,IAAI,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACjD,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ;YAC9C,cAAc,IAAI,QAAQ,IAAI,cAAc,IAAI,QAAQ,EAAE,CAAC;YAC7D,WAAW,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC,CAAC;IAC7E,OAAO;QACL,IAAI,EAAE,OAAO;QACb,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,QAAgB,EAAE,MAAc;IACvE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxE,0FAA0F;IAC1F,qFAAqF;IACrF,OAAO;QACL,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM;KACnC,CAAC;AACJ,CAAC"}
@@ -3,6 +3,11 @@ export declare class TokenCounter {
3
3
  private encoder;
4
4
  private cache;
5
5
  constructor(model?: string);
6
+ /**
7
+ * Create cache key from text
8
+ * For long texts, use hash to avoid storing large keys in memory
9
+ */
10
+ private createCacheKey;
6
11
  /**
7
12
  * Count tokens in a string with LRU caching for performance
8
13
  */
@@ -1,6 +1,7 @@
1
1
  import { get_encoding, encoding_for_model } from 'tiktoken';
2
2
  import { TOKEN_CONFIG } from '../constants.js';
3
3
  import { LRUCache } from './cache.js';
4
+ import * as crypto from 'crypto';
4
5
  export class TokenCounter {
5
6
  encoder;
6
7
  cache;
@@ -16,21 +17,35 @@ export class TokenCounter {
16
17
  // Initialize cache with configured limit
17
18
  this.cache = new LRUCache({ maxSize: TOKEN_CONFIG.CACHE_MAX_SIZE });
18
19
  }
20
+ /**
21
+ * Create cache key from text
22
+ * For long texts, use hash to avoid storing large keys in memory
23
+ */
24
+ createCacheKey(text) {
25
+ // For short texts (< 1KB), use text directly as key
26
+ if (text.length < 1024) {
27
+ return text;
28
+ }
29
+ // For longer texts, use SHA-256 hash to reduce memory footprint
30
+ // A 10KB text becomes a 64-char hash, saving ~9.9KB per cache entry
31
+ return crypto.createHash('sha256').update(text).digest('hex');
32
+ }
19
33
  /**
20
34
  * Count tokens in a string with LRU caching for performance
21
35
  */
22
36
  countTokens(text) {
23
37
  if (!text)
24
38
  return 0;
25
- // Check cache first
26
- const cached = this.cache.get(text);
39
+ // Check cache first using efficient key
40
+ const cacheKey = this.createCacheKey(text);
41
+ const cached = this.cache.get(cacheKey);
27
42
  if (cached !== undefined) {
28
43
  return cached;
29
44
  }
30
45
  // Count tokens
31
46
  const count = this.encoder.encode(text).length;
32
47
  // Add to cache (LRU eviction handled automatically)
33
- this.cache.set(text, count);
48
+ this.cache.set(cacheKey, count);
34
49
  return count;
35
50
  }
36
51
  /**