@loxia-labs/loxia-autopilot-one 1.0.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.
- package/LICENSE +267 -0
- package/README.md +509 -0
- package/bin/cli.js +117 -0
- package/package.json +94 -0
- package/scripts/install-scanners.js +236 -0
- package/src/analyzers/CSSAnalyzer.js +297 -0
- package/src/analyzers/ConfigValidator.js +690 -0
- package/src/analyzers/ESLintAnalyzer.js +320 -0
- package/src/analyzers/JavaScriptAnalyzer.js +261 -0
- package/src/analyzers/PrettierFormatter.js +247 -0
- package/src/analyzers/PythonAnalyzer.js +266 -0
- package/src/analyzers/SecurityAnalyzer.js +729 -0
- package/src/analyzers/TypeScriptAnalyzer.js +247 -0
- package/src/analyzers/codeCloneDetector/analyzer.js +344 -0
- package/src/analyzers/codeCloneDetector/detector.js +203 -0
- package/src/analyzers/codeCloneDetector/index.js +160 -0
- package/src/analyzers/codeCloneDetector/parser.js +199 -0
- package/src/analyzers/codeCloneDetector/reporter.js +148 -0
- package/src/analyzers/codeCloneDetector/scanner.js +59 -0
- package/src/core/agentPool.js +1474 -0
- package/src/core/agentScheduler.js +2147 -0
- package/src/core/contextManager.js +709 -0
- package/src/core/messageProcessor.js +732 -0
- package/src/core/orchestrator.js +548 -0
- package/src/core/stateManager.js +877 -0
- package/src/index.js +631 -0
- package/src/interfaces/cli.js +549 -0
- package/src/interfaces/webServer.js +2162 -0
- package/src/modules/fileExplorer/controller.js +280 -0
- package/src/modules/fileExplorer/index.js +37 -0
- package/src/modules/fileExplorer/middleware.js +92 -0
- package/src/modules/fileExplorer/routes.js +125 -0
- package/src/modules/fileExplorer/types.js +44 -0
- package/src/services/aiService.js +1232 -0
- package/src/services/apiKeyManager.js +164 -0
- package/src/services/benchmarkService.js +366 -0
- package/src/services/budgetService.js +539 -0
- package/src/services/contextInjectionService.js +247 -0
- package/src/services/conversationCompactionService.js +637 -0
- package/src/services/errorHandler.js +810 -0
- package/src/services/fileAttachmentService.js +544 -0
- package/src/services/modelRouterService.js +366 -0
- package/src/services/modelsService.js +322 -0
- package/src/services/qualityInspector.js +796 -0
- package/src/services/tokenCountingService.js +536 -0
- package/src/tools/agentCommunicationTool.js +1344 -0
- package/src/tools/agentDelayTool.js +485 -0
- package/src/tools/asyncToolManager.js +604 -0
- package/src/tools/baseTool.js +800 -0
- package/src/tools/browserTool.js +920 -0
- package/src/tools/cloneDetectionTool.js +621 -0
- package/src/tools/dependencyResolverTool.js +1215 -0
- package/src/tools/fileContentReplaceTool.js +875 -0
- package/src/tools/fileSystemTool.js +1107 -0
- package/src/tools/fileTreeTool.js +853 -0
- package/src/tools/imageTool.js +901 -0
- package/src/tools/importAnalyzerTool.js +1060 -0
- package/src/tools/jobDoneTool.js +248 -0
- package/src/tools/seekTool.js +956 -0
- package/src/tools/staticAnalysisTool.js +1778 -0
- package/src/tools/taskManagerTool.js +2873 -0
- package/src/tools/terminalTool.js +2304 -0
- package/src/tools/webTool.js +1430 -0
- package/src/types/agent.js +519 -0
- package/src/types/contextReference.js +972 -0
- package/src/types/conversation.js +730 -0
- package/src/types/toolCommand.js +747 -0
- package/src/utilities/attachmentValidator.js +292 -0
- package/src/utilities/configManager.js +582 -0
- package/src/utilities/constants.js +722 -0
- package/src/utilities/directoryAccessManager.js +535 -0
- package/src/utilities/fileProcessor.js +307 -0
- package/src/utilities/logger.js +436 -0
- package/src/utilities/tagParser.js +1246 -0
- package/src/utilities/toolConstants.js +317 -0
- package/web-ui/build/index.html +15 -0
- package/web-ui/build/logo.png +0 -0
- package/web-ui/build/logo2.png +0 -0
- package/web-ui/build/static/index-CjkkcnFA.js +344 -0
- package/web-ui/build/static/index-Dy2bYbOa.css +1 -0
|
@@ -0,0 +1,722 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constants - Centralized constants and enums for the Loxia AI Agents System
|
|
3
|
+
*
|
|
4
|
+
* Purpose:
|
|
5
|
+
* - Eliminate magic values throughout the codebase
|
|
6
|
+
* - Provide centralized configuration constants
|
|
7
|
+
* - Define enums for system states and types
|
|
8
|
+
* - Ensure consistency across modules
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
// System Configuration Constants
|
|
12
|
+
const SYSTEM_DEFAULTS = {
|
|
13
|
+
MAX_AGENTS_PER_PROJECT: 10,
|
|
14
|
+
QUALITY_INSPECTOR_INTERVAL: 10,
|
|
15
|
+
DEFAULT_MODEL: 'anthropic-sonnet',
|
|
16
|
+
STATE_DIRECTORY: '.loxia-state',
|
|
17
|
+
MAX_PAUSE_DURATION: 300, // seconds
|
|
18
|
+
MAX_CONTEXT_SIZE: 50000, // characters
|
|
19
|
+
MAX_CONTEXT_REFERENCES: 10,
|
|
20
|
+
CACHE_EXPIRY: 3600, // seconds
|
|
21
|
+
MAX_MESSAGE_SIZE: 100000, // characters
|
|
22
|
+
MAX_FILE_SIZE: 10485760, // 10MB
|
|
23
|
+
MAX_ASYNC_OPERATIONS: 5,
|
|
24
|
+
MAX_TOOL_EXECUTION_TIME: 300000, // 5 minutes
|
|
25
|
+
MAX_CONVERSATION_LENGTH: 50000 // tokens
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
// Model Router Configuration
|
|
29
|
+
const MODEL_ROUTER_CONFIG = {
|
|
30
|
+
ROUTER_MODEL: 'autopilot-model-router', // Autopilot model router deployment
|
|
31
|
+
CONTEXT_MESSAGES_COUNT: 5, // Number of recent messages to include
|
|
32
|
+
BENCHMARK_REFRESH_INTERVAL: 3600000, // 1 hour in milliseconds
|
|
33
|
+
FALLBACK_ON_ERROR: true, // Continue with previous model on router error
|
|
34
|
+
REQUEST_TIMEOUT: 10000 // 10 seconds timeout for router requests
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
// Interface Types
|
|
38
|
+
const INTERFACE_TYPES = {
|
|
39
|
+
CLI: 'cli',
|
|
40
|
+
WEB: 'web',
|
|
41
|
+
VSCODE: 'vscode'
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
// Agent Types
|
|
45
|
+
const AGENT_TYPES = {
|
|
46
|
+
USER_CREATED: 'user-created',
|
|
47
|
+
SYSTEM_AGENT: 'system-agent',
|
|
48
|
+
AGENT_ENGINEER: 'agent-engineer'
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
// Agent Status
|
|
52
|
+
const AGENT_STATUS = {
|
|
53
|
+
ACTIVE: 'active',
|
|
54
|
+
IDLE: 'idle',
|
|
55
|
+
BUSY: 'busy',
|
|
56
|
+
SUSPENDED: 'suspended',
|
|
57
|
+
PAUSED: 'paused'
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
// Agent Modes
|
|
61
|
+
const AGENT_MODES = {
|
|
62
|
+
CHAT: 'chat', // Default: single message → single response
|
|
63
|
+
AGENT: 'agent' // Autonomous: task → loop until complete (persistent mode)
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
// Agent Mode States
|
|
67
|
+
const AGENT_MODE_STATES = {
|
|
68
|
+
IDLE: 'idle', // Not executing anything
|
|
69
|
+
EXECUTING: 'executing', // Currently processing autonomous task
|
|
70
|
+
WAITING_APPROVAL: 'waiting_approval', // Paused for user approval
|
|
71
|
+
STOPPED: 'stopped' // User stopped execution
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
// Message Modes
|
|
75
|
+
const MESSAGE_MODES = {
|
|
76
|
+
CHAT: 'chat',
|
|
77
|
+
AGENT: 'agent'
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
// Message Roles
|
|
81
|
+
const MESSAGE_ROLES = {
|
|
82
|
+
USER: 'user',
|
|
83
|
+
ASSISTANT: 'assistant',
|
|
84
|
+
SYSTEM: 'system'
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
// Context Reference Types
|
|
88
|
+
const CONTEXT_REFERENCE_TYPES = {
|
|
89
|
+
FILE: 'file',
|
|
90
|
+
COMPONENT: 'component',
|
|
91
|
+
SELECTION: 'selection',
|
|
92
|
+
DIRECTORY: 'directory'
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
// Tool Status
|
|
96
|
+
const TOOL_STATUS = {
|
|
97
|
+
PENDING: 'pending',
|
|
98
|
+
EXECUTING: 'executing',
|
|
99
|
+
COMPLETED: 'completed',
|
|
100
|
+
FAILED: 'failed'
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
// Operation Status
|
|
104
|
+
const OPERATION_STATUS = {
|
|
105
|
+
EXECUTING: 'executing',
|
|
106
|
+
COMPLETED: 'completed',
|
|
107
|
+
FAILED: 'failed',
|
|
108
|
+
NOT_FOUND: 'not_found'
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
// Conversation Status
|
|
112
|
+
const CONVERSATION_STATUS = {
|
|
113
|
+
ACTIVE: 'active',
|
|
114
|
+
ARCHIVED: 'archived',
|
|
115
|
+
SUSPENDED: 'suspended'
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
// Error Types
|
|
119
|
+
const ERROR_TYPES = {
|
|
120
|
+
FILE_NOT_FOUND: 'FILE_NOT_FOUND',
|
|
121
|
+
PERMISSION_DENIED: 'PERMISSION_DENIED',
|
|
122
|
+
OPERATION_TIMEOUT: 'OPERATION_TIMEOUT',
|
|
123
|
+
RATE_LIMIT_EXCEEDED: 'RATE_LIMIT_EXCEEDED',
|
|
124
|
+
AUTHENTICATION_FAILED: 'AUTHENTICATION_FAILED',
|
|
125
|
+
UNKNOWN_ERROR: 'UNKNOWN_ERROR',
|
|
126
|
+
VALIDATION_ERROR: 'VALIDATION_ERROR',
|
|
127
|
+
CONFIGURATION_ERROR: 'CONFIGURATION_ERROR'
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
// HTTP Status Codes
|
|
131
|
+
const HTTP_STATUS = {
|
|
132
|
+
OK: 200,
|
|
133
|
+
BAD_REQUEST: 400,
|
|
134
|
+
UNAUTHORIZED: 401,
|
|
135
|
+
FORBIDDEN: 403,
|
|
136
|
+
NOT_FOUND: 404,
|
|
137
|
+
TOO_MANY_REQUESTS: 429,
|
|
138
|
+
INTERNAL_SERVER_ERROR: 500,
|
|
139
|
+
BAD_GATEWAY: 502,
|
|
140
|
+
SERVICE_UNAVAILABLE: 503,
|
|
141
|
+
GATEWAY_TIMEOUT: 504
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
// Model Providers
|
|
145
|
+
const MODEL_PROVIDERS = {
|
|
146
|
+
ANTHROPIC: 'anthropic',
|
|
147
|
+
OPENAI: 'openai',
|
|
148
|
+
AZURE: 'azure',
|
|
149
|
+
DEEPSEEK: 'deepseek',
|
|
150
|
+
PHI: 'phi'
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
// Model Names
|
|
154
|
+
const MODELS = { //TODO:update with moedels from server
|
|
155
|
+
ANTHROPIC_SONNET: 'anthropic-sonnet',
|
|
156
|
+
ANTHROPIC_OPUS: 'anthropic-opus',
|
|
157
|
+
ANTHROPIC_HAIKU: 'anthropic-haiku',
|
|
158
|
+
GPT_4: 'gpt-4',
|
|
159
|
+
GPT_4_MINI: 'gpt-4-mini',
|
|
160
|
+
DEEPSEEK_R1: 'deepseek-r1',
|
|
161
|
+
PHI_4: 'phi-4'
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
// Platform Model IDs (with prefixes)
|
|
165
|
+
const PLATFORM_MODELS = {
|
|
166
|
+
LOXIA_ANTHROPIC_SONNET: 'loxia-anthropic-sonnet',
|
|
167
|
+
LOXIA_ANTHROPIC_OPUS: 'loxia-anthropic-opus',
|
|
168
|
+
LOXIA_ANTHROPIC_HAIKU: 'loxia-anthropic-haiku',
|
|
169
|
+
LOXIA_GPT_4: 'loxia-gpt-4',
|
|
170
|
+
LOXIA_GPT_4_MINI: 'loxia-gpt-4-mini',
|
|
171
|
+
LOXIA_DEEPSEEK_R1: 'loxia-deepseek-r1',
|
|
172
|
+
LOXIA_PHI_4: 'loxia-phi-4'
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
// Direct Access Model IDs (with prefixes)
|
|
176
|
+
const DIRECT_MODELS = {
|
|
177
|
+
DIRECT_ANTHROPIC_SONNET: 'direct-anthropic-sonnet',
|
|
178
|
+
DIRECT_ANTHROPIC_OPUS: 'direct-anthropic-opus',
|
|
179
|
+
DIRECT_ANTHROPIC_HAIKU: 'direct-anthropic-haiku',
|
|
180
|
+
DIRECT_GPT_4: 'direct-gpt-4',
|
|
181
|
+
DIRECT_GPT_4_MINI: 'direct-gpt-4-mini',
|
|
182
|
+
DIRECT_DEEPSEEK_R1: 'direct-deepseek-r1',
|
|
183
|
+
DIRECT_PHI_4: 'direct-phi-4'
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
// Model Format Versions
|
|
187
|
+
const MODEL_FORMAT_VERSIONS = {
|
|
188
|
+
[MODELS.ANTHROPIC_SONNET]: 'anthropic-v1',
|
|
189
|
+
[MODELS.ANTHROPIC_OPUS]: 'anthropic-v1',
|
|
190
|
+
[MODELS.ANTHROPIC_HAIKU]: 'anthropic-v1',
|
|
191
|
+
[MODELS.GPT_4]: 'openai-v1',
|
|
192
|
+
[MODELS.GPT_4_MINI]: 'openai-v1',
|
|
193
|
+
[MODELS.DEEPSEEK_R1]: 'deepseek-v1',
|
|
194
|
+
[MODELS.PHI_4]: 'phi-v1',
|
|
195
|
+
DEFAULT: 'generic-v1'
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
// Model Routing Table
|
|
199
|
+
const MODEL_ROUTING = {
|
|
200
|
+
CODING: [MODELS.ANTHROPIC_SONNET, MODELS.GPT_4, MODELS.DEEPSEEK_R1],
|
|
201
|
+
ANALYSIS: [MODELS.ANTHROPIC_OPUS, MODELS.GPT_4, MODELS.PHI_4],
|
|
202
|
+
QUICK_TASKS: [MODELS.ANTHROPIC_HAIKU, MODELS.GPT_4_MINI, MODELS.PHI_4],
|
|
203
|
+
CREATIVE: [MODELS.ANTHROPIC_OPUS, MODELS.GPT_4],
|
|
204
|
+
FALLBACK: [MODELS.ANTHROPIC_SONNET]
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
// Tool Names
|
|
208
|
+
const TOOL_NAMES = {
|
|
209
|
+
TERMINAL: 'terminal',
|
|
210
|
+
FILESYSTEM: 'filesystem',
|
|
211
|
+
BROWSER: 'browser',
|
|
212
|
+
AGENT_DELAY: 'agentdelay',
|
|
213
|
+
EDITOR: 'editor',
|
|
214
|
+
GIT: 'git',
|
|
215
|
+
DATABASE: 'database'
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
// File Extensions and Languages
|
|
219
|
+
const FILE_EXTENSIONS = {
|
|
220
|
+
JAVASCRIPT: '.js',
|
|
221
|
+
JSX: '.jsx',
|
|
222
|
+
TYPESCRIPT: '.ts',
|
|
223
|
+
TSX: '.tsx',
|
|
224
|
+
PYTHON: '.py',
|
|
225
|
+
JAVA: '.java',
|
|
226
|
+
CPP: '.cpp',
|
|
227
|
+
C: '.c',
|
|
228
|
+
CSHARP: '.cs',
|
|
229
|
+
PHP: '.php',
|
|
230
|
+
RUBY: '.rb',
|
|
231
|
+
GO: '.go',
|
|
232
|
+
RUST: '.rs',
|
|
233
|
+
HTML: '.html',
|
|
234
|
+
CSS: '.css',
|
|
235
|
+
SCSS: '.scss',
|
|
236
|
+
JSON: '.json',
|
|
237
|
+
YAML: '.yml',
|
|
238
|
+
YAML_ALT: '.yaml',
|
|
239
|
+
MARKDOWN: '.md',
|
|
240
|
+
XML: '.xml',
|
|
241
|
+
SQL: '.sql'
|
|
242
|
+
};
|
|
243
|
+
|
|
244
|
+
const LANGUAGE_MAPPING = {
|
|
245
|
+
[FILE_EXTENSIONS.JAVASCRIPT]: 'javascript',
|
|
246
|
+
[FILE_EXTENSIONS.JSX]: 'jsx',
|
|
247
|
+
[FILE_EXTENSIONS.TYPESCRIPT]: 'typescript',
|
|
248
|
+
[FILE_EXTENSIONS.TSX]: 'tsx',
|
|
249
|
+
[FILE_EXTENSIONS.PYTHON]: 'python',
|
|
250
|
+
[FILE_EXTENSIONS.JAVA]: 'java',
|
|
251
|
+
[FILE_EXTENSIONS.CPP]: 'cpp',
|
|
252
|
+
[FILE_EXTENSIONS.C]: 'c',
|
|
253
|
+
[FILE_EXTENSIONS.CSHARP]: 'csharp',
|
|
254
|
+
[FILE_EXTENSIONS.PHP]: 'php',
|
|
255
|
+
[FILE_EXTENSIONS.RUBY]: 'ruby',
|
|
256
|
+
[FILE_EXTENSIONS.GO]: 'go',
|
|
257
|
+
[FILE_EXTENSIONS.RUST]: 'rust',
|
|
258
|
+
[FILE_EXTENSIONS.HTML]: 'html',
|
|
259
|
+
[FILE_EXTENSIONS.CSS]: 'css',
|
|
260
|
+
[FILE_EXTENSIONS.SCSS]: 'scss',
|
|
261
|
+
[FILE_EXTENSIONS.JSON]: 'json',
|
|
262
|
+
[FILE_EXTENSIONS.YAML]: 'yaml',
|
|
263
|
+
[FILE_EXTENSIONS.YAML_ALT]: 'yaml',
|
|
264
|
+
[FILE_EXTENSIONS.MARKDOWN]: 'markdown',
|
|
265
|
+
[FILE_EXTENSIONS.XML]: 'xml',
|
|
266
|
+
[FILE_EXTENSIONS.SQL]: 'sql'
|
|
267
|
+
};
|
|
268
|
+
|
|
269
|
+
// File Icons
|
|
270
|
+
const FILE_ICONS = {
|
|
271
|
+
[FILE_EXTENSIONS.JAVASCRIPT]: '📜',
|
|
272
|
+
[FILE_EXTENSIONS.JSX]: '⚛️',
|
|
273
|
+
[FILE_EXTENSIONS.TYPESCRIPT]: '📘',
|
|
274
|
+
[FILE_EXTENSIONS.TSX]: '⚛️',
|
|
275
|
+
[FILE_EXTENSIONS.PYTHON]: '🐍',
|
|
276
|
+
[FILE_EXTENSIONS.JAVA]: '☕',
|
|
277
|
+
[FILE_EXTENSIONS.HTML]: '🌐',
|
|
278
|
+
[FILE_EXTENSIONS.CSS]: '🎨',
|
|
279
|
+
[FILE_EXTENSIONS.JSON]: '📋',
|
|
280
|
+
[FILE_EXTENSIONS.MARKDOWN]: '📝',
|
|
281
|
+
[FILE_EXTENSIONS.YAML]: '⚙️',
|
|
282
|
+
[FILE_EXTENSIONS.YAML_ALT]: '⚙️',
|
|
283
|
+
DEFAULT: '📄'
|
|
284
|
+
};
|
|
285
|
+
|
|
286
|
+
// Context Icons
|
|
287
|
+
const CONTEXT_ICONS = {
|
|
288
|
+
[CONTEXT_REFERENCE_TYPES.FILE]: '📄',
|
|
289
|
+
[CONTEXT_REFERENCE_TYPES.COMPONENT]: '🔧',
|
|
290
|
+
[CONTEXT_REFERENCE_TYPES.SELECTION]: '✂️',
|
|
291
|
+
[CONTEXT_REFERENCE_TYPES.DIRECTORY]: '📁',
|
|
292
|
+
DEFAULT: '📎'
|
|
293
|
+
};
|
|
294
|
+
|
|
295
|
+
// State File Names
|
|
296
|
+
const STATE_FILES = {
|
|
297
|
+
PROJECT_STATE: 'project-state.json',
|
|
298
|
+
AGENT_INDEX: 'agent-index.json',
|
|
299
|
+
CONVERSATION_INDEX: 'conversation-index.json',
|
|
300
|
+
LAST_SESSION: 'last-session.json',
|
|
301
|
+
CONTEXT_REFERENCES: 'context-references.json',
|
|
302
|
+
ASYNC_OPERATIONS: 'operations/async-operations.json',
|
|
303
|
+
PAUSED_AGENTS: 'operations/paused-agents.json',
|
|
304
|
+
TOOL_HISTORY: 'operations/tool-history.json',
|
|
305
|
+
MODEL_ROUTER_CACHE: 'models/model-router-cache.json',
|
|
306
|
+
ERROR_RECOVERY_LOG: 'models/error-recovery-log.json'
|
|
307
|
+
};
|
|
308
|
+
|
|
309
|
+
// State Directory Structure
|
|
310
|
+
const STATE_DIRECTORIES = {
|
|
311
|
+
ROOT: '.loxia-state',
|
|
312
|
+
AGENTS: 'agents',
|
|
313
|
+
OPERATIONS: 'operations',
|
|
314
|
+
MODELS: 'models'
|
|
315
|
+
};
|
|
316
|
+
|
|
317
|
+
// Quality Inspector Configuration
|
|
318
|
+
const QUALITY_INSPECTOR_CONFIG = {
|
|
319
|
+
CHECK_INTERVAL_MESSAGES: 10,
|
|
320
|
+
STUCK_PATTERNS: [
|
|
321
|
+
'repetitive_commands',
|
|
322
|
+
'infinite_waiting',
|
|
323
|
+
'error_loops',
|
|
324
|
+
'resource_exhaustion'
|
|
325
|
+
],
|
|
326
|
+
INTERVENTION_THRESHOLD: 3,
|
|
327
|
+
COOLDOWN_PERIOD: 300000 // 5 minutes
|
|
328
|
+
};
|
|
329
|
+
|
|
330
|
+
// Orchestrator Actions
|
|
331
|
+
const ORCHESTRATOR_ACTIONS = {
|
|
332
|
+
CREATE_AGENT: 'create_agent',
|
|
333
|
+
UPDATE_AGENT: 'update_agent',
|
|
334
|
+
DELETE_AGENT: 'delete_agent',
|
|
335
|
+
SEND_MESSAGE: 'send_message',
|
|
336
|
+
LIST_AGENTS: 'list_agents',
|
|
337
|
+
RESUME_SESSION: 'resume_session',
|
|
338
|
+
GET_SESSION_STATE: 'get_session_state',
|
|
339
|
+
PAUSE_AGENT: 'pause_agent',
|
|
340
|
+
RESUME_AGENT: 'resume_agent',
|
|
341
|
+
SWITCH_MODEL: 'switch_model',
|
|
342
|
+
GET_AGENT_STATUS: 'get_agent_status',
|
|
343
|
+
GET_AGENT_CONVERSATIONS: 'get_agent_conversations'
|
|
344
|
+
};
|
|
345
|
+
|
|
346
|
+
// Message Types
|
|
347
|
+
const MESSAGE_TYPES = {
|
|
348
|
+
AGENT_NOTIFICATION: 'agent_notification',
|
|
349
|
+
AGENT_REDIRECT: 'agent_redirect',
|
|
350
|
+
TOOL_COMPLETION: 'tool_completion',
|
|
351
|
+
SYSTEM_MESSAGE: 'system_message',
|
|
352
|
+
AGENT_COMMUNICATION: 'agent_communication' // Inter-agent messages
|
|
353
|
+
};
|
|
354
|
+
|
|
355
|
+
// Inter-Agent Message Processing Configuration
|
|
356
|
+
const INTER_AGENT_MESSAGE = {
|
|
357
|
+
// Processing priorities
|
|
358
|
+
PRIORITY: {
|
|
359
|
+
LOW: 'low',
|
|
360
|
+
NORMAL: 'normal',
|
|
361
|
+
HIGH: 'high',
|
|
362
|
+
URGENT: 'urgent'
|
|
363
|
+
},
|
|
364
|
+
|
|
365
|
+
// Processing delays (in milliseconds) - avoid magic numbers
|
|
366
|
+
PROCESSING_DELAY: {
|
|
367
|
+
IMMEDIATE: 0, // Process immediately
|
|
368
|
+
SHORT: 500, // Half second delay
|
|
369
|
+
NORMAL: 2000, // 2 seconds delay
|
|
370
|
+
LONG: 5000 // 5 seconds delay
|
|
371
|
+
},
|
|
372
|
+
|
|
373
|
+
// Queue and processing limits
|
|
374
|
+
MAX_QUEUE_SIZE: 100, // Maximum messages in queue per agent
|
|
375
|
+
MAX_PROCESSING_RETRIES: 3, // Maximum retry attempts
|
|
376
|
+
PROCESSING_TIMEOUT: 30000, // 30 seconds timeout for processing
|
|
377
|
+
|
|
378
|
+
// Auto-response configuration
|
|
379
|
+
AUTO_RESPONSE_ENABLED: true, // Enable automatic responses
|
|
380
|
+
REQUIRE_AGENT_MODE: false, // If true, only respond in AGENT mode
|
|
381
|
+
PRESERVE_CONTEXT: true // Maintain conversation context during response
|
|
382
|
+
};
|
|
383
|
+
|
|
384
|
+
// Agent Redirect Attributes
|
|
385
|
+
const AGENT_REDIRECT_ATTRIBUTES = {
|
|
386
|
+
URGENT: 'urgent',
|
|
387
|
+
REQUIRES_RESPONSE: 'requiresResponse',
|
|
388
|
+
CONTEXT: 'context'
|
|
389
|
+
};
|
|
390
|
+
|
|
391
|
+
// Budget and usage tracking constants
|
|
392
|
+
const BUDGET_LIMITS = {
|
|
393
|
+
DAILY: 10.00, // $10 per day default
|
|
394
|
+
WEEKLY: 50.00, // $50 per week default
|
|
395
|
+
MONTHLY: 200.00 // $200 per month default
|
|
396
|
+
};
|
|
397
|
+
|
|
398
|
+
const COST_PER_TOKEN = {
|
|
399
|
+
[MODELS.ANTHROPIC_SONNET]: {
|
|
400
|
+
input: 0.000003, // $3 per 1M input tokens
|
|
401
|
+
output: 0.000015 // $15 per 1M output tokens
|
|
402
|
+
},
|
|
403
|
+
[MODELS.ANTHROPIC_OPUS]: {
|
|
404
|
+
input: 0.000015, // $15 per 1M input tokens
|
|
405
|
+
output: 0.000075 // $75 per 1M output tokens
|
|
406
|
+
},
|
|
407
|
+
[MODELS.ANTHROPIC_HAIKU]: {
|
|
408
|
+
input: 0.00000025, // $0.25 per 1M input tokens
|
|
409
|
+
output: 0.00000125 // $1.25 per 1M output tokens
|
|
410
|
+
},
|
|
411
|
+
[MODELS.GPT_4]: {
|
|
412
|
+
input: 0.000030, // $30 per 1M input tokens
|
|
413
|
+
output: 0.000060 // $60 per 1M output tokens
|
|
414
|
+
},
|
|
415
|
+
[MODELS.GPT_4_MINI]: {
|
|
416
|
+
input: 0.000000150, // $0.15 per 1M input tokens
|
|
417
|
+
output: 0.000000600 // $0.60 per 1M output tokens
|
|
418
|
+
},
|
|
419
|
+
[MODELS.DEEPSEEK_R1]: {
|
|
420
|
+
input: 0.000014, // $14 per 1M input tokens
|
|
421
|
+
output: 0.000028 // $28 per 1M output tokens
|
|
422
|
+
},
|
|
423
|
+
[MODELS.PHI_4]: {
|
|
424
|
+
input: 0.000010, // $10 per 1M input tokens
|
|
425
|
+
output: 0.000020 // $20 per 1M output tokens
|
|
426
|
+
}
|
|
427
|
+
};
|
|
428
|
+
|
|
429
|
+
const USAGE_ALERTS = {
|
|
430
|
+
THRESHOLDS: [50, 75, 90, 100], // Percentage thresholds for alerts
|
|
431
|
+
COOLDOWN_PERIOD: 3600000 // 1 hour cooldown between alerts
|
|
432
|
+
};
|
|
433
|
+
|
|
434
|
+
// WebSocket Events
|
|
435
|
+
const WS_EVENTS = {
|
|
436
|
+
HANDSHAKE: 'handshake',
|
|
437
|
+
HANDSHAKE_ACK: 'handshake_ack',
|
|
438
|
+
MESSAGE_RECEIVED: 'message_received',
|
|
439
|
+
AGENT_UPDATED: 'agent_updated',
|
|
440
|
+
TYPING_START: 'typing_start',
|
|
441
|
+
TYPING_STOP: 'typing_stop',
|
|
442
|
+
NOTIFICATION: 'notification',
|
|
443
|
+
ERROR: 'error'
|
|
444
|
+
};
|
|
445
|
+
|
|
446
|
+
// Connection Status
|
|
447
|
+
const CONNECTION_STATUS = {
|
|
448
|
+
CONNECTED: 'connected',
|
|
449
|
+
CONNECTING: 'connecting',
|
|
450
|
+
DISCONNECTED: 'disconnected',
|
|
451
|
+
ERROR: 'error'
|
|
452
|
+
};
|
|
453
|
+
|
|
454
|
+
// Themes
|
|
455
|
+
const THEMES = {
|
|
456
|
+
LIGHT: 'light',
|
|
457
|
+
DARK: 'dark',
|
|
458
|
+
SYSTEM: 'system'
|
|
459
|
+
};
|
|
460
|
+
|
|
461
|
+
// Notification Types
|
|
462
|
+
const NOTIFICATION_TYPES = {
|
|
463
|
+
INFO: 'info',
|
|
464
|
+
SUCCESS: 'success',
|
|
465
|
+
WARNING: 'warning',
|
|
466
|
+
ERROR: 'error'
|
|
467
|
+
};
|
|
468
|
+
|
|
469
|
+
// Orchestrator Status
|
|
470
|
+
const ORCHESTRATOR_STATUS = {
|
|
471
|
+
INITIALIZING: 'initializing',
|
|
472
|
+
RUNNING: 'running',
|
|
473
|
+
PAUSED: 'paused',
|
|
474
|
+
ERROR: 'error',
|
|
475
|
+
STOPPED: 'stopped'
|
|
476
|
+
};
|
|
477
|
+
|
|
478
|
+
// Static Code Analysis Constants
|
|
479
|
+
const STATIC_ANALYSIS = {
|
|
480
|
+
// Error severities
|
|
481
|
+
SEVERITY: {
|
|
482
|
+
CRITICAL: 'critical',
|
|
483
|
+
ERROR: 'error',
|
|
484
|
+
WARNING: 'warning',
|
|
485
|
+
INFO: 'info',
|
|
486
|
+
SUGGESTION: 'suggestion'
|
|
487
|
+
},
|
|
488
|
+
|
|
489
|
+
// Error categories
|
|
490
|
+
CATEGORY: {
|
|
491
|
+
SYNTAX: 'syntax',
|
|
492
|
+
TYPE: 'type',
|
|
493
|
+
IMPORT: 'import',
|
|
494
|
+
STYLE: 'style',
|
|
495
|
+
SECURITY: 'security',
|
|
496
|
+
PERFORMANCE: 'performance',
|
|
497
|
+
BEST_PRACTICE: 'best_practice'
|
|
498
|
+
},
|
|
499
|
+
|
|
500
|
+
// Supported languages
|
|
501
|
+
LANGUAGE: {
|
|
502
|
+
JAVASCRIPT: 'javascript',
|
|
503
|
+
TYPESCRIPT: 'typescript',
|
|
504
|
+
PYTHON: 'python',
|
|
505
|
+
CSS: 'css',
|
|
506
|
+
SCSS: 'scss',
|
|
507
|
+
LESS: 'less',
|
|
508
|
+
GO: 'go',
|
|
509
|
+
JAVA: 'java',
|
|
510
|
+
CSHARP: 'csharp',
|
|
511
|
+
RUBY: 'ruby',
|
|
512
|
+
PHP: 'php',
|
|
513
|
+
RUST: 'rust',
|
|
514
|
+
CPP: 'cpp',
|
|
515
|
+
C: 'c'
|
|
516
|
+
},
|
|
517
|
+
|
|
518
|
+
// File extension to language mapping
|
|
519
|
+
EXTENSION_TO_LANGUAGE: {
|
|
520
|
+
'.js': 'javascript',
|
|
521
|
+
'.jsx': 'javascript',
|
|
522
|
+
'.mjs': 'javascript',
|
|
523
|
+
'.cjs': 'javascript',
|
|
524
|
+
'.ts': 'typescript',
|
|
525
|
+
'.tsx': 'typescript',
|
|
526
|
+
'.py': 'python',
|
|
527
|
+
'.css': 'css',
|
|
528
|
+
'.scss': 'scss',
|
|
529
|
+
'.sass': 'scss',
|
|
530
|
+
'.less': 'less',
|
|
531
|
+
'.go': 'go',
|
|
532
|
+
'.java': 'java',
|
|
533
|
+
'.cs': 'csharp',
|
|
534
|
+
'.rb': 'ruby',
|
|
535
|
+
'.php': 'php',
|
|
536
|
+
'.rs': 'rust',
|
|
537
|
+
'.cpp': 'cpp',
|
|
538
|
+
'.cc': 'cpp',
|
|
539
|
+
'.cxx': 'cpp',
|
|
540
|
+
'.c': 'c',
|
|
541
|
+
'.h': 'c',
|
|
542
|
+
'.hpp': 'cpp'
|
|
543
|
+
},
|
|
544
|
+
|
|
545
|
+
// Framework manifest files
|
|
546
|
+
FRAMEWORK_MANIFESTS: {
|
|
547
|
+
JAVASCRIPT: 'package.json',
|
|
548
|
+
PYTHON: 'requirements.txt',
|
|
549
|
+
PYTHON_POETRY: 'pyproject.toml',
|
|
550
|
+
PYTHON_PIPENV: 'Pipfile',
|
|
551
|
+
GO: 'go.mod',
|
|
552
|
+
JAVA_MAVEN: 'pom.xml',
|
|
553
|
+
JAVA_GRADLE: 'build.gradle',
|
|
554
|
+
RUBY: 'Gemfile',
|
|
555
|
+
PHP: 'composer.json',
|
|
556
|
+
RUST: 'Cargo.toml',
|
|
557
|
+
CSHARP: '*.csproj'
|
|
558
|
+
},
|
|
559
|
+
|
|
560
|
+
// JavaScript/TypeScript frameworks
|
|
561
|
+
JS_FRAMEWORKS: {
|
|
562
|
+
REACT: 'react',
|
|
563
|
+
VUE: 'vue',
|
|
564
|
+
ANGULAR: '@angular/core',
|
|
565
|
+
SVELTE: 'svelte',
|
|
566
|
+
NEXT: 'next',
|
|
567
|
+
NUXT: 'nuxt',
|
|
568
|
+
EXPRESS: 'express',
|
|
569
|
+
NEST: '@nestjs/core',
|
|
570
|
+
FASTIFY: 'fastify',
|
|
571
|
+
KOA: 'koa'
|
|
572
|
+
},
|
|
573
|
+
|
|
574
|
+
// Python frameworks
|
|
575
|
+
PYTHON_FRAMEWORKS: {
|
|
576
|
+
DJANGO: 'django',
|
|
577
|
+
FLASK: 'flask',
|
|
578
|
+
FASTAPI: 'fastapi',
|
|
579
|
+
TORNADO: 'tornado',
|
|
580
|
+
PYRAMID: 'pyramid',
|
|
581
|
+
BOTTLE: 'bottle'
|
|
582
|
+
},
|
|
583
|
+
|
|
584
|
+
// Analysis settings
|
|
585
|
+
MAX_FILE_SIZE_FOR_ANALYSIS: 5242880, // 5MB
|
|
586
|
+
MAX_FILES_PER_BATCH: 100,
|
|
587
|
+
ANALYSIS_TIMEOUT: 60000, // 60 seconds per file
|
|
588
|
+
ENABLE_CACHE: true,
|
|
589
|
+
CACHE_DURATION: 300000 // 5 minutes
|
|
590
|
+
};
|
|
591
|
+
|
|
592
|
+
// Conversation Compactization Configuration
|
|
593
|
+
const COMPACTION_CONFIG = {
|
|
594
|
+
// Thresholds and triggers
|
|
595
|
+
DEFAULT_THRESHOLD: 0.8, // 80% of context window
|
|
596
|
+
MIN_THRESHOLD: 0.5, // Minimum allowed threshold (50%)
|
|
597
|
+
MAX_THRESHOLD: 0.95, // Maximum allowed threshold (95%)
|
|
598
|
+
|
|
599
|
+
// Segment percentages for sandwich strategy
|
|
600
|
+
BEGINNING_SEGMENT_PERCENTAGE: 0.15, // 15% from start
|
|
601
|
+
END_SEGMENT_PERCENTAGE: 0.35, // 35% from end
|
|
602
|
+
// Middle segment is the remainder (50%)
|
|
603
|
+
|
|
604
|
+
// Segment percentages for truncation strategy (model switching)
|
|
605
|
+
TRUNCATION_BEGINNING_PERCENTAGE: 0.30, // 30% from start
|
|
606
|
+
TRUNCATION_END_PERCENTAGE: 0.50, // 50% from end
|
|
607
|
+
// 20% gap is intentional for safety margin
|
|
608
|
+
|
|
609
|
+
// Model selection for compactization
|
|
610
|
+
COMPACTION_MODEL: 'azure-openai-o4-mini', // Primary: High token capacity (100k)
|
|
611
|
+
COMPACTION_MODEL_FALLBACKS: [
|
|
612
|
+
'azure-openai-gpt-5-mini', // Fallback 1: GPT-5 mini variant
|
|
613
|
+
'azure-openai-gpt4-1-mini', // Fallback 2: GPT-4.1 mini variant
|
|
614
|
+
'azure-openai-gpt-5' // Fallback 3: Full GPT-5 model
|
|
615
|
+
],
|
|
616
|
+
|
|
617
|
+
// Token limits for compaction operations
|
|
618
|
+
MAX_SUMMARY_TOKENS: 4000, // Max tokens for summary generation
|
|
619
|
+
MIN_MESSAGES_FOR_COMPACTION: 10, // Don't compact tiny conversations
|
|
620
|
+
|
|
621
|
+
// Retry configuration
|
|
622
|
+
MAX_RETRY_ATTEMPTS: 2, // Original attempt + 1 retry
|
|
623
|
+
RETRY_DELAY_MS: 2000, // 2 seconds between retries
|
|
624
|
+
|
|
625
|
+
// Aggressive compaction (for retry)
|
|
626
|
+
AGGRESSIVE_BEGINNING_PERCENTAGE: 0.10, // 10% from start on retry
|
|
627
|
+
AGGRESSIVE_END_PERCENTAGE: 0.30, // 30% from end on retry
|
|
628
|
+
|
|
629
|
+
// Token estimation
|
|
630
|
+
CHARS_PER_TOKEN_ESTIMATE: 4, // Rough estimate: 1 token ≈ 4 characters
|
|
631
|
+
TOKEN_COUNT_CACHE_TTL_MS: 60000, // Cache token counts for 1 minute
|
|
632
|
+
|
|
633
|
+
// Separator message
|
|
634
|
+
COMPACTION_SEPARATOR_MESSAGE: '⋯⋯⋯ [Conversation history truncated here - middle section removed to fit context window] ⋯⋯⋯',
|
|
635
|
+
COMPACTION_SUMMARY_PREFIX: '[CONVERSATION SUMMARY',
|
|
636
|
+
COMPACTION_SUMMARY_SUFFIX: '[END SUMMARY]',
|
|
637
|
+
|
|
638
|
+
// Timeouts
|
|
639
|
+
COMPACTION_TIMEOUT_MS: 30000, // 30 seconds max for compaction
|
|
640
|
+
|
|
641
|
+
// Quality validation
|
|
642
|
+
MIN_REDUCTION_PERCENTAGE: 10, // Compaction must reduce by at least 10%
|
|
643
|
+
MAX_ACCEPTABLE_TOKEN_COUNT_AFTER: 0.85, // After compaction, should be below 85% of context
|
|
644
|
+
};
|
|
645
|
+
|
|
646
|
+
// Compaction strategies
|
|
647
|
+
const COMPACTION_STRATEGIES = {
|
|
648
|
+
SUMMARIZATION: 'summarization', // Intelligent AI-based summarization (same model)
|
|
649
|
+
TRUNCATION: 'truncation', // Fast extraction-based (model switching)
|
|
650
|
+
AGGRESSIVE: 'aggressive', // More aggressive summarization (retry scenario)
|
|
651
|
+
};
|
|
652
|
+
|
|
653
|
+
// Compaction status for UI feedback
|
|
654
|
+
const COMPACTION_STATUS = {
|
|
655
|
+
IDLE: 'idle',
|
|
656
|
+
STARTING: 'starting',
|
|
657
|
+
IN_PROGRESS: 'in-progress',
|
|
658
|
+
COMPLETED: 'completed',
|
|
659
|
+
FAILED: 'failed',
|
|
660
|
+
RETRYING: 'retrying',
|
|
661
|
+
};
|
|
662
|
+
|
|
663
|
+
// Token counting modes
|
|
664
|
+
const TOKEN_COUNTING_MODES = {
|
|
665
|
+
ACCURATE: 'accurate', // Use tiktoken (slower, accurate)
|
|
666
|
+
ESTIMATED: 'estimated', // Character-based estimation (fast, approximate)
|
|
667
|
+
CACHED: 'cached', // Use cached value if available
|
|
668
|
+
};
|
|
669
|
+
|
|
670
|
+
// Version
|
|
671
|
+
const SYSTEM_VERSION = '1.0.0';
|
|
672
|
+
|
|
673
|
+
// Export all constants using ES module syntax
|
|
674
|
+
export {
|
|
675
|
+
SYSTEM_DEFAULTS,
|
|
676
|
+
MODEL_ROUTER_CONFIG,
|
|
677
|
+
INTERFACE_TYPES,
|
|
678
|
+
AGENT_TYPES,
|
|
679
|
+
AGENT_STATUS,
|
|
680
|
+
AGENT_MODES,
|
|
681
|
+
AGENT_MODE_STATES,
|
|
682
|
+
MESSAGE_MODES,
|
|
683
|
+
MESSAGE_ROLES,
|
|
684
|
+
CONTEXT_REFERENCE_TYPES,
|
|
685
|
+
TOOL_STATUS,
|
|
686
|
+
OPERATION_STATUS,
|
|
687
|
+
CONVERSATION_STATUS,
|
|
688
|
+
ERROR_TYPES,
|
|
689
|
+
HTTP_STATUS,
|
|
690
|
+
MODEL_PROVIDERS,
|
|
691
|
+
MODELS,
|
|
692
|
+
PLATFORM_MODELS,
|
|
693
|
+
DIRECT_MODELS,
|
|
694
|
+
MODEL_FORMAT_VERSIONS,
|
|
695
|
+
MODEL_ROUTING,
|
|
696
|
+
TOOL_NAMES,
|
|
697
|
+
FILE_EXTENSIONS,
|
|
698
|
+
LANGUAGE_MAPPING,
|
|
699
|
+
FILE_ICONS,
|
|
700
|
+
CONTEXT_ICONS,
|
|
701
|
+
STATE_FILES,
|
|
702
|
+
STATE_DIRECTORIES,
|
|
703
|
+
QUALITY_INSPECTOR_CONFIG,
|
|
704
|
+
ORCHESTRATOR_ACTIONS,
|
|
705
|
+
MESSAGE_TYPES,
|
|
706
|
+
INTER_AGENT_MESSAGE,
|
|
707
|
+
AGENT_REDIRECT_ATTRIBUTES,
|
|
708
|
+
BUDGET_LIMITS,
|
|
709
|
+
COST_PER_TOKEN,
|
|
710
|
+
USAGE_ALERTS,
|
|
711
|
+
WS_EVENTS,
|
|
712
|
+
CONNECTION_STATUS,
|
|
713
|
+
THEMES,
|
|
714
|
+
NOTIFICATION_TYPES,
|
|
715
|
+
ORCHESTRATOR_STATUS,
|
|
716
|
+
STATIC_ANALYSIS,
|
|
717
|
+
COMPACTION_CONFIG,
|
|
718
|
+
COMPACTION_STRATEGIES,
|
|
719
|
+
COMPACTION_STATUS,
|
|
720
|
+
TOKEN_COUNTING_MODES,
|
|
721
|
+
SYSTEM_VERSION
|
|
722
|
+
};
|