@defai.digital/ax-cli 3.6.1 → 3.7.1

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 (137) hide show
  1. package/README.md +129 -16
  2. package/config-defaults/settings.yaml +24 -0
  3. package/dist/agent/llm-agent.d.ts +48 -3
  4. package/dist/agent/llm-agent.js +145 -40
  5. package/dist/agent/llm-agent.js.map +1 -1
  6. package/dist/agent/subagent.d.ts +6 -0
  7. package/dist/agent/subagent.js +41 -24
  8. package/dist/agent/subagent.js.map +1 -1
  9. package/dist/constants.d.ts +13 -0
  10. package/dist/constants.js +28 -0
  11. package/dist/constants.js.map +1 -1
  12. package/dist/index.js +0 -0
  13. package/dist/mcp/client.js +2 -2
  14. package/dist/mcp/client.js.map +1 -1
  15. package/dist/schemas/settings-schemas.d.ts +17 -0
  16. package/dist/schemas/settings-schemas.js +15 -0
  17. package/dist/schemas/settings-schemas.js.map +1 -1
  18. package/dist/sdk/errors.d.ts +93 -0
  19. package/dist/sdk/errors.js +124 -0
  20. package/dist/sdk/errors.js.map +1 -0
  21. package/dist/sdk/index.d.ts +116 -46
  22. package/dist/sdk/index.js +178 -57
  23. package/dist/sdk/index.js.map +1 -1
  24. package/dist/sdk/progress-reporter.d.ts +111 -0
  25. package/dist/sdk/progress-reporter.js +178 -0
  26. package/dist/sdk/progress-reporter.js.map +1 -0
  27. package/dist/sdk/testing.d.ts +184 -0
  28. package/dist/sdk/testing.js +291 -0
  29. package/dist/sdk/testing.js.map +1 -0
  30. package/dist/sdk/tool-registry.d.ts +163 -0
  31. package/dist/sdk/tool-registry.js +218 -0
  32. package/dist/sdk/tool-registry.js.map +1 -0
  33. package/dist/sdk/unified-logger.d.ts +163 -0
  34. package/dist/sdk/unified-logger.js +274 -0
  35. package/dist/sdk/unified-logger.js.map +1 -0
  36. package/dist/sdk/version.d.ts +59 -0
  37. package/dist/sdk/version.js +64 -0
  38. package/dist/sdk/version.js.map +1 -0
  39. package/dist/tools/bash.d.ts +4 -0
  40. package/dist/tools/bash.js +22 -2
  41. package/dist/tools/bash.js.map +1 -1
  42. package/dist/ui/components/chat-history.d.ts +2 -0
  43. package/dist/ui/components/chat-history.js +32 -81
  44. package/dist/ui/components/chat-history.js.map +1 -1
  45. package/dist/ui/components/chat-interface.js +3 -3
  46. package/dist/ui/components/chat-interface.js.map +1 -1
  47. package/dist/ui/components/status-bar.d.ts +2 -0
  48. package/dist/ui/components/status-bar.js +33 -9
  49. package/dist/ui/components/status-bar.js.map +1 -1
  50. package/dist/ui/components/tool-group-display.d.ts +15 -0
  51. package/dist/ui/components/tool-group-display.js +91 -0
  52. package/dist/ui/components/tool-group-display.js.map +1 -0
  53. package/dist/ui/hooks/use-enhanced-input.js +43 -6
  54. package/dist/ui/hooks/use-enhanced-input.js.map +1 -1
  55. package/dist/ui/hooks/use-input-handler.d.ts +2 -0
  56. package/dist/ui/hooks/use-input-handler.js +13 -7
  57. package/dist/ui/hooks/use-input-handler.js.map +1 -1
  58. package/dist/ui/utils/change-summarizer.d.ts +20 -0
  59. package/dist/ui/utils/change-summarizer.js +193 -0
  60. package/dist/ui/utils/change-summarizer.js.map +1 -0
  61. package/dist/ui/utils/tool-grouper.d.ts +62 -0
  62. package/dist/ui/utils/tool-grouper.js +224 -0
  63. package/dist/ui/utils/tool-grouper.js.map +1 -0
  64. package/dist/utils/config-loader.d.ts +4 -0
  65. package/dist/utils/config-loader.js.map +1 -1
  66. package/dist/utils/paste-utils.js +45 -19
  67. package/dist/utils/paste-utils.js.map +1 -1
  68. package/dist/utils/token-counter.d.ts +12 -0
  69. package/dist/utils/token-counter.js +32 -4
  70. package/dist/utils/token-counter.js.map +1 -1
  71. package/package.json +2 -2
  72. package/packages/schemas/package.json +1 -1
  73. package/.ax-cli/CUSTOM.md +0 -269
  74. package/.ax-cli/checkpoints/2025-11-20/checkpoint-11e9e0ba-c39d-4fd2-aa77-bc818811c921.json +0 -69
  75. package/.ax-cli/checkpoints/2025-11-20/checkpoint-2b260b98-b418-4c7c-9694-e2b94967e662.json +0 -24
  76. package/.ax-cli/checkpoints/2025-11-20/checkpoint-2dd84869-e62d-46c8-9885-7e45f37f36e2.json +0 -69
  77. package/.ax-cli/checkpoints/2025-11-20/checkpoint-484dc350-353f-4808-9ed1-ebb3cefdab37.json +0 -24
  78. package/.ax-cli/checkpoints/2025-11-20/checkpoint-74a18b87-6172-4215-962b-44bb9f46a662.json +0 -69
  79. package/.ax-cli/checkpoints/2025-11-20/checkpoint-7e03601e-e8ab-4cd7-9841-a74b66adf78f.json +0 -69
  80. package/.ax-cli/checkpoints/2025-11-20/checkpoint-7f9c6562-771f-4fd0-adcf-9e7e9ac34ae8.json +0 -44
  81. package/.ax-cli/checkpoints/2025-11-20/checkpoint-870a5fb9-6e82-4ff2-8ec8-af4c251cc514.json +0 -44
  82. package/.ax-cli/checkpoints/2025-11-20/checkpoint-93946601-0e83-456c-ba47-def9713124dd.json +0 -24
  83. package/.ax-cli/checkpoints/2025-11-20/checkpoint-e1ebe666-4c3a-4367-ba5c-27fe512a9c70.json +0 -24
  84. package/.ax-cli/checkpoints/2025-11-21/checkpoint-15743e7d-430c-4d76-b6fc-955d7a5c250c.json +0 -44
  85. package/.ax-cli/checkpoints/2025-11-21/checkpoint-25cf7679-0b3f-4988-83d7-704548fbba91.json +0 -69
  86. package/.ax-cli/checkpoints/2025-11-21/checkpoint-54aedbac-6db0-464e-8ebb-dbb3979e6dca.json +0 -24
  87. package/.ax-cli/checkpoints/2025-11-21/checkpoint-7658aed8-fe5d-4222-903f-1a7c63717ea7.json +0 -24
  88. package/.ax-cli/checkpoints/2025-11-21/checkpoint-c9c13497-40dc-4294-a327-6a5fc854eaa1.json +0 -69
  89. package/.ax-cli/checkpoints/metadata.json +0 -62
  90. package/.ax-cli/index.json +0 -44
  91. package/.ax-cli/memory.json +0 -62
  92. package/.ax-cli/settings.json +0 -1
  93. package/ax.config.json +0 -333
  94. package/dist/agent/chat-history-manager.d.ts +0 -56
  95. package/dist/agent/chat-history-manager.js +0 -150
  96. package/dist/agent/chat-history-manager.js.map +0 -1
  97. package/dist/agent/tool-manager.d.ts +0 -39
  98. package/dist/agent/tool-manager.js +0 -76
  99. package/dist/agent/tool-manager.js.map +0 -1
  100. package/dist/hooks/use-chat-reducer.d.ts +0 -61
  101. package/dist/hooks/use-chat-reducer.js +0 -118
  102. package/dist/hooks/use-chat-reducer.js.map +0 -1
  103. package/dist/hooks/use-enhanced-input.d.ts +0 -40
  104. package/dist/hooks/use-enhanced-input.js +0 -249
  105. package/dist/hooks/use-enhanced-input.js.map +0 -1
  106. package/dist/hooks/use-input-handler.d.ts +0 -46
  107. package/dist/hooks/use-input-handler.js +0 -1430
  108. package/dist/hooks/use-input-handler.js.map +0 -1
  109. package/dist/hooks/use-input-history.d.ts +0 -9
  110. package/dist/hooks/use-input-history.js +0 -112
  111. package/dist/hooks/use-input-history.js.map +0 -1
  112. package/dist/index.js.bak +0 -664
  113. package/dist/tools/web-search/engines/brave.d.ts +0 -16
  114. package/dist/tools/web-search/engines/brave.js +0 -99
  115. package/dist/tools/web-search/engines/brave.js.map +0 -1
  116. package/dist/tools/web-search/engines/tavily.d.ts +0 -17
  117. package/dist/tools/web-search/engines/tavily.js +0 -73
  118. package/dist/tools/web-search/engines/tavily.js.map +0 -1
  119. package/dist/utils/paste-collapse.d.ts +0 -46
  120. package/dist/utils/paste-collapse.js +0 -77
  121. package/dist/utils/paste-collapse.js.map +0 -1
  122. package/packages/schemas/dist/index.d.ts +0 -14
  123. package/packages/schemas/dist/index.d.ts.map +0 -1
  124. package/packages/schemas/dist/index.js +0 -19
  125. package/packages/schemas/dist/index.js.map +0 -1
  126. package/packages/schemas/dist/public/core/brand-types.d.ts +0 -308
  127. package/packages/schemas/dist/public/core/brand-types.d.ts.map +0 -1
  128. package/packages/schemas/dist/public/core/brand-types.js +0 -243
  129. package/packages/schemas/dist/public/core/brand-types.js.map +0 -1
  130. package/packages/schemas/dist/public/core/enums.d.ts +0 -227
  131. package/packages/schemas/dist/public/core/enums.d.ts.map +0 -1
  132. package/packages/schemas/dist/public/core/enums.js +0 -222
  133. package/packages/schemas/dist/public/core/enums.js.map +0 -1
  134. package/packages/schemas/dist/public/core/id-types.d.ts +0 -286
  135. package/packages/schemas/dist/public/core/id-types.d.ts.map +0 -1
  136. package/packages/schemas/dist/public/core/id-types.js +0 -136
  137. package/packages/schemas/dist/public/core/id-types.js.map +0 -1
package/ax.config.json DELETED
@@ -1,333 +0,0 @@
1
- {
2
- "providers": {
3
- "claude-code": {
4
- "enabled": true,
5
- "priority": 3,
6
- "timeout": 2700000,
7
- "command": "claude",
8
- "healthCheck": {
9
- "enabled": true,
10
- "interval": 300000,
11
- "timeout": 5000
12
- },
13
- "circuitBreaker": {
14
- "enabled": true,
15
- "failureThreshold": 3,
16
- "recoveryTimeout": 60000
17
- },
18
- "processManagement": {
19
- "gracefulShutdownTimeout": 5000,
20
- "forceKillDelay": 1000
21
- },
22
- "versionDetection": {
23
- "timeout": 5000,
24
- "forceKillDelay": 1000,
25
- "cacheEnabled": true
26
- },
27
- "limitTracking": {
28
- "enabled": true,
29
- "window": "weekly",
30
- "resetHourUtc": 0
31
- }
32
- },
33
- "gemini-cli": {
34
- "enabled": true,
35
- "priority": 2,
36
- "timeout": 2700000,
37
- "command": "gemini",
38
- "healthCheck": {
39
- "enabled": true,
40
- "interval": 300000,
41
- "timeout": 5000
42
- },
43
- "circuitBreaker": {
44
- "enabled": true,
45
- "failureThreshold": 3,
46
- "recoveryTimeout": 60000
47
- },
48
- "processManagement": {
49
- "gracefulShutdownTimeout": 5000,
50
- "forceKillDelay": 1000
51
- },
52
- "versionDetection": {
53
- "timeout": 5000,
54
- "forceKillDelay": 1000,
55
- "cacheEnabled": true
56
- },
57
- "limitTracking": {
58
- "enabled": true,
59
- "window": "daily",
60
- "resetHourUtc": 0
61
- }
62
- },
63
- "openai": {
64
- "enabled": true,
65
- "priority": 1,
66
- "timeout": 2700000,
67
- "command": "codex",
68
- "healthCheck": {
69
- "enabled": true,
70
- "interval": 300000,
71
- "timeout": 5000
72
- },
73
- "circuitBreaker": {
74
- "enabled": true,
75
- "failureThreshold": 3,
76
- "recoveryTimeout": 60000
77
- },
78
- "processManagement": {
79
- "gracefulShutdownTimeout": 5000,
80
- "forceKillDelay": 1000
81
- },
82
- "versionDetection": {
83
- "timeout": 5000,
84
- "forceKillDelay": 1000,
85
- "cacheEnabled": true
86
- },
87
- "limitTracking": {
88
- "enabled": true,
89
- "window": "daily",
90
- "resetHourUtc": 0
91
- }
92
- },
93
- "grok": {
94
- "enabled": true,
95
- "priority": 4,
96
- "timeout": 2700000,
97
- "command": "grok",
98
- "healthCheck": {
99
- "enabled": true,
100
- "interval": 300000,
101
- "timeout": 5000
102
- },
103
- "circuitBreaker": {
104
- "enabled": true,
105
- "failureThreshold": 3,
106
- "recoveryTimeout": 60000
107
- },
108
- "processManagement": {
109
- "gracefulShutdownTimeout": 5000,
110
- "forceKillDelay": 1000
111
- },
112
- "versionDetection": {
113
- "timeout": 5000,
114
- "forceKillDelay": 1000,
115
- "cacheEnabled": true
116
- },
117
- "limitTracking": {
118
- "enabled": true,
119
- "window": "daily",
120
- "resetHourUtc": 0
121
- }
122
- }
123
- },
124
- "execution": {
125
- "defaultTimeout": 2700000,
126
- "concurrency": {
127
- "maxConcurrentAgents": 4,
128
- "autoDetect": false,
129
- "cpuMultiplier": 1,
130
- "minConcurrency": 2,
131
- "maxConcurrency": 16
132
- },
133
- "retry": {
134
- "maxAttempts": 3,
135
- "initialDelay": 1000,
136
- "maxDelay": 10000,
137
- "backoffFactor": 2,
138
- "retryableErrors": [
139
- "ECONNREFUSED",
140
- "ETIMEDOUT",
141
- "ENOTFOUND",
142
- "rate_limit",
143
- "overloaded",
144
- "timeout"
145
- ]
146
- },
147
- "provider": {
148
- "maxWaitMs": 60000,
149
- "fallbackDelay": 5000
150
- },
151
- "stages": {
152
- "enabled": true,
153
- "defaultTimeout": 1800000,
154
- "checkpointPath": ".automatosx/checkpoints",
155
- "autoSaveCheckpoint": true,
156
- "cleanupAfterDays": 7,
157
- "retry": {
158
- "defaultMaxRetries": 1,
159
- "defaultRetryDelay": 2000
160
- },
161
- "prompts": {
162
- "timeout": 600000,
163
- "autoConfirm": false,
164
- "locale": "en"
165
- },
166
- "progress": {
167
- "updateInterval": 2000,
168
- "syntheticProgress": true
169
- }
170
- }
171
- },
172
- "orchestration": {
173
- "session": {
174
- "maxSessions": 100,
175
- "maxMetadataSize": 10240,
176
- "saveDebounce": 1000,
177
- "cleanupAfterDays": 7,
178
- "maxUuidAttempts": 100,
179
- "persistPath": ".automatosx/sessions"
180
- },
181
- "delegation": {
182
- "maxDepth": 2,
183
- "timeout": 2700000,
184
- "enableCycleDetection": true
185
- }
186
- },
187
- "memory": {
188
- "maxEntries": 10000,
189
- "persistPath": ".automatosx/memory",
190
- "autoCleanup": true,
191
- "cleanupDays": 30,
192
- "busyTimeout": 5000,
193
- "search": {
194
- "defaultLimit": 10,
195
- "maxLimit": 100,
196
- "timeout": 5000
197
- }
198
- },
199
- "abilities": {
200
- "basePath": ".automatosx/abilities",
201
- "fallbackPath": "examples/abilities",
202
- "cache": {
203
- "enabled": true,
204
- "maxEntries": 50,
205
- "ttl": 600000,
206
- "maxSize": 5242880,
207
- "cleanupInterval": 120000
208
- },
209
- "limits": {
210
- "maxFileSize": 524288
211
- }
212
- },
213
- "workspace": {
214
- "prdPath": "automatosx/PRD",
215
- "tmpPath": "automatosx/tmp",
216
- "autoCleanupTmp": true,
217
- "tmpCleanupDays": 7
218
- },
219
- "logging": {
220
- "level": "info",
221
- "path": ".automatosx/logs",
222
- "console": true,
223
- "retention": {
224
- "maxSizeBytes": 104857600,
225
- "maxAgeDays": 30,
226
- "compress": true
227
- }
228
- },
229
- "performance": {
230
- "profileCache": {
231
- "enabled": true,
232
- "maxEntries": 20,
233
- "ttl": 600000,
234
- "cleanupInterval": 120000
235
- },
236
- "teamCache": {
237
- "enabled": true,
238
- "maxEntries": 10,
239
- "ttl": 600000,
240
- "cleanupInterval": 120000
241
- },
242
- "providerCache": {
243
- "enabled": true,
244
- "maxEntries": 100,
245
- "ttl": 600000,
246
- "cleanupInterval": 120000
247
- },
248
- "adaptiveCache": {
249
- "maxEntries": 1000,
250
- "baseTTL": 300000,
251
- "minTTL": 60000,
252
- "maxTTL": 3600000,
253
- "adaptiveMultiplier": 2,
254
- "lowFreqDivisor": 2,
255
- "frequencyThreshold": 5,
256
- "cleanupInterval": 60000
257
- },
258
- "responseCache": {
259
- "enabled": false,
260
- "ttl": 86400,
261
- "maxSize": 1000,
262
- "maxMemorySize": 100,
263
- "dbPath": ".automatosx/cache/responses.db"
264
- },
265
- "rateLimit": {
266
- "enabled": false,
267
- "requestsPerMinute": 60,
268
- "burstSize": 10
269
- }
270
- },
271
- "advanced": {
272
- "embedding": {
273
- "timeout": 30000,
274
- "retryDelay": 1000,
275
- "dimensions": 1536,
276
- "maxRetries": 3
277
- },
278
- "security": {
279
- "enablePathValidation": true,
280
- "allowedExtensions": [
281
- ".ts",
282
- ".js",
283
- ".tsx",
284
- ".jsx",
285
- ".py",
286
- ".go",
287
- ".rs",
288
- ".java",
289
- ".yaml",
290
- ".yml",
291
- ".json",
292
- ".toml",
293
- ".md",
294
- ".txt",
295
- ".csv"
296
- ]
297
- },
298
- "development": {
299
- "mockProviders": false,
300
- "profileMode": false
301
- }
302
- },
303
- "integration": {
304
- "vscode": {
305
- "enabled": false,
306
- "apiPort": 3000,
307
- "autoStart": true,
308
- "outputPanel": true,
309
- "notifications": true
310
- }
311
- },
312
- "cli": {
313
- "run": {
314
- "defaultMemory": true,
315
- "defaultSaveMemory": true,
316
- "defaultFormat": "text",
317
- "defaultVerbose": false
318
- },
319
- "session": {
320
- "defaultShowAgents": true
321
- },
322
- "memory": {
323
- "defaultLimit": 10
324
- }
325
- },
326
- "router": {
327
- "healthCheckInterval": 60000,
328
- "providerCooldownMs": 30000,
329
- "enableFreeTierPrioritization": true,
330
- "enableWorkloadAwareRouting": true
331
- },
332
- "version": "9.0.0"
333
- }
@@ -1,56 +0,0 @@
1
- /**
2
- * Chat History Manager
3
- *
4
- * Manages chat history, tool call tracking, and related operations.
5
- * Extracted from LLMAgent to reduce God Object anti-pattern.
6
- */
7
- import type { ChatEntry } from "./llm-agent.js";
8
- export declare class ChatHistoryManager {
9
- private chatHistory;
10
- private toolCallIndexMap;
11
- private toolCallArgsCache;
12
- /**
13
- * Get all chat history
14
- */
15
- getHistory(): ChatEntry[];
16
- /**
17
- * Get chat history for LLM (filtered format)
18
- */
19
- getLLMMessages(): any[];
20
- /**
21
- * Add entry to chat history
22
- */
23
- addEntry(entry: ChatEntry): void;
24
- /**
25
- * Get recent history (last N entries)
26
- */
27
- getRecentHistory(count: number): ChatEntry[];
28
- /**
29
- * Clear chat history
30
- */
31
- clearHistory(): void;
32
- /**
33
- * Get tool call index by ID
34
- */
35
- getToolCallIndex(toolCallId: string): number | undefined;
36
- /**
37
- * Cache tool call arguments
38
- */
39
- cacheToolCallArgs(toolCallId: string, args: Record<string, unknown>): void;
40
- /**
41
- * Get cached tool call arguments
42
- */
43
- getCachedToolCallArgs(toolCallId: string): Record<string, unknown> | undefined;
44
- /**
45
- * Get history size
46
- */
47
- getHistorySize(): number;
48
- /**
49
- * Get token count estimate for history
50
- */
51
- getTokenCount(): number;
52
- /**
53
- * Trim history to stay within token limit
54
- */
55
- trimToTokenLimit(maxTokens: number): void;
56
- }
@@ -1,150 +0,0 @@
1
- /**
2
- * Chat History Manager
3
- *
4
- * Manages chat history, tool call tracking, and related operations.
5
- * Extracted from LLMAgent to reduce God Object anti-pattern.
6
- */
7
- export class ChatHistoryManager {
8
- chatHistory = [];
9
- toolCallIndexMap = new Map();
10
- toolCallArgsCache = new Map();
11
- /**
12
- * Get all chat history
13
- */
14
- getHistory() {
15
- return [...this.chatHistory];
16
- }
17
- /**
18
- * Get chat history for LLM (filtered format)
19
- */
20
- getLLMMessages() {
21
- return this.chatHistory
22
- .filter(entry => entry.type === 'user' || entry.type === 'assistant' || entry.type === 'tool_result')
23
- .map(entry => {
24
- if (entry.type === 'user') {
25
- return { role: 'user', content: entry.content };
26
- }
27
- else if (entry.type === 'assistant') {
28
- const message = { role: 'assistant', content: entry.content };
29
- if (entry.toolCalls && entry.toolCalls.length > 0) {
30
- message.tool_calls = entry.toolCalls.map((toolCall) => ({
31
- id: toolCall.id,
32
- type: 'function',
33
- function: {
34
- name: toolCall.function.name,
35
- arguments: toolCall.function.arguments,
36
- },
37
- }));
38
- }
39
- return message;
40
- }
41
- else if (entry.type === 'tool_result' && entry.toolCall) {
42
- return {
43
- role: 'tool',
44
- tool_call_id: entry.toolCall.id,
45
- content: entry.content,
46
- };
47
- }
48
- return null;
49
- })
50
- .filter(Boolean);
51
- }
52
- /**
53
- * Add entry to chat history
54
- */
55
- addEntry(entry) {
56
- this.chatHistory.push(entry);
57
- // Track tool call indices for quick lookup
58
- if (entry.type === 'tool_call' && entry.toolCall) {
59
- this.toolCallIndexMap.set(entry.toolCall.id, this.chatHistory.length - 1);
60
- }
61
- }
62
- /**
63
- * Get recent history (last N entries)
64
- */
65
- getRecentHistory(count) {
66
- return this.chatHistory.slice(-count);
67
- }
68
- /**
69
- * Clear chat history
70
- */
71
- clearHistory() {
72
- this.chatHistory = [];
73
- this.toolCallIndexMap.clear();
74
- this.toolCallArgsCache.clear();
75
- }
76
- /**
77
- * Get tool call index by ID
78
- */
79
- getToolCallIndex(toolCallId) {
80
- return this.toolCallIndexMap.get(toolCallId);
81
- }
82
- /**
83
- * Cache tool call arguments
84
- */
85
- cacheToolCallArgs(toolCallId, args) {
86
- this.toolCallArgsCache.set(toolCallId, args);
87
- }
88
- /**
89
- * Get cached tool call arguments
90
- */
91
- getCachedToolCallArgs(toolCallId) {
92
- return this.toolCallArgsCache.get(toolCallId);
93
- }
94
- /**
95
- * Get history size
96
- */
97
- getHistorySize() {
98
- return this.chatHistory.length;
99
- }
100
- /**
101
- * Get token count estimate for history
102
- */
103
- getTokenCount() {
104
- // Simple estimation - could be improved with actual tokenizer
105
- let totalTokens = 0;
106
- for (const entry of this.chatHistory) {
107
- totalTokens += Math.ceil(entry.content.length / 4); // Rough estimate: 1 token per 4 chars
108
- if (entry.reasoningContent) {
109
- totalTokens += Math.ceil(entry.reasoningContent.length / 4);
110
- }
111
- }
112
- return totalTokens;
113
- }
114
- /**
115
- * Trim history to stay within token limit
116
- */
117
- trimToTokenLimit(maxTokens) {
118
- const currentTokens = this.getTokenCount();
119
- if (currentTokens <= maxTokens) {
120
- return;
121
- }
122
- // Keep recent entries (simple approach for now)
123
- let tokensToKeep = maxTokens;
124
- let entriesToKeep = 0;
125
- let tokenCount = 0;
126
- // Count from the end backwards
127
- for (let i = this.chatHistory.length - 1; i >= 0; i--) {
128
- const entry = this.chatHistory[i];
129
- const entryTokens = Math.ceil(entry.content.length / 4) +
130
- (entry.reasoningContent ? Math.ceil(entry.reasoningContent.length / 4) : 0);
131
- if (tokenCount + entryTokens <= tokensToKeep) {
132
- tokenCount += entryTokens;
133
- entriesToKeep++;
134
- }
135
- else {
136
- break;
137
- }
138
- }
139
- // Keep only recent entries
140
- this.chatHistory = this.chatHistory.slice(-entriesToKeep);
141
- // Rebuild tool call index map
142
- this.toolCallIndexMap.clear();
143
- this.chatHistory.forEach((entry, index) => {
144
- if (entry.type === 'tool_call' && entry.toolCall) {
145
- this.toolCallIndexMap.set(entry.toolCall.id, index);
146
- }
147
- });
148
- }
149
- }
150
- //# sourceMappingURL=chat-history-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat-history-manager.js","sourceRoot":"","sources":["../../src/agent/chat-history-manager.ts"],"names":[],"mappings":"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"}
@@ -1,39 +0,0 @@
1
- /**
2
- * Tool Manager
3
- *
4
- * Manages all tool instances and their lifecycle.
5
- * Extracted from LLMAgent to reduce God Object anti-pattern.
6
- */
7
- import { LLMTool } from "../llm/client.js";
8
- export declare class ToolManager {
9
- private tools;
10
- private initialized;
11
- /**
12
- * Initialize tools
13
- */
14
- private initialize;
15
- /**
16
- * Get all available tools as LLMTool array
17
- */
18
- getAllTools(): Promise<LLMTool[]>;
19
- /**
20
- * Get tool by name
21
- */
22
- getToolByName(name: string): Promise<LLMTool | undefined>;
23
- /**
24
- * Load tools safely (for compatibility with existing code)
25
- */
26
- loadToolsSafely(): Promise<LLMTool[]>;
27
- /**
28
- * Get tool count
29
- */
30
- getToolCount(): Promise<number>;
31
- /**
32
- * Check if tools are available
33
- */
34
- hasTools(): Promise<boolean>;
35
- /**
36
- * Dispose all tools
37
- */
38
- dispose(): void;
39
- }
@@ -1,76 +0,0 @@
1
- /**
2
- * Tool Manager
3
- *
4
- * Manages all tool instances and their lifecycle.
5
- * Extracted from LLMAgent to reduce God Object anti-pattern.
6
- */
7
- import { getAllGrokTools, } from "../llm/tools.js";
8
- export class ToolManager {
9
- tools = [];
10
- initialized = false;
11
- /**
12
- * Initialize tools
13
- */
14
- async initialize() {
15
- if (this.initialized) {
16
- return;
17
- }
18
- try {
19
- this.tools = await getAllGrokTools();
20
- this.initialized = true;
21
- }
22
- catch (error) {
23
- console.warn('⚠️ Error initializing tools:', error);
24
- this.tools = [];
25
- this.initialized = true;
26
- }
27
- }
28
- /**
29
- * Get all available tools as LLMTool array
30
- */
31
- async getAllTools() {
32
- await this.initialize();
33
- return [...this.tools];
34
- }
35
- /**
36
- * Get tool by name
37
- */
38
- async getToolByName(name) {
39
- const tools = await this.getAllTools();
40
- return tools.find(tool => tool.function.name === name);
41
- }
42
- /**
43
- * Load tools safely (for compatibility with existing code)
44
- */
45
- async loadToolsSafely() {
46
- try {
47
- return await this.getAllTools();
48
- }
49
- catch (error) {
50
- console.warn('⚠️ Error loading tools:', error);
51
- return [];
52
- }
53
- }
54
- /**
55
- * Get tool count
56
- */
57
- async getToolCount() {
58
- const tools = await this.getAllTools();
59
- return tools.length;
60
- }
61
- /**
62
- * Check if tools are available
63
- */
64
- async hasTools() {
65
- const tools = await this.getAllTools();
66
- return tools.length > 0;
67
- }
68
- /**
69
- * Dispose all tools
70
- */
71
- dispose() {
72
- this.tools = [];
73
- this.initialized = false;
74
- }
75
- }
76
- //# sourceMappingURL=tool-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool-manager.js","sourceRoot":"","sources":["../../src/agent/tool-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAGzB,MAAM,OAAO,WAAW;IACd,KAAK,GAAc,EAAE,CAAC;IACtB,WAAW,GAAG,KAAK,CAAC;IAE5B;;OAEG;IACK,KAAK,CAAC,UAAU;QACtB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,KAAK,GAAG,MAAM,eAAe,EAAE,CAAC;YACrC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,IAAY;QAC9B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACvC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAClC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAC/C,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACvC,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACvC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;CACF"}