@loxia-labs/loxia-autopilot-one 1.0.1 → 1.0.4
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/README.md +44 -54
- package/bin/cli.js +1 -115
- package/bin/loxia-terminal-v2.js +3 -0
- package/bin/loxia-terminal.js +3 -0
- package/bin/start-with-terminal.js +3 -0
- package/package.json +15 -15
- package/scripts/install-scanners.js +1 -235
- package/src/analyzers/CSSAnalyzer.js +1 -297
- package/src/analyzers/ConfigValidator.js +1 -690
- package/src/analyzers/ESLintAnalyzer.js +1 -320
- package/src/analyzers/JavaScriptAnalyzer.js +1 -261
- package/src/analyzers/PrettierFormatter.js +1 -247
- package/src/analyzers/PythonAnalyzer.js +1 -266
- package/src/analyzers/SecurityAnalyzer.js +1 -729
- package/src/analyzers/TypeScriptAnalyzer.js +1 -247
- package/src/analyzers/codeCloneDetector/analyzer.js +1 -344
- package/src/analyzers/codeCloneDetector/detector.js +1 -203
- package/src/analyzers/codeCloneDetector/index.js +1 -160
- package/src/analyzers/codeCloneDetector/parser.js +1 -199
- package/src/analyzers/codeCloneDetector/reporter.js +1 -148
- package/src/analyzers/codeCloneDetector/scanner.js +1 -59
- package/src/core/agentPool.js +1 -1474
- package/src/core/agentScheduler.js +1 -2147
- package/src/core/contextManager.js +1 -709
- package/src/core/messageProcessor.js +1 -732
- package/src/core/orchestrator.js +1 -548
- package/src/core/stateManager.js +1 -877
- package/src/index.js +1 -631
- package/src/interfaces/cli.js +1 -549
- package/src/interfaces/terminal/__tests__/smoke/advancedFeatures.test.js +1 -0
- package/src/interfaces/terminal/__tests__/smoke/agentControl.test.js +1 -0
- package/src/interfaces/terminal/__tests__/smoke/agents.test.js +1 -0
- package/src/interfaces/terminal/__tests__/smoke/components.test.js +1 -0
- package/src/interfaces/terminal/__tests__/smoke/connection.test.js +1 -0
- package/src/interfaces/terminal/__tests__/smoke/enhancements.test.js +1 -0
- package/src/interfaces/terminal/__tests__/smoke/imports.test.js +1 -0
- package/src/interfaces/terminal/__tests__/smoke/messages.test.js +1 -0
- package/src/interfaces/terminal/__tests__/smoke/tools.test.js +1 -0
- package/src/interfaces/terminal/api/apiClient.js +1 -0
- package/src/interfaces/terminal/api/messageRouter.js +1 -0
- package/src/interfaces/terminal/api/session.js +1 -0
- package/src/interfaces/terminal/api/websocket.js +1 -0
- package/src/interfaces/terminal/components/AgentCreator.js +1 -0
- package/src/interfaces/terminal/components/AgentEditor.js +1 -0
- package/src/interfaces/terminal/components/AgentSwitcher.js +1 -0
- package/src/interfaces/terminal/components/ErrorBoundary.js +1 -0
- package/src/interfaces/terminal/components/ErrorPanel.js +1 -0
- package/src/interfaces/terminal/components/Header.js +1 -0
- package/src/interfaces/terminal/components/HelpPanel.js +1 -0
- package/src/interfaces/terminal/components/InputBox.js +1 -0
- package/src/interfaces/terminal/components/Layout.js +1 -0
- package/src/interfaces/terminal/components/LoadingSpinner.js +1 -0
- package/src/interfaces/terminal/components/MessageList.js +1 -0
- package/src/interfaces/terminal/components/MultilineTextInput.js +1 -0
- package/src/interfaces/terminal/components/SearchPanel.js +1 -0
- package/src/interfaces/terminal/components/SettingsPanel.js +1 -0
- package/src/interfaces/terminal/components/StatusBar.js +1 -0
- package/src/interfaces/terminal/components/TextInput.js +1 -0
- package/src/interfaces/terminal/config/agentEditorConstants.js +1 -0
- package/src/interfaces/terminal/config/constants.js +1 -0
- package/src/interfaces/terminal/index.js +1 -0
- package/src/interfaces/terminal/state/useAgentControl.js +1 -0
- package/src/interfaces/terminal/state/useAgents.js +1 -0
- package/src/interfaces/terminal/state/useConnection.js +1 -0
- package/src/interfaces/terminal/state/useMessages.js +1 -0
- package/src/interfaces/terminal/state/useTools.js +1 -0
- package/src/interfaces/terminal/utils/debugLogger.js +1 -0
- package/src/interfaces/terminal/utils/settingsStorage.js +1 -0
- package/src/interfaces/terminal/utils/theme.js +1 -0
- package/src/interfaces/webServer.js +1 -2162
- package/src/modules/fileExplorer/controller.js +1 -280
- package/src/modules/fileExplorer/index.js +1 -37
- package/src/modules/fileExplorer/middleware.js +1 -92
- package/src/modules/fileExplorer/routes.js +1 -125
- package/src/modules/fileExplorer/types.js +1 -44
- package/src/services/aiService.js +1 -1232
- package/src/services/apiKeyManager.js +1 -164
- package/src/services/benchmarkService.js +1 -366
- package/src/services/budgetService.js +1 -539
- package/src/services/contextInjectionService.js +1 -247
- package/src/services/conversationCompactionService.js +1 -637
- package/src/services/errorHandler.js +1 -810
- package/src/services/fileAttachmentService.js +1 -544
- package/src/services/modelRouterService.js +1 -366
- package/src/services/modelsService.js +1 -322
- package/src/services/qualityInspector.js +1 -796
- package/src/services/tokenCountingService.js +1 -536
- package/src/tools/agentCommunicationTool.js +1 -1344
- package/src/tools/agentDelayTool.js +1 -485
- package/src/tools/asyncToolManager.js +1 -604
- package/src/tools/baseTool.js +1 -800
- package/src/tools/browserTool.js +1 -920
- package/src/tools/cloneDetectionTool.js +1 -621
- package/src/tools/dependencyResolverTool.js +1 -1215
- package/src/tools/fileContentReplaceTool.js +1 -875
- package/src/tools/fileSystemTool.js +1 -1107
- package/src/tools/fileTreeTool.js +1 -853
- package/src/tools/imageTool.js +1 -901
- package/src/tools/importAnalyzerTool.js +1 -1060
- package/src/tools/jobDoneTool.js +1 -248
- package/src/tools/seekTool.js +1 -956
- package/src/tools/staticAnalysisTool.js +1 -1778
- package/src/tools/taskManagerTool.js +1 -2873
- package/src/tools/terminalTool.js +1 -2304
- package/src/tools/webTool.js +1 -1430
- package/src/types/agent.js +1 -519
- package/src/types/contextReference.js +1 -972
- package/src/types/conversation.js +1 -730
- package/src/types/toolCommand.js +1 -747
- package/src/utilities/attachmentValidator.js +1 -292
- package/src/utilities/configManager.js +1 -582
- package/src/utilities/constants.js +1 -722
- package/src/utilities/directoryAccessManager.js +1 -535
- package/src/utilities/fileProcessor.js +1 -307
- package/src/utilities/logger.js +1 -436
- package/src/utilities/tagParser.js +1 -1246
- package/src/utilities/toolConstants.js +1 -317
- package/web-ui/build/index.html +2 -2
- package/web-ui/build/static/{index-Dy2bYbOa.css → index-CClD1090.css} +1 -1
- package/web-ui/build/static/{index-CjkkcnFA.js → index-lCBai6dX.js} +66 -67
package/src/interfaces/cli.js
CHANGED
|
@@ -1,549 +1 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CLI Interface - Command Line Interface for Loxia AI Agents System
|
|
3
|
-
*
|
|
4
|
-
* Purpose:
|
|
5
|
-
* - Provide command-line interaction with the orchestrator
|
|
6
|
-
* - Handle user input and display responses
|
|
7
|
-
* - Support basic agent management and messaging
|
|
8
|
-
* - Interactive REPL-style interface
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import readline from 'readline';
|
|
12
|
-
import { INTERFACE_TYPES, ORCHESTRATOR_ACTIONS } from '../utilities/constants.js';
|
|
13
|
-
|
|
14
|
-
class CLIInterface {
|
|
15
|
-
constructor(orchestrator, logger, config = {}) {
|
|
16
|
-
this.orchestrator = orchestrator;
|
|
17
|
-
this.logger = logger;
|
|
18
|
-
this.config = config;
|
|
19
|
-
|
|
20
|
-
this.rl = null;
|
|
21
|
-
this.sessionId = `cli-${Date.now()}`;
|
|
22
|
-
this.currentAgent = null;
|
|
23
|
-
this.isRunning = false;
|
|
24
|
-
this.historySize = config.historySize || 1000;
|
|
25
|
-
this.commandHistory = [];
|
|
26
|
-
|
|
27
|
-
// CLI commands
|
|
28
|
-
this.commands = {
|
|
29
|
-
help: this.showHelp.bind(this),
|
|
30
|
-
exit: this.exit.bind(this),
|
|
31
|
-
quit: this.exit.bind(this),
|
|
32
|
-
status: this.showStatus.bind(this),
|
|
33
|
-
agents: this.listAgents.bind(this),
|
|
34
|
-
create: this.createAgent.bind(this),
|
|
35
|
-
switch: this.switchAgent.bind(this),
|
|
36
|
-
pause: this.pauseAgent.bind(this),
|
|
37
|
-
resume: this.resumeAgent.bind(this),
|
|
38
|
-
clear: this.clearScreen.bind(this),
|
|
39
|
-
history: this.showHistory.bind(this)
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Initialize CLI interface
|
|
45
|
-
* @returns {Promise<void>}
|
|
46
|
-
*/
|
|
47
|
-
async initialize() {
|
|
48
|
-
this.rl = readline.createInterface({
|
|
49
|
-
input: process.stdin,
|
|
50
|
-
output: process.stdout,
|
|
51
|
-
prompt: this.getPrompt(),
|
|
52
|
-
historySize: this.historySize
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
// Setup input handling
|
|
56
|
-
this.rl.on('line', this.handleInput.bind(this));
|
|
57
|
-
this.rl.on('close', this.exit.bind(this));
|
|
58
|
-
|
|
59
|
-
// Setup tab completion
|
|
60
|
-
this.rl.on('SIGINT', () => {
|
|
61
|
-
console.log('\n(To exit, type "exit" or press Ctrl+C again)');
|
|
62
|
-
this.rl.prompt();
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
this.isRunning = true;
|
|
66
|
-
|
|
67
|
-
// Show welcome message
|
|
68
|
-
this.showWelcome();
|
|
69
|
-
|
|
70
|
-
// Start the prompt
|
|
71
|
-
this.rl.prompt();
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Handle user input
|
|
76
|
-
* @private
|
|
77
|
-
*/
|
|
78
|
-
async handleInput(input) {
|
|
79
|
-
const trimmedInput = input.trim();
|
|
80
|
-
|
|
81
|
-
if (trimmedInput.length === 0) {
|
|
82
|
-
this.rl.prompt();
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// Add to history
|
|
87
|
-
this.commandHistory.push({
|
|
88
|
-
command: trimmedInput,
|
|
89
|
-
timestamp: new Date().toISOString()
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
// Keep history within limits
|
|
93
|
-
if (this.commandHistory.length > this.historySize) {
|
|
94
|
-
this.commandHistory.shift();
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
try {
|
|
98
|
-
await this.processInput(trimmedInput);
|
|
99
|
-
} catch (error) {
|
|
100
|
-
console.error('❌ Error:', error.message);
|
|
101
|
-
this.logger?.error('CLI command error', {
|
|
102
|
-
command: trimmedInput,
|
|
103
|
-
error: error.message
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
if (this.isRunning) {
|
|
108
|
-
this.rl.prompt();
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
/**
|
|
113
|
-
* Process user input
|
|
114
|
-
* @private
|
|
115
|
-
*/
|
|
116
|
-
async processInput(input) {
|
|
117
|
-
// Check for CLI commands
|
|
118
|
-
if (input.startsWith('/')) {
|
|
119
|
-
const commandParts = input.slice(1).split(' ');
|
|
120
|
-
const command = commandParts[0].toLowerCase();
|
|
121
|
-
const args = commandParts.slice(1);
|
|
122
|
-
|
|
123
|
-
if (this.commands[command]) {
|
|
124
|
-
await this.commands[command](args);
|
|
125
|
-
return;
|
|
126
|
-
} else {
|
|
127
|
-
console.log(`❌ Unknown command: /${command}`);
|
|
128
|
-
console.log('Type /help for available commands');
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
// If no current agent, suggest creating one
|
|
134
|
-
if (!this.currentAgent) {
|
|
135
|
-
console.log('💡 No agent selected. Create an agent first with: /create <agent-name>');
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
// Send message to current agent
|
|
140
|
-
await this.sendMessageToAgent(input);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Send message to current agent
|
|
145
|
-
* @private
|
|
146
|
-
*/
|
|
147
|
-
async sendMessageToAgent(message) {
|
|
148
|
-
console.log('📤 Sending to agent...');
|
|
149
|
-
|
|
150
|
-
try {
|
|
151
|
-
const request = {
|
|
152
|
-
interface: INTERFACE_TYPES.CLI,
|
|
153
|
-
sessionId: this.sessionId,
|
|
154
|
-
action: ORCHESTRATOR_ACTIONS.SEND_MESSAGE,
|
|
155
|
-
payload: {
|
|
156
|
-
agentId: this.currentAgent.id,
|
|
157
|
-
message,
|
|
158
|
-
mode: 'chat'
|
|
159
|
-
},
|
|
160
|
-
projectDir: process.cwd()
|
|
161
|
-
};
|
|
162
|
-
|
|
163
|
-
const response = await this.orchestrator.processRequest(request);
|
|
164
|
-
|
|
165
|
-
if (response.success) {
|
|
166
|
-
console.log('🤖 Agent response:');
|
|
167
|
-
console.log(response.data.message.content);
|
|
168
|
-
|
|
169
|
-
// Show tool results if any
|
|
170
|
-
if (response.data.toolResults && response.data.toolResults.length > 0) {
|
|
171
|
-
console.log('\n🔧 Tool execution results:');
|
|
172
|
-
for (const result of response.data.toolResults) {
|
|
173
|
-
console.log(` ${result.toolId}: ${result.status}`);
|
|
174
|
-
if (result.result) {
|
|
175
|
-
console.log(` Result: ${JSON.stringify(result.result, null, 2)}`);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
} else {
|
|
181
|
-
console.error('❌ Agent response failed:', response.error);
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
} catch (error) {
|
|
185
|
-
console.error('❌ Failed to send message:', error.message);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
/**
|
|
190
|
-
* Show welcome message
|
|
191
|
-
* @private
|
|
192
|
-
*/
|
|
193
|
-
showWelcome() {
|
|
194
|
-
console.log('');
|
|
195
|
-
console.log('🎯 Welcome to Loxia Autopilot One CLI');
|
|
196
|
-
console.log(' Type /help for available commands');
|
|
197
|
-
console.log(' Type /create <name> to create your first agent');
|
|
198
|
-
console.log('');
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
/**
|
|
202
|
-
* Show help information
|
|
203
|
-
* @private
|
|
204
|
-
*/
|
|
205
|
-
async showHelp() {
|
|
206
|
-
console.log('');
|
|
207
|
-
console.log('📚 Loxia Autopilot One CLI Commands:');
|
|
208
|
-
console.log('');
|
|
209
|
-
console.log(' /help - Show this help message');
|
|
210
|
-
console.log(' /status - Show system status');
|
|
211
|
-
console.log(' /agents - List all agents');
|
|
212
|
-
console.log(' /create <name> - Create a new agent');
|
|
213
|
-
console.log(' /switch <agent-id> - Switch to different agent');
|
|
214
|
-
console.log(' /pause <agent-id> - Pause an agent');
|
|
215
|
-
console.log(' /resume <agent-id> - Resume a paused agent');
|
|
216
|
-
console.log(' /history - Show command history');
|
|
217
|
-
console.log(' /clear - Clear screen');
|
|
218
|
-
console.log(' /exit or /quit - Exit the CLI');
|
|
219
|
-
console.log('');
|
|
220
|
-
console.log('💬 Chat with agents:');
|
|
221
|
-
console.log(' Simply type your message to send it to the current agent');
|
|
222
|
-
console.log(' Agents can use tools and communicate with other agents');
|
|
223
|
-
console.log('');
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
/**
|
|
227
|
-
* Show system status
|
|
228
|
-
* @private
|
|
229
|
-
*/
|
|
230
|
-
async showStatus() {
|
|
231
|
-
try {
|
|
232
|
-
const request = {
|
|
233
|
-
interface: INTERFACE_TYPES.CLI,
|
|
234
|
-
sessionId: this.sessionId,
|
|
235
|
-
action: ORCHESTRATOR_ACTIONS.GET_SESSION_STATE,
|
|
236
|
-
payload: {},
|
|
237
|
-
projectDir: process.cwd()
|
|
238
|
-
};
|
|
239
|
-
|
|
240
|
-
const response = await this.orchestrator.processRequest(request);
|
|
241
|
-
|
|
242
|
-
if (response.success) {
|
|
243
|
-
const state = response.data;
|
|
244
|
-
console.log('');
|
|
245
|
-
console.log('📊 System Status:');
|
|
246
|
-
console.log(` Session ID: ${state.sessionId}`);
|
|
247
|
-
console.log(` Project: ${state.projectDir}`);
|
|
248
|
-
console.log(` Agents: ${state.agents.length}`);
|
|
249
|
-
console.log(` Current Agent: ${this.currentAgent ? this.currentAgent.name : 'None'}`);
|
|
250
|
-
console.log('');
|
|
251
|
-
|
|
252
|
-
if (state.agents.length > 0) {
|
|
253
|
-
console.log('🤖 Active Agents:');
|
|
254
|
-
for (const agent of state.agents) {
|
|
255
|
-
const status = agent.isPaused ? `${agent.status} (until ${agent.pausedUntil})` : agent.status;
|
|
256
|
-
console.log(` ${agent.id}: ${agent.name} (${status})`);
|
|
257
|
-
}
|
|
258
|
-
console.log('');
|
|
259
|
-
}
|
|
260
|
-
} else {
|
|
261
|
-
console.error('❌ Failed to get status:', response.error);
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
} catch (error) {
|
|
265
|
-
console.error('❌ Status command failed:', error.message);
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
/**
|
|
270
|
-
* List all agents
|
|
271
|
-
* @private
|
|
272
|
-
*/
|
|
273
|
-
async listAgents() {
|
|
274
|
-
try {
|
|
275
|
-
const request = {
|
|
276
|
-
interface: INTERFACE_TYPES.CLI,
|
|
277
|
-
sessionId: this.sessionId,
|
|
278
|
-
action: ORCHESTRATOR_ACTIONS.LIST_AGENTS,
|
|
279
|
-
payload: {},
|
|
280
|
-
projectDir: process.cwd()
|
|
281
|
-
};
|
|
282
|
-
|
|
283
|
-
const response = await this.orchestrator.processRequest(request);
|
|
284
|
-
|
|
285
|
-
if (response.success) {
|
|
286
|
-
const agents = response.data;
|
|
287
|
-
console.log('');
|
|
288
|
-
|
|
289
|
-
if (agents.length === 0) {
|
|
290
|
-
console.log('📭 No agents created yet');
|
|
291
|
-
console.log(' Use /create <name> to create your first agent');
|
|
292
|
-
} else {
|
|
293
|
-
console.log('🤖 Available Agents:');
|
|
294
|
-
|
|
295
|
-
for (const agent of agents) {
|
|
296
|
-
const current = this.currentAgent && this.currentAgent.id === agent.id ? ' (current)' : '';
|
|
297
|
-
const status = agent.isPaused ? `${agent.status} (until ${agent.pausedUntil})` : agent.status;
|
|
298
|
-
|
|
299
|
-
console.log(` ${agent.id}: ${agent.name}${current}`);
|
|
300
|
-
console.log(` Status: ${status}`);
|
|
301
|
-
console.log(` Model: ${agent.currentModel}`);
|
|
302
|
-
console.log(` Messages: ${agent.messageCount}`);
|
|
303
|
-
console.log('');
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
} else {
|
|
308
|
-
console.error('❌ Failed to list agents:', response.error);
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
} catch (error) {
|
|
312
|
-
console.error('❌ List agents command failed:', error.message);
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
/**
|
|
317
|
-
* Create a new agent
|
|
318
|
-
* @private
|
|
319
|
-
*/
|
|
320
|
-
async createAgent(args) {
|
|
321
|
-
if (args.length === 0) {
|
|
322
|
-
console.log('❌ Usage: /create <agent-name> [model]');
|
|
323
|
-
return;
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
const name = args[0];
|
|
327
|
-
const model = args[1] || 'anthropic-sonnet';
|
|
328
|
-
|
|
329
|
-
console.log(`🔨 Creating agent "${name}" with model ${model}...`);
|
|
330
|
-
|
|
331
|
-
try {
|
|
332
|
-
const request = {
|
|
333
|
-
interface: INTERFACE_TYPES.CLI,
|
|
334
|
-
sessionId: this.sessionId,
|
|
335
|
-
action: ORCHESTRATOR_ACTIONS.CREATE_AGENT,
|
|
336
|
-
payload: {
|
|
337
|
-
name,
|
|
338
|
-
systemPrompt: `You are ${name}, an AI assistant created in the Loxia Autopilot One system. You can help with coding, analysis, and various tasks using the available tools.`,
|
|
339
|
-
model,
|
|
340
|
-
capabilities: ['terminal', 'filesystem', 'agentdelay', 'browser']
|
|
341
|
-
},
|
|
342
|
-
projectDir: process.cwd()
|
|
343
|
-
};
|
|
344
|
-
|
|
345
|
-
const response = await this.orchestrator.processRequest(request);
|
|
346
|
-
|
|
347
|
-
if (response.success) {
|
|
348
|
-
const agent = response.data;
|
|
349
|
-
this.currentAgent = agent;
|
|
350
|
-
|
|
351
|
-
console.log('✅ Agent created successfully!');
|
|
352
|
-
console.log(` ID: ${agent.id}`);
|
|
353
|
-
console.log(` Name: ${agent.name}`);
|
|
354
|
-
console.log(` Model: ${agent.preferredModel}`);
|
|
355
|
-
console.log(' Switched to this agent automatically');
|
|
356
|
-
|
|
357
|
-
// Update prompt
|
|
358
|
-
this.rl.setPrompt(this.getPrompt());
|
|
359
|
-
|
|
360
|
-
} else {
|
|
361
|
-
console.error('❌ Failed to create agent:', response.error);
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
} catch (error) {
|
|
365
|
-
console.error('❌ Create agent command failed:', error.message);
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
/**
|
|
370
|
-
* Switch to different agent
|
|
371
|
-
* @private
|
|
372
|
-
*/
|
|
373
|
-
async switchAgent(args) {
|
|
374
|
-
if (args.length === 0) {
|
|
375
|
-
console.log('❌ Usage: /switch <agent-id>');
|
|
376
|
-
return;
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
const agentId = args[0];
|
|
380
|
-
|
|
381
|
-
try {
|
|
382
|
-
// First, get the agent to verify it exists
|
|
383
|
-
const request = {
|
|
384
|
-
interface: INTERFACE_TYPES.CLI,
|
|
385
|
-
sessionId: this.sessionId,
|
|
386
|
-
action: ORCHESTRATOR_ACTIONS.GET_AGENT_STATUS,
|
|
387
|
-
payload: { agentId },
|
|
388
|
-
projectDir: process.cwd()
|
|
389
|
-
};
|
|
390
|
-
|
|
391
|
-
const response = await this.orchestrator.processRequest(request);
|
|
392
|
-
|
|
393
|
-
if (response.success) {
|
|
394
|
-
this.currentAgent = response.data;
|
|
395
|
-
console.log(`✅ Switched to agent: ${this.currentAgent.name} (${this.currentAgent.id})`);
|
|
396
|
-
|
|
397
|
-
// Update prompt
|
|
398
|
-
this.rl.setPrompt(this.getPrompt());
|
|
399
|
-
|
|
400
|
-
} else {
|
|
401
|
-
console.error('❌ Failed to switch agent:', response.error);
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
} catch (error) {
|
|
405
|
-
console.error('❌ Switch agent command failed:', error.message);
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
/**
|
|
410
|
-
* Pause an agent
|
|
411
|
-
* @private
|
|
412
|
-
*/
|
|
413
|
-
async pauseAgent(args) {
|
|
414
|
-
if (args.length === 0) {
|
|
415
|
-
console.log('❌ Usage: /pause <agent-id> [duration] [reason]');
|
|
416
|
-
return;
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
const agentId = args[0];
|
|
420
|
-
const duration = parseInt(args[1]) || 60;
|
|
421
|
-
const reason = args.slice(2).join(' ') || 'Manual pause from CLI';
|
|
422
|
-
|
|
423
|
-
try {
|
|
424
|
-
const request = {
|
|
425
|
-
interface: INTERFACE_TYPES.CLI,
|
|
426
|
-
sessionId: this.sessionId,
|
|
427
|
-
action: ORCHESTRATOR_ACTIONS.PAUSE_AGENT,
|
|
428
|
-
payload: { agentId, duration, reason },
|
|
429
|
-
projectDir: process.cwd()
|
|
430
|
-
};
|
|
431
|
-
|
|
432
|
-
const response = await this.orchestrator.processRequest(request);
|
|
433
|
-
|
|
434
|
-
if (response.success) {
|
|
435
|
-
console.log(`✅ Agent paused for ${duration} seconds`);
|
|
436
|
-
console.log(` Reason: ${reason}`);
|
|
437
|
-
} else {
|
|
438
|
-
console.error('❌ Failed to pause agent:', response.error);
|
|
439
|
-
}
|
|
440
|
-
|
|
441
|
-
} catch (error) {
|
|
442
|
-
console.error('❌ Pause agent command failed:', error.message);
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
|
|
446
|
-
/**
|
|
447
|
-
* Resume a paused agent
|
|
448
|
-
* @private
|
|
449
|
-
*/
|
|
450
|
-
async resumeAgent(args) {
|
|
451
|
-
if (args.length === 0) {
|
|
452
|
-
console.log('❌ Usage: /resume <agent-id>');
|
|
453
|
-
return;
|
|
454
|
-
}
|
|
455
|
-
|
|
456
|
-
const agentId = args[0];
|
|
457
|
-
|
|
458
|
-
try {
|
|
459
|
-
const request = {
|
|
460
|
-
interface: INTERFACE_TYPES.CLI,
|
|
461
|
-
sessionId: this.sessionId,
|
|
462
|
-
action: ORCHESTRATOR_ACTIONS.RESUME_AGENT,
|
|
463
|
-
payload: { agentId },
|
|
464
|
-
projectDir: process.cwd()
|
|
465
|
-
};
|
|
466
|
-
|
|
467
|
-
const response = await this.orchestrator.processRequest(request);
|
|
468
|
-
|
|
469
|
-
if (response.success) {
|
|
470
|
-
console.log('✅ Agent resumed successfully');
|
|
471
|
-
} else {
|
|
472
|
-
console.error('❌ Failed to resume agent:', response.error);
|
|
473
|
-
}
|
|
474
|
-
|
|
475
|
-
} catch (error) {
|
|
476
|
-
console.error('❌ Resume agent command failed:', error.message);
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
/**
|
|
481
|
-
* Show command history
|
|
482
|
-
* @private
|
|
483
|
-
*/
|
|
484
|
-
async showHistory() {
|
|
485
|
-
console.log('');
|
|
486
|
-
console.log('📜 Command History:');
|
|
487
|
-
|
|
488
|
-
if (this.commandHistory.length === 0) {
|
|
489
|
-
console.log(' No commands executed yet');
|
|
490
|
-
} else {
|
|
491
|
-
const recent = this.commandHistory.slice(-10); // Show last 10 commands
|
|
492
|
-
|
|
493
|
-
for (let i = 0; i < recent.length; i++) {
|
|
494
|
-
const entry = recent[i];
|
|
495
|
-
const time = new Date(entry.timestamp).toLocaleTimeString();
|
|
496
|
-
console.log(` ${i + 1}. [${time}] ${entry.command}`);
|
|
497
|
-
}
|
|
498
|
-
|
|
499
|
-
if (this.commandHistory.length > 10) {
|
|
500
|
-
console.log(` ... and ${this.commandHistory.length - 10} more commands`);
|
|
501
|
-
}
|
|
502
|
-
}
|
|
503
|
-
|
|
504
|
-
console.log('');
|
|
505
|
-
}
|
|
506
|
-
|
|
507
|
-
/**
|
|
508
|
-
* Clear screen
|
|
509
|
-
* @private
|
|
510
|
-
*/
|
|
511
|
-
async clearScreen() {
|
|
512
|
-
console.clear();
|
|
513
|
-
this.showWelcome();
|
|
514
|
-
}
|
|
515
|
-
|
|
516
|
-
/**
|
|
517
|
-
* Exit the CLI
|
|
518
|
-
* @private
|
|
519
|
-
*/
|
|
520
|
-
async exit() {
|
|
521
|
-
if (this.isRunning) {
|
|
522
|
-
console.log('\n👋 Goodbye!');
|
|
523
|
-
this.isRunning = false;
|
|
524
|
-
|
|
525
|
-
if (this.rl) {
|
|
526
|
-
this.rl.close();
|
|
527
|
-
}
|
|
528
|
-
}
|
|
529
|
-
}
|
|
530
|
-
|
|
531
|
-
/**
|
|
532
|
-
* Get command prompt
|
|
533
|
-
* @private
|
|
534
|
-
*/
|
|
535
|
-
getPrompt() {
|
|
536
|
-
const agentName = this.currentAgent ? this.currentAgent.name : 'no-agent';
|
|
537
|
-
return `loxia:${agentName}> `;
|
|
538
|
-
}
|
|
539
|
-
|
|
540
|
-
/**
|
|
541
|
-
* Shutdown the CLI interface
|
|
542
|
-
* @returns {Promise<void>}
|
|
543
|
-
*/
|
|
544
|
-
async shutdown() {
|
|
545
|
-
await this.exit();
|
|
546
|
-
}
|
|
547
|
-
}
|
|
548
|
-
|
|
549
|
-
export default CLIInterface;
|
|
1
|
+
const a0_0x307f97=a0_0x1ff6;(function(_0x28e5e9,_0x1d20d9){const _0x2be574=a0_0x1ff6,_0xa394f5=_0x28e5e9();while(!![]){try{const _0x2999db=-parseInt(_0x2be574(0x1db))/0x1*(-parseInt(_0x2be574(0x1d3))/0x2)+-parseInt(_0x2be574(0x20e))/0x3*(-parseInt(_0x2be574(0x1d7))/0x4)+-parseInt(_0x2be574(0x1e3))/0x5*(parseInt(_0x2be574(0x217))/0x6)+-parseInt(_0x2be574(0x1e8))/0x7*(-parseInt(_0x2be574(0x235))/0x8)+parseInt(_0x2be574(0x22f))/0x9+-parseInt(_0x2be574(0x220))/0xa*(parseInt(_0x2be574(0x222))/0xb)+-parseInt(_0x2be574(0x1ed))/0xc*(-parseInt(_0x2be574(0x237))/0xd);if(_0x2999db===_0x1d20d9)break;else _0xa394f5['push'](_0xa394f5['shift']());}catch(_0xa119b8){_0xa394f5['push'](_0xa394f5['shift']());}}}(a0_0x55f5,0x7672c));import a0_0x57bc7d from'readline';function a0_0x55f5(){const _0x57cf45=['q0Xj','mJq1mZqWuxb4sgT4','AxnqyxvZzwq','lIbB','yNjVD3nLCG','zxjYB3i','icaGvxnLic9JCMvHDguGpg5HBwu+ihrVignYzwf0zsb5B3vYigzPCNn0igfNzw50','Dg9VBfjLC3vSDhm','4PYfiefNzw50ignYzwf0zwqGC3vJy2vZC2z1BgX5iq','yMLUza','y3DK','cVcFLkCGvg9VBcbLEgvJDxrPB24GCMvZDwX0CZO','4P2mifjLC3vTzsbHz2vUDcbJB21Tyw5KigzHAwXLzdO','icaVywDLBNrZicaGicaGicaGicaGicaTieXPC3qGywXSigfNzw50CW','icaGlI4UigfUzca','4P2mieXPC3qGywDLBNrZignVBw1HBMqGzMfPBgvKoG','C3rHDhvZ','y2XLyxi','zgf0yq','AxnsDw5UAw5N','z2v0uhjVBxb0','ihnLy29Uzhm','C3DPDgnOqwDLBNq','C3rKAw4','u0vorf9nrvntquDf','8j+KLIbbDMfPBgfIBguGqwDLBNrZoG','y3jLyxrLqwDLBNq','icaGu2vZC2LVBIbjrdOG','4P2mifvZywDLoIaVCMvZDw1LidXHz2vUDc1Pzd4','icaG','C2vZC2LVBKLK','y3vYCMvUDefNzw50','icaGuhjVAMvJDdOG','r0vux1nfu1njt05Fu1rbveu','odeZvff2C2Ly','C2vUze1LC3nHz2vuB0fNzw50','ChjVy2vZC0LUChv0','4P2miefNzw50ihjLC3bVBNnLigzHAwXLzdO','icaGq3vYCMvUDcbbz2vUDdOG','icaVAgvSCcaGicaGicaGicaGicaGicaGlsbtAg93ihrOAxmGAgvSCcbTzxnZywDL','BM93','C2v0uhjVBxb0','4PYfifn3AxrJAgvKihrVigfNzw50oIa','mZm5mtaYvNvXyK14','Dg9VBeLK','BwvZC2fNzq','Bg9N','4P2miezHAwXLzcb0BYbJCMvHDguGywDLBNq6','BgvUz3rO','DgvYBwLUywW','icaGtMfTztOG','vhLWzsaVAgvSCcbMB3iGyxzHAwXHyMXLignVBw1HBMrZ','mJbcBNv6rKS','icaGicbnzxnZywDLCZOG','mZC0mZaWm3LQDvLntG','ChjVy2vZC1jLCxvLC3q','C2HVD1n0yxr1CW','y29UDgvUDa','zxHPDa','ChjVBxb0','y29TBwfUzhm','ywDLBNrKzwXHEq','iIb3AxrOig1VzgvSia','uefvu0vFquDftLq','icaGvhLWzsaVAgvSCcbMB3iGyxzHAwXHyMXLignVBw1HBMrZ','8j+tNcbdB21Tyw5KieHPC3rVCNK6','icaGicbnB2rLBdOG','mJaXnZG4mwDwEMzizG','4PYfiefNzw50ihjLC3vTzwqGC3vJy2vZC2z1BgX5','8j+sOsboBYbHz2vUDcbZzwXLy3rLzc4Gq3jLyxrLigfUigfNzw50igzPCNn0ihDPDgG6ic9JCMvHDguGpgfNzw50lw5HBwu+','y2XLyxjty3jLzw4','u0Lhsu5u','Bg94Awe6','oevHA2TXAq','C2HPzNq','mJK5ANrwuNbt','icaGu2LTCgX5ihr5CguGEw91CIbTzxnZywDLihrVihnLBMqGAxqGDg8GDgHLign1CNjLBNqGywDLBNq','4P2mievYCM9YoG','icaVAgLZDg9YEsaGicaGicaGicaGicaTifnOB3CGy29TBwfUzcbOAxn0B3j5','y2XVC2u','AgLZDg9YEvnPEMu','BgLZDefNzw50CW','ChjVAMvJDerPCG','B3jJAgvZDhjHDg9Y','y29TBwfUzeHPC3rVCNK','Cgf1C2vbz2vUDa','AM9PBG','otG5mhb6uMzRDW','Aw5PDgLHBgL6zq','C2XPy2u','ywDLBNrZ','mty1mMTtBw96Bq','8j+KLIbbz2vUDcbYzxnWB25ZztO','8j+uQcbdCMvHDgLUzYbHz2vUDcaI','4P2miezHAwXLzcb0BYbZD2L0y2GGywDLBNq6','nZvUCKPiBxq','ww91igfYzsa','icaGqwDLBNrZoIa','icaVC3DPDgnOidXHz2vUDc1Pzd4GicaTifn3AxrJAcb0BYbKAwzMzxjLBNqGywDLBNq','icaGu3DPDgnOzwqGDg8GDgHPCYbHz2vUDcbHDxrVBwf0AwnHBgX5','y2HHDa','icaGqwDLBNrZignHBIb1C2uGDg9VBhmGyw5KignVBw11BMLJyxrLihDPDgGGB3rOzxiGywDLBNrZ','icaGicbtDgf0Dxm6ia','ntbpwvDmq0i','8j+oRYbxzwXJB21LihrVieXVEgLHief1Dg9WAwXVDcbpBMuGq0Xj','AgfUzgXLsw5WDxq','BMfTzq','DgLTzxn0yw1W','mZG3ntq2nNrgruX2Ea','BgLUzq','tM9Uzq','C3vJy2vZCW'];a0_0x55f5=function(){return _0x57cf45;};return a0_0x55f5();}import{INTERFACE_TYPES,ORCHESTRATOR_ACTIONS}from'../utilities/constants.js';function a0_0x1ff6(_0x3bde9a,_0x1495e6){_0x3bde9a=_0x3bde9a-0x1c8;const _0x55f52d=a0_0x55f5();let _0x1ff67a=_0x55f52d[_0x3bde9a];if(a0_0x1ff6['pITwMe']===undefined){var _0x400038=function(_0x503f1a){const _0x24d8d1='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x57bc7d='',_0x4e88d3='';for(let _0x4e3b6c=0x0,_0x17e01b,_0x3b6ee0,_0x5c2028=0x0;_0x3b6ee0=_0x503f1a['charAt'](_0x5c2028++);~_0x3b6ee0&&(_0x17e01b=_0x4e3b6c%0x4?_0x17e01b*0x40+_0x3b6ee0:_0x3b6ee0,_0x4e3b6c++%0x4)?_0x57bc7d+=String['fromCharCode'](0xff&_0x17e01b>>(-0x2*_0x4e3b6c&0x6)):0x0){_0x3b6ee0=_0x24d8d1['indexOf'](_0x3b6ee0);}for(let _0xdddcda=0x0,_0x3b5b1b=_0x57bc7d['length'];_0xdddcda<_0x3b5b1b;_0xdddcda++){_0x4e88d3+='%'+('00'+_0x57bc7d['charCodeAt'](_0xdddcda)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4e88d3);};a0_0x1ff6['uJyZJu']=_0x400038,a0_0x1ff6['plUFSo']={},a0_0x1ff6['pITwMe']=!![];}const _0x47cd73=_0x55f52d[0x0],_0xffdf45=_0x3bde9a+_0x47cd73,_0x15793e=a0_0x1ff6['plUFSo'][_0xffdf45];return!_0x15793e?(_0x1ff67a=a0_0x1ff6['uJyZJu'](_0x1ff67a),a0_0x1ff6['plUFSo'][_0xffdf45]=_0x1ff67a):_0x1ff67a=_0x15793e,_0x1ff67a;}class CLIInterface{constructor(_0x4e88d3,_0x4e3b6c,_0x17e01b={}){const _0x24b69c=a0_0x1ff6;this['orchestrator']=_0x4e88d3,this['logger']=_0x4e3b6c,this['config']=_0x17e01b,this['rl']=null,this['sessionId']='cli-'+Date[_0x24b69c(0x214)](),this[_0x24b69c(0x20b)]=null,this[_0x24b69c(0x1ff)]=![],this['historySize']=_0x17e01b[_0x24b69c(0x1cc)]||0x3e8,this[_0x24b69c(0x1d0)]=[],this['commands']={'help':this['showHelp']['bind'](this),'exit':this[_0x24b69c(0x226)]['bind'](this),'quit':this[_0x24b69c(0x226)]['bind'](this),'status':this['showStatus'][_0x24b69c(0x1f5)](this),'agents':this['listAgents']['bind'](this),'create':this[_0x24b69c(0x206)][_0x24b69c(0x1f5)](this),'switch':this[_0x24b69c(0x202)][_0x24b69c(0x1f5)](this),'pause':this[_0x24b69c(0x1d1)]['bind'](this),'resume':this['resumeAgent'][_0x24b69c(0x1f5)](this),'clear':this['clearScreen']['bind'](this),'history':this['showHistory'][_0x24b69c(0x1f5)](this)};}async[a0_0x307f97(0x1d4)](){const _0x17168d=a0_0x307f97;this['rl']=a0_0x57bc7d['createInterface']({'input':process[_0x17168d(0x203)],'output':process['stdout'],'prompt':this['getPrompt'](),'historySize':this[_0x17168d(0x1cc)]}),this['rl']['on'](_0x17168d(0x1e9),this['handleInput'][_0x17168d(0x1f5)](this)),this['rl']['on'](_0x17168d(0x1cb),this[_0x17168d(0x226)]['bind'](this)),this['rl']['on'](_0x17168d(0x233),()=>{console['log']('\x0a(To\x20exit,\x20type\x20\x22exit\x22\x20or\x20press\x20Ctrl+C\x20again)'),this['rl']['prompt']();}),this[_0x17168d(0x1ff)]=!![],this['showWelcome'](),this['rl']['prompt']();}async[a0_0x307f97(0x1e5)](_0x3b6ee0){const _0x380b7c=a0_0x307f97,_0x5c2028=_0x3b6ee0['trim']();if(_0x5c2028['length']===0x0){this['rl'][_0x380b7c(0x227)]();return;}this['commandHistory']['push']({'command':_0x5c2028,'timestamp':new Date()['toISOString']()});this['commandHistory'][_0x380b7c(0x21c)]>this['historySize']&&this[_0x380b7c(0x1d0)][_0x380b7c(0x236)]();try{await this[_0x380b7c(0x210)](_0x5c2028);}catch(_0xdddcda){console['error'](_0x380b7c(0x1c9),_0xdddcda[_0x380b7c(0x219)]),this['logger']?.['error']('CLI\x20command\x20error',{'command':_0x5c2028,'error':_0xdddcda[_0x380b7c(0x219)]});}this['isRunning']&&this['rl']['prompt']();}async['processInput'](_0x3b5b1b){const _0x46b8db=a0_0x307f97;if(_0x3b5b1b['startsWith']('/')){const _0x54bf75=_0x3b5b1b[_0x46b8db(0x1d5)](0x1)['split']('\x20'),_0x59480f=_0x54bf75[0x0]['toLowerCase'](),_0x35ac31=_0x54bf75['slice'](0x1);if(this[_0x46b8db(0x228)][_0x59480f]){await this['commands'][_0x59480f](_0x35ac31);return;}else{console[_0x46b8db(0x21a)]('❌\x20Unknown\x20command:\x20/'+_0x59480f),console[_0x46b8db(0x21a)](_0x46b8db(0x21f));return;}}if(!this[_0x46b8db(0x20b)]){console[_0x46b8db(0x21a)](_0x46b8db(0x231));return;}await this[_0x46b8db(0x20f)](_0x3b5b1b);}async['sendMessageToAgent'](_0x5ac4bf){const _0x3ca0e9=a0_0x307f97;console['log']('📤\x20Sending\x20to\x20agent...');try{const _0xee73c6={'interface':INTERFACE_TYPES[_0x3ca0e9(0x1ec)],'sessionId':this['sessionId'],'action':ORCHESTRATOR_ACTIONS[_0x3ca0e9(0x204)],'payload':{'agentId':this['currentAgent']['id'],'message':_0x5ac4bf,'mode':_0x3ca0e9(0x1e0)},'projectDir':process[_0x3ca0e9(0x1f6)]()},_0x358e52=await this[_0x3ca0e9(0x1cf)][_0x3ca0e9(0x223)](_0xee73c6);if(_0x358e52[_0x3ca0e9(0x1eb)]){console['log'](_0x3ca0e9(0x1d8)),console[_0x3ca0e9(0x21a)](_0x358e52['data'][_0x3ca0e9(0x219)][_0x3ca0e9(0x225)]);if(_0x358e52[_0x3ca0e9(0x1fe)]['toolResults']&&_0x358e52['data'][_0x3ca0e9(0x1f3)]['length']>0x0){console['log'](_0x3ca0e9(0x1f7));for(const _0x4c462e of _0x358e52['data'][_0x3ca0e9(0x1f3)]){console['log']('\x20\x20'+_0x4c462e[_0x3ca0e9(0x218)]+':\x20'+_0x4c462e['status']),_0x4c462e['result']&&console[_0x3ca0e9(0x21a)]('\x20\x20\x20\x20Result:\x20'+JSON['stringify'](_0x4c462e['result'],null,0x2));}}}else console['error'](_0x3ca0e9(0x211),_0x358e52[_0x3ca0e9(0x1f1)]);}catch(_0x20fcee){console['error']('❌\x20Failed\x20to\x20send\x20message:',_0x20fcee[_0x3ca0e9(0x219)]);}}['showWelcome'](){const _0x7ecb45=a0_0x307f97;console[_0x7ecb45(0x21a)](''),console[_0x7ecb45(0x21a)](_0x7ecb45(0x1e4)),console[_0x7ecb45(0x21a)](_0x7ecb45(0x22c)),console[_0x7ecb45(0x21a)]('\x20\x20\x20Type\x20/create\x20<name>\x20to\x20create\x20your\x20first\x20agent'),console[_0x7ecb45(0x21a)]('');}async['showHelp'](){const _0x14dc7e=a0_0x307f97;console[_0x14dc7e(0x21a)](''),console[_0x14dc7e(0x21a)]('📚\x20Loxia\x20Autopilot\x20One\x20CLI\x20Commands:'),console[_0x14dc7e(0x21a)](''),console['log'](_0x14dc7e(0x213)),console['log']('\x20\x20/status\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20-\x20Show\x20system\x20status'),console['log'](_0x14dc7e(0x1f9)),console['log']('\x20\x20/create\x20<name>\x20\x20\x20\x20\x20\x20\x20-\x20Create\x20a\x20new\x20agent'),console['log'](_0x14dc7e(0x1de)),console['log']('\x20\x20/pause\x20<agent-id>\x20\x20\x20\x20-\x20Pause\x20an\x20agent'),console[_0x14dc7e(0x21a)]('\x20\x20/resume\x20<agent-id>\x20\x20\x20-\x20Resume\x20a\x20paused\x20agent'),console['log'](_0x14dc7e(0x1ca)),console[_0x14dc7e(0x21a)]('\x20\x20/clear\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20-\x20Clear\x20screen'),console['log']('\x20\x20/exit\x20or\x20/quit\x20\x20\x20\x20\x20\x20\x20-\x20Exit\x20the\x20CLI'),console['log'](''),console[_0x14dc7e(0x21a)]('💬\x20Chat\x20with\x20agents:'),console['log'](_0x14dc7e(0x1c8)),console[_0x14dc7e(0x21a)](_0x14dc7e(0x1e1)),console[_0x14dc7e(0x21a)]('');}async[a0_0x307f97(0x224)](){const _0x27e7d4=a0_0x307f97;try{const _0x2a67c5={'interface':INTERFACE_TYPES[_0x27e7d4(0x1ec)],'sessionId':this['sessionId'],'action':ORCHESTRATOR_ACTIONS[_0x27e7d4(0x20d)],'payload':{},'projectDir':process['cwd']()},_0x318cf3=await this[_0x27e7d4(0x1cf)][_0x27e7d4(0x223)](_0x2a67c5);if(_0x318cf3[_0x27e7d4(0x1eb)]){const _0x4263b1=_0x318cf3['data'];console['log'](''),console['log']('📊\x20System\x20Status:'),console['log'](_0x27e7d4(0x207)+_0x4263b1[_0x27e7d4(0x20a)]),console[_0x27e7d4(0x21a)](_0x27e7d4(0x20c)+_0x4263b1[_0x27e7d4(0x1ce)]),console[_0x27e7d4(0x21a)](_0x27e7d4(0x1dd)+_0x4263b1[_0x27e7d4(0x1d6)][_0x27e7d4(0x21c)]),console[_0x27e7d4(0x21a)](_0x27e7d4(0x212)+(this[_0x27e7d4(0x20b)]?this[_0x27e7d4(0x20b)]['name']:_0x27e7d4(0x1ea))),console[_0x27e7d4(0x21a)]('');if(_0x4263b1['agents'][_0x27e7d4(0x21c)]>0x0){console['log']('🤖\x20Active\x20Agents:');for(const _0x499969 of _0x4263b1[_0x27e7d4(0x1d6)]){const _0x2a3b23=_0x499969['isPaused']?_0x499969['status']+'\x20(until\x20'+_0x499969['pausedUntil']+')':_0x499969[_0x27e7d4(0x1fc)];console[_0x27e7d4(0x21a)]('\x20\x20\x20'+_0x499969['id']+':\x20'+_0x499969[_0x27e7d4(0x1e6)]+'\x20('+_0x2a3b23+')');}console[_0x27e7d4(0x21a)]('');}}else console[_0x27e7d4(0x1f1)]('❌\x20Failed\x20to\x20get\x20status:',_0x318cf3[_0x27e7d4(0x1f1)]);}catch(_0x3d1b43){console[_0x27e7d4(0x1f1)]('❌\x20Status\x20command\x20failed:',_0x3d1b43[_0x27e7d4(0x219)]);}}async[a0_0x307f97(0x1cd)](){const _0x2a0fb4=a0_0x307f97;try{const _0x3146bf={'interface':INTERFACE_TYPES['CLI'],'sessionId':this[_0x2a0fb4(0x20a)],'action':ORCHESTRATOR_ACTIONS['LIST_AGENTS'],'payload':{},'projectDir':process[_0x2a0fb4(0x1f6)]()},_0x44aa9d=await this[_0x2a0fb4(0x1cf)][_0x2a0fb4(0x223)](_0x3146bf);if(_0x44aa9d[_0x2a0fb4(0x1eb)]){const _0x378c05=_0x44aa9d['data'];console['log']('');if(_0x378c05[_0x2a0fb4(0x21c)]===0x0)console['log']('📭\x20No\x20agents\x20created\x20yet'),console['log'](_0x2a0fb4(0x1f2));else{console['log'](_0x2a0fb4(0x205));for(const _0x12f72f of _0x378c05){const _0x11241f=this['currentAgent']&&this[_0x2a0fb4(0x20b)]['id']===_0x12f72f['id']?'\x20(current)':'',_0x3e4a8f=_0x12f72f[_0x2a0fb4(0x1ee)]?_0x12f72f['status']+'\x20(until\x20'+_0x12f72f['pausedUntil']+')':_0x12f72f[_0x2a0fb4(0x1fc)];console['log'](_0x2a0fb4(0x209)+_0x12f72f['id']+':\x20'+_0x12f72f[_0x2a0fb4(0x1e6)]+_0x11241f),console['log'](_0x2a0fb4(0x1e2)+_0x3e4a8f),console['log'](_0x2a0fb4(0x22e)+_0x12f72f['currentModel']),console['log'](_0x2a0fb4(0x221)+_0x12f72f['messageCount']),console['log']('');}}}else console[_0x2a0fb4(0x1f1)]('❌\x20Failed\x20to\x20list\x20agents:',_0x44aa9d[_0x2a0fb4(0x1f1)]);}catch(_0x412b47){console['error'](_0x2a0fb4(0x1fb),_0x412b47[_0x2a0fb4(0x219)]);}}async[a0_0x307f97(0x206)](_0x3b799d){const _0x38dcb2=a0_0x307f97;if(_0x3b799d[_0x38dcb2(0x21c)]===0x0){console[_0x38dcb2(0x21a)]('❌\x20Usage:\x20/create\x20<agent-name>\x20[model]');return;}const _0x34b5d2=_0x3b799d[0x0],_0x2d8fe1=_0x3b799d[0x1]||'anthropic-sonnet';console[_0x38dcb2(0x21a)](_0x38dcb2(0x1d9)+_0x34b5d2+_0x38dcb2(0x22a)+_0x2d8fe1+'...');try{const _0x356b09={'interface':INTERFACE_TYPES['CLI'],'sessionId':this[_0x38dcb2(0x20a)],'action':ORCHESTRATOR_ACTIONS['CREATE_AGENT'],'payload':{'name':_0x34b5d2,'systemPrompt':_0x38dcb2(0x1dc)+_0x34b5d2+',\x20an\x20AI\x20assistant\x20created\x20in\x20the\x20Loxia\x20Autopilot\x20One\x20system.\x20You\x20can\x20help\x20with\x20coding,\x20analysis,\x20and\x20various\x20tasks\x20using\x20the\x20available\x20tools.','model':_0x2d8fe1,'capabilities':[_0x38dcb2(0x21d),'filesystem',_0x38dcb2(0x229),_0x38dcb2(0x1f0)]},'projectDir':process['cwd']()},_0x2714a5=await this[_0x38dcb2(0x1cf)]['processRequest'](_0x356b09);if(_0x2714a5[_0x38dcb2(0x1eb)]){const _0x1d5de3=_0x2714a5['data'];this[_0x38dcb2(0x20b)]=_0x1d5de3,console[_0x38dcb2(0x21a)](_0x38dcb2(0x1f4)),console[_0x38dcb2(0x21a)]('\x20\x20\x20ID:\x20'+_0x1d5de3['id']),console[_0x38dcb2(0x21a)](_0x38dcb2(0x21e)+_0x1d5de3[_0x38dcb2(0x1e6)]),console['log']('\x20\x20\x20Model:\x20'+_0x1d5de3['preferredModel']),console['log'](_0x38dcb2(0x1df)),this['rl']['setPrompt'](this['getPrompt']());}else console[_0x38dcb2(0x1f1)](_0x38dcb2(0x21b),_0x2714a5['error']);}catch(_0x298753){console['error']('❌\x20Create\x20agent\x20command\x20failed:',_0x298753['message']);}}async[a0_0x307f97(0x202)](_0x1f6e76){const _0x229533=a0_0x307f97;if(_0x1f6e76['length']===0x0){console[_0x229533(0x21a)]('❌\x20Usage:\x20/switch\x20<agent-id>');return;}const _0x3d7b2e=_0x1f6e76[0x0];try{const _0x45ee9b={'interface':INTERFACE_TYPES[_0x229533(0x1ec)],'sessionId':this[_0x229533(0x20a)],'action':ORCHESTRATOR_ACTIONS['GET_AGENT_STATUS'],'payload':{'agentId':_0x3d7b2e},'projectDir':process[_0x229533(0x1f6)]()},_0x122420=await this[_0x229533(0x1cf)][_0x229533(0x223)](_0x45ee9b);_0x122420['success']?(this[_0x229533(0x20b)]=_0x122420['data'],console['log'](_0x229533(0x216)+this['currentAgent']['name']+'\x20('+this['currentAgent']['id']+')'),this['rl'][_0x229533(0x215)](this[_0x229533(0x200)]())):console[_0x229533(0x1f1)](_0x229533(0x1da),_0x122420['error']);}catch(_0x17d4b5){console['error']('❌\x20Switch\x20agent\x20command\x20failed:',_0x17d4b5['message']);}}async['pauseAgent'](_0x43ad19){const _0x55a72b=a0_0x307f97;if(_0x43ad19[_0x55a72b(0x21c)]===0x0){console[_0x55a72b(0x21a)]('❌\x20Usage:\x20/pause\x20<agent-id>\x20[duration]\x20[reason]');return;}const _0x724c1e=_0x43ad19[0x0],_0x32eae8=parseInt(_0x43ad19[0x1])||0x3c,_0x249423=_0x43ad19[_0x55a72b(0x1d5)](0x2)[_0x55a72b(0x1d2)]('\x20')||'Manual pause from CLI';try{const _0x32a4ce={'interface':INTERFACE_TYPES['CLI'],'sessionId':this[_0x55a72b(0x20a)],'action':ORCHESTRATOR_ACTIONS[_0x55a72b(0x22b)],'payload':{'agentId':_0x724c1e,'duration':_0x32eae8,'reason':_0x249423},'projectDir':process[_0x55a72b(0x1f6)]()},_0x1320be=await this[_0x55a72b(0x1cf)][_0x55a72b(0x223)](_0x32a4ce);_0x1320be['success']?(console['log']('✅\x20Agent\x20paused\x20for\x20'+_0x32eae8+_0x55a72b(0x201)),console[_0x55a72b(0x21a)]('\x20\x20\x20Reason:\x20'+_0x249423)):console[_0x55a72b(0x1f1)]('❌\x20Failed\x20to\x20pause\x20agent:',_0x1320be['error']);}catch(_0x293362){console[_0x55a72b(0x1f1)]('❌\x20Pause\x20agent\x20command\x20failed:',_0x293362[_0x55a72b(0x219)]);}}async['resumeAgent'](_0x2fd105){const _0x4e2805=a0_0x307f97;if(_0x2fd105['length']===0x0){console['log'](_0x4e2805(0x208));return;}const _0x532f34=_0x2fd105[0x0];try{const _0x18cebe={'interface':INTERFACE_TYPES['CLI'],'sessionId':this['sessionId'],'action':ORCHESTRATOR_ACTIONS['RESUME_AGENT'],'payload':{'agentId':_0x532f34},'projectDir':process['cwd']()},_0x5bfeaa=await this[_0x4e2805(0x1cf)][_0x4e2805(0x223)](_0x18cebe);_0x5bfeaa['success']?console['log'](_0x4e2805(0x230)):console['error']('❌\x20Failed\x20to\x20resume\x20agent:',_0x5bfeaa['error']);}catch(_0x919d36){console['error'](_0x4e2805(0x1f8),_0x919d36['message']);}}async['showHistory'](){const _0x32b297=a0_0x307f97;console['log'](''),console['log'](_0x32b297(0x22d));if(this[_0x32b297(0x1d0)][_0x32b297(0x21c)]===0x0)console['log']('\x20\x20\x20No\x20commands\x20executed\x20yet');else{const _0x50a484=this['commandHistory']['slice'](-0xa);for(let _0x4be9ed=0x0;_0x4be9ed<_0x50a484[_0x32b297(0x21c)];_0x4be9ed++){const _0x43006d=_0x50a484[_0x4be9ed],_0x4a786e=new Date(_0x43006d[_0x32b297(0x1e7)])['toLocaleTimeString']();console['log'](_0x32b297(0x209)+(_0x4be9ed+0x1)+_0x32b297(0x1ef)+_0x4a786e+']\x20'+_0x43006d['command']);}this[_0x32b297(0x1d0)][_0x32b297(0x21c)]>0xa&&console[_0x32b297(0x21a)](_0x32b297(0x1fa)+(this[_0x32b297(0x1d0)]['length']-0xa)+'\x20more\x20commands');}console[_0x32b297(0x21a)]('');}async[a0_0x307f97(0x232)](){const _0x5851e4=a0_0x307f97;console[_0x5851e4(0x1fd)](),this['showWelcome']();}async['exit'](){const _0x239244=a0_0x307f97;this[_0x239244(0x1ff)]&&(console['log']('\x0a👋\x20Goodbye!'),this['isRunning']=![],this['rl']&&this['rl'][_0x239244(0x1cb)]());}[a0_0x307f97(0x200)](){const _0x2594a8=a0_0x307f97,_0x1b96a2=this[_0x2594a8(0x20b)]?this['currentAgent']['name']:'no-agent';return _0x2594a8(0x234)+_0x1b96a2+'>\x20';}async['shutdown'](){await this['exit']();}}export default CLIInterface;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const a0_0x54449f=a0_0x2da2;(function(_0x4afe34,_0x39b669){const _0x2afc78=a0_0x2da2,_0x388f89=_0x4afe34();while(!![]){try{const _0xda1cdc=-parseInt(_0x2afc78(0xbe))/0x1+parseInt(_0x2afc78(0xd0))/0x2*(parseInt(_0x2afc78(0xd4))/0x3)+parseInt(_0x2afc78(0xd3))/0x4+parseInt(_0x2afc78(0xdc))/0x5+-parseInt(_0x2afc78(0xd6))/0x6*(-parseInt(_0x2afc78(0xbd))/0x7)+parseInt(_0x2afc78(0xcc))/0x8+-parseInt(_0x2afc78(0xce))/0x9;if(_0xda1cdc===_0x39b669)break;else _0x388f89['push'](_0x388f89['shift']());}catch(_0x4ebd9c){_0x388f89['push'](_0x388f89['shift']());}}}(a0_0x14bc,0x1edaf));function a0_0x14bc(){const _0x28b3f6=['tgf5B3v0ignVBxbVBMvUDcbZDgLSBcbSB2fKCYbHzNrLCIbqAgfZzsaXmcbHzgrPDgLVBNm','ChjVDg90ExbL','lI4VlI4Vy29TCg9Uzw50CY9tzwfYy2Hqyw5LBc5QCW','ugHHC2uGmtaGlsbbzhzHBMnLzcbgzwf0DxjLCYaTieLTCg9YDhm','ugHHC2uGmtaGlsbbz2vUDfn3AxrJAgvYic0Gu3rYDwn0DxjL','Dg9czvvUzgvMAw5Lza','u2vHCMnOugfUzwW','sgvSCfbHBMvSigLZigeGzNvUy3rPB24Gy29TCg9Uzw50','lI4VlI4Vy29TCg9Uzw50CY9tzxr0Aw5NC1bHBMvSlMPZ','Dg9czq','lI4VlI4Vy29TCg9Uzw50CY9bz2vUDfn3AxrJAgvYlMPZ','ntu2nJrgueTOz2C','qwDLBNrdCMvHDg9YigLZigeGzNvUy3rPB24Gy29TCg9Uzw50','mJy1odiWnfnuzhbIvq','ugHHC2uGmtaGlsbdB21WB25LBNqGq29UC3rHBNrZigfUzcbdB25MAwD1CMf0Aw9UCW','oezPrLHLuW','lI4VlI4Vy29TCg9Uzw50CY9izwXWugfUzwWUANm','qM94','odm4mti0BNnYrwf2','mtq1ndyXrKXfzfvd','zNvUy3rPB24','nJy1ntHsCxzXD1G','u2v0DgLUz3nqyw5LBa','u2vHCMnOugfUzwWGAxmGysbMDw5JDgLVBIbJB21WB25LBNq','CMvUzgvY','lI4VlI4Vy29TCg9Uzw50CY9bz2vUDenYzwf0B3iUANm','sgvSCfbHBMvS','mtu3ntyWq2z5EfrU','Dg9czurLzMLUzwq','sgvSCfbHBMvSigrLzMLUzxmGC2HVCNrJDxqGy29UzMLNDxjHDgLVBNm','qwDLBNrtD2L0y2HLCG','ugHHC2uGmtaGlsbtzwfYy2Hqyw5LBcaTifn0CNvJDhvYzq','vgv4Da','ugHHC2uGmtaGlsbizwXWugfUzwWGlsbtDhj1y3r1CMu','mJH0rLLYCMm','nJq1odj1vuPlEK4','BwfW','zgvMyxvSDa'];a0_0x14bc=function(){return _0x28b3f6;};return a0_0x14bc();}import{describe,test,expect}from'@jest/globals';function a0_0x2da2(_0x2e247b,_0x312554){_0x2e247b=_0x2e247b-0xb7;const _0x14bcb0=a0_0x14bc();let _0x2da27d=_0x14bcb0[_0x2e247b];if(a0_0x2da2['UoixoN']===undefined){var _0x3573e8=function(_0x356182){const _0x544661='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3f7779='',_0x42b911='';for(let _0x552a4b=0x0,_0x496172,_0x464930,_0x54de1a=0x0;_0x464930=_0x356182['charAt'](_0x54de1a++);~_0x464930&&(_0x496172=_0x552a4b%0x4?_0x496172*0x40+_0x464930:_0x464930,_0x552a4b++%0x4)?_0x3f7779+=String['fromCharCode'](0xff&_0x496172>>(-0x2*_0x552a4b&0x6)):0x0){_0x464930=_0x544661['indexOf'](_0x464930);}for(let _0x2a462d=0x0,_0x2d2469=_0x3f7779['length'];_0x2a462d<_0x2d2469;_0x2a462d++){_0x42b911+='%'+('00'+_0x3f7779['charCodeAt'](_0x2a462d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x42b911);};a0_0x2da2['aPYrpD']=_0x3573e8,a0_0x2da2['IHurEk']={},a0_0x2da2['UoixoN']=!![];}const _0x1e0592=_0x14bcb0[0x0],_0x2759fe=_0x2e247b+_0x1e0592,_0x58816e=a0_0x2da2['IHurEk'][_0x2759fe];return!_0x58816e?(_0x2da27d=a0_0x2da2['aPYrpD'](_0x2da27d),a0_0x2da2['IHurEk'][_0x2759fe]=_0x2da27d):_0x2da27d=_0x58816e,_0x2da27d;}describe(a0_0x54449f(0xc4),()=>{test('AgentSwitcher component can be imported',async()=>{const {AgentSwitcher:_0x3f7779}=await import('../../components/AgentSwitcher.js');expect(_0x3f7779)['toBeDefined'](),expect(typeof _0x3f7779)['toBe']('function');},0x7530),test('AgentCreator component can be imported',async()=>{const _0xc876b9=a0_0x2da2,{AgentCreator:_0x42b911}=await import(_0xc876b9(0xda));expect(_0x42b911)['toBeDefined'](),expect(typeof _0x42b911)[_0xc876b9(0xca)]('function');}),test('SettingsPanel component can be imported',async()=>{const _0x442498=a0_0x2da2,{SettingsPanel:_0x552a4b}=await import('../../components/SettingsPanel.js');expect(_0x552a4b)['toBeDefined'](),expect(typeof _0x552a4b)[_0x442498(0xca)](_0x442498(0xd5));}),test('SearchPanel component can be imported',async()=>{const _0x872d5=a0_0x2da2,{SearchPanel:_0x496172}=await import(_0x872d5(0xc3));expect(_0x496172)[_0x872d5(0xb7)](),expect(typeof _0x496172)['toBe'](_0x872d5(0xd5));}),test('HelpPanel component can be imported',async()=>{const _0x5c9be9=a0_0x2da2,{HelpPanel:_0x464930}=await import(_0x5c9be9(0xd1));expect(_0x464930)[_0x5c9be9(0xb7)](),expect(typeof _0x464930)['toBe'](_0x5c9be9(0xd5));});}),describe(a0_0x54449f(0xc5),()=>{test('AgentSwitcher\x20is\x20a\x20function\x20component',async()=>{const _0xc1b4eb=a0_0x2da2,{AgentSwitcher:_0x54de1a}=await import('../../components/AgentSwitcher.js');expect(typeof _0x54de1a)['toBe'](_0xc1b4eb(0xd5)),expect(_0x54de1a[_0xc1b4eb(0xc2)]?.['render'])['toBeUndefined']();}),test('AgentSwitcher is default export',async()=>{const _0x658e60=a0_0x2da2,module=await import(_0x658e60(0xcb));expect(module['default'])[_0x658e60(0xb7)](),expect(module[_0x658e60(0xc0)])['toBe'](module[_0x658e60(0xb9)]);});}),describe('Phase\x2010\x20-\x20AgentCreator\x20-\x20Structure',()=>{const _0x3a0634=a0_0x54449f;test(_0x3a0634(0xcd),async()=>{const _0x5a496c=_0x3a0634,{AgentCreator:_0x2a462d}=await import('../../components/AgentCreator.js');expect(typeof _0x2a462d)['toBe']('function'),expect(_0x2a462d['prototype']?.[_0x5a496c(0xd9)])[_0x5a496c(0xc6)]();}),test('AgentCreator is default export',async()=>{const _0x4ca0ca=_0x3a0634,module=await import(_0x4ca0ca(0xda));expect(module[_0x4ca0ca(0xc0)])[_0x4ca0ca(0xb7)](),expect(module['default'])['toBe'](module['AgentCreator']);});}),describe('Phase\x2010\x20-\x20SettingsPanel\x20-\x20Structure',()=>{test('SettingsPanel\x20is\x20a\x20function\x20component',async()=>{const _0x1a4ca5=a0_0x2da2,{SettingsPanel:_0x2d2469}=await import(_0x1a4ca5(0xc9));expect(typeof _0x2d2469)['toBe'](_0x1a4ca5(0xd5)),expect(_0x2d2469['prototype']?.['render'])[_0x1a4ca5(0xc6)]();}),test('SettingsPanel is default export',async()=>{const _0x5e8b87=a0_0x2da2,module=await import('../../components/SettingsPanel.js');expect(module[_0x5e8b87(0xc0)])['toBeDefined'](),expect(module[_0x5e8b87(0xc0)])['toBe'](module['SettingsPanel']);});}),describe(a0_0x54449f(0xba),()=>{const _0x47135c=a0_0x54449f;test(_0x47135c(0xd8),async()=>{const _0x40fa02=_0x47135c,{SearchPanel:_0x19b3cb}=await import(_0x40fa02(0xc3));expect(typeof _0x19b3cb)[_0x40fa02(0xca)]('function'),expect(_0x19b3cb['prototype']?.['render'])[_0x40fa02(0xc6)]();}),test('SearchPanel is default export',async()=>{const _0x1ab31b=_0x47135c,module=await import('../../components/SearchPanel.js');expect(module[_0x1ab31b(0xc0)])[_0x1ab31b(0xb7)](),expect(module['default'])[_0x1ab31b(0xca)](module[_0x1ab31b(0xc7)]);});}),describe(a0_0x54449f(0xbc),()=>{const _0x3f95aa=a0_0x54449f;test(_0x3f95aa(0xc8),async()=>{const _0x12c110=_0x3f95aa,{HelpPanel:_0x27345b}=await import('../../components/HelpPanel.js');expect(typeof _0x27345b)[_0x12c110(0xca)](_0x12c110(0xd5)),expect(_0x27345b[_0x12c110(0xc2)]?.[_0x12c110(0xd9)])[_0x12c110(0xc6)]();}),test('HelpPanel is default export',async()=>{const _0x3ac225=_0x3f95aa,module=await import(_0x3ac225(0xd1));expect(module['default'])[_0x3ac225(0xb7)](),expect(module[_0x3ac225(0xc0)])['toBe'](module['HelpPanel']);});}),describe('Phase\x2010\x20-\x20Integration\x20with\x20Layout',()=>{const _0x36e476=a0_0x54449f;test('Layout component can import all Phase 10 components',async()=>{const _0x1a4033=a0_0x2da2,[_0x38f00c,_0xff39df,_0x3cc750,_0x4ab064,_0x393023]=await Promise['all']([import(_0x1a4033(0xcb)),import('../../components/AgentCreator.js'),import(_0x1a4033(0xc9)),import(_0x1a4033(0xc3)),import(_0x1a4033(0xd1))]);expect(_0x38f00c['AgentSwitcher'])['toBeDefined'](),expect(_0xff39df['AgentCreator'])['toBeDefined'](),expect(_0x3cc750['SettingsPanel'])[_0x1a4033(0xb7)](),expect(_0x4ab064[_0x1a4033(0xc7)])[_0x1a4033(0xb7)](),expect(_0x393023[_0x1a4033(0xdb)])['toBeDefined']();}),test(_0x36e476(0xc1),async()=>{const _0x288357=_0x36e476,{Layout:_0x3cd1fe}=await import('../../components/Layout.js');expect(_0x3cd1fe)[_0x288357(0xb7)](),expect(typeof _0x3cd1fe)['toBe']('function');}),test('All\x20Phase\x2010\x20components\x20use\x20React\x20and\x20Ink',async()=>{const _0x292a50=_0x36e476,_0x37010f=await import('react'),_0x4f36e5=await import('ink');expect(_0x37010f['createElement'])['toBeDefined'](),expect(_0x37010f['useState'])['toBeDefined'](),expect(_0x4f36e5[_0x292a50(0xd2)])['toBeDefined'](),expect(_0x4f36e5[_0x292a50(0xbb)])[_0x292a50(0xb7)](),expect(_0x4f36e5['useInput'])[_0x292a50(0xb7)]();});}),describe(a0_0x54449f(0xcf),()=>{const _0x10ac16=a0_0x54449f;test('AgentCreator\x20defines\x20step\x20constants',async()=>{const _0x430ab2=a0_0x2da2,module=await import('../../components/AgentCreator.js');expect(module['AgentCreator'])[_0x430ab2(0xb7)]();}),test('SettingsPanel\x20defines\x20category\x20constants',async()=>{const _0x1514cc=a0_0x2da2,module=await import('../../components/SettingsPanel.js');expect(module[_0x1514cc(0xd7)])['toBeDefined']();}),test(_0x10ac16(0xb8),async()=>{const _0xc6f8bb=_0x10ac16,module=await import(_0xc6f8bb(0xd1));expect(module['HelpPanel'])['toBeDefined']();});}),describe('Phase\x2010\x20-\x20All\x20Components\x20Export\x20Correctly',()=>{test('All components can be imported together without conflicts',async()=>{const _0x55ceb4=a0_0x2da2,_0x5e6c3e=await Promise['all']([import('../../components/AgentSwitcher.js'),import('../../components/AgentCreator.js'),import('../../components/SettingsPanel.js'),import(_0x55ceb4(0xc3)),import(_0x55ceb4(0xd1))]),_0x34035e=_0x5e6c3e[_0x55ceb4(0xbf)](_0x39dce4=>Object['keys'](_0x39dce4)[0x0]),_0x42f0ef=new Set(_0x34035e);expect(_0x42f0ef['size'])[_0x55ceb4(0xca)](_0x34035e['length']);});});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function a0_0x1269(){const _0x554cb4=['A2v5CW','quDftLq','ywDLBNrFBw9Kzv9JAgfUz2vK','tu9eruXFq0furuDpuLK','ywXS','Dg9vChbLCKnHC2u','mZuWsvr5sNLW','quDftLrtx01prevFr0vu','BgvUz3rO','lI4VlI4Vy29UzMLNl2nVBNn0yw50CY5QCW','revfufnfruS','mZy4mfvqy3b4CG','t1jdsevtvfjbve9s','qwDLBNqGq29UDhjVBcbnyw5Hz2vTzw50ic0Gtw9KzwWGrMLSDgvYAw5N','otDRrKXKB1e','Dg9dB250ywLU','oMfNzw50swq','qu5usfjpueLd','lI4VlI4VyxbPl3DLyNnVy2TLDc5QCW','zMLSDgvY','l2fWAs9SBg0VBw9KzwXZ','tu9eruXFq0furuDpuLKGy29UC3rHBNrZigfYzsbKzwzPBMvK','lI4VlI4VyxbPl21LC3nHz2vsB3v0zxiUANm','tu9eruXFq0furuDpuLKGAw5JBhvKzxmGBwfQB3iGteXnihbYB3zPzgvYCW','teXnx01prevmuW','q0Hbva','y2XHDwrLltmTns1ZB25Uzxq','y2f0zwDVCNK','mtm1mMrQzK9wuW','Bg9JywXOB3n0','Dg9czq','tuLduK9tt0zu','u2vZC2LVBK1HBMfNzxi','yw50AhjVCgLJ','mZG2mZm2DNrMCNDN','qwDLBNqGq29UDhjVBcbnyw5Hz2vTzw50ic0Gsw1WB3j0CW','quDftLrtx01prevFu0vu','quDftLrFtu9erv9dsefor0ve','lI4VlI4VyxbPl3nLC3nPB24UANm','nZeWndaZEMDQuNPQ','qvbjx0vorfbpsu5uuW','BwLJCM9ZB2z0','t1bftKfj','Dg9nyxrJAa','quDftLrFtu9ersb2ywX1zxmGyxjLihvWCgvYy2fZzq','Dg9czurLzMLUzwq','ndqXodDqEw53CKG','twvZC2fNzvjVDxrLCG','qwDLBNqGq29UDhjVBcbnyw5Hz2vTzw50ic0Gv2vIu29JA2v0iev2zw50ieHHBMrSzxjZ','DxnLqwDLBNrdB250CM9S','mte1yuLhyuzH','zgvLChnLzwS','odKYmZvRwgPuv04','lI4VlI4VC3rHDguVDxnLqwDLBNrdB250CM9SlMPZ','tu9eruXFq0furuDpuLKGy2fUigjLihvZzwqGDg8GzMLSDgvYig1VzgvSCYbIEsbJyxrLz29YEq','z3b0ltq','quDftLrFtu9ersbZDxbWB3j0CYb0B2DNBgLUzYbIzxr3zwvUig1VzgvZ','teXnig1VzgvSCYbLBMrWB2LUDcbLEgLZDhm','qwDLBNqGq29UDhjVBcbnyw5Hz2vTzw50ic0Gtw9KzsbtD2L0y2HPBMCGtg9NAwm','zNvUy3rPB24','mta4mdHKyvL6s0O','Dg9mB3DLCKnHC2u','qwDLBNqGBw9KzsbLBMrWB2LUDhmGzM9SBg93ifjfu1rMDwWGCgf0DgvYBG','nZK5mZHJzhvjAMK'];a0_0x1269=function(){return _0x554cb4;};return a0_0x1269();}const a0_0x710662=a0_0x556f;(function(_0x2d6c29,_0x24e5ea){const _0x31d9e7=a0_0x556f,_0x41d065=_0x2d6c29();while(!![]){try{const _0x296c5b=parseInt(_0x31d9e7(0xa2))/0x1*(-parseInt(_0x31d9e7(0x9f))/0x2)+parseInt(_0x31d9e7(0x7b))/0x3+-parseInt(_0x31d9e7(0x76))/0x4+-parseInt(_0x31d9e7(0x86))/0x5*(parseInt(_0x31d9e7(0x93))/0x6)+parseInt(_0x31d9e7(0x90))/0x7*(parseInt(_0x31d9e7(0x70))/0x8)+-parseInt(_0x31d9e7(0x88))/0x9*(-parseInt(_0x31d9e7(0x9a))/0xa)+parseInt(_0x31d9e7(0x82))/0xb;if(_0x296c5b===_0x24e5ea)break;else _0x41d065['push'](_0x41d065['shift']());}catch(_0x1c9091){_0x41d065['push'](_0x41d065['shift']());}}}(a0_0x1269,0x41416));function a0_0x556f(_0x31af30,_0x2bb236){_0x31af30=_0x31af30-0x6e;const _0x126941=a0_0x1269();let _0x556fc2=_0x126941[_0x31af30];if(a0_0x556f['uqghAH']===undefined){var _0x39b9d2=function(_0x414c67){const _0x27a280='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x49a8eb='',_0x4dc86f='';for(let _0x3b090e=0x0,_0x61a7,_0x1c256a,_0x13c832=0x0;_0x1c256a=_0x414c67['charAt'](_0x13c832++);~_0x1c256a&&(_0x61a7=_0x3b090e%0x4?_0x61a7*0x40+_0x1c256a:_0x1c256a,_0x3b090e++%0x4)?_0x49a8eb+=String['fromCharCode'](0xff&_0x61a7>>(-0x2*_0x3b090e&0x6)):0x0){_0x1c256a=_0x27a280['indexOf'](_0x1c256a);}for(let _0x42ab24=0x0,_0x19cef8=_0x49a8eb['length'];_0x42ab24<_0x19cef8;_0x42ab24++){_0x4dc86f+='%'+('00'+_0x49a8eb['charCodeAt'](_0x42ab24)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4dc86f);};a0_0x556f['mTNfzQ']=_0x39b9d2,a0_0x556f['tvider']={},a0_0x556f['uqghAH']=!![];}const _0x122daf=_0x126941[0x0],_0x563a01=_0x31af30+_0x122daf,_0x40304e=a0_0x556f['tvider'][_0x563a01];return!_0x40304e?(_0x556fc2=a0_0x556f['mTNfzQ'](_0x556fc2),a0_0x556f['tvider'][_0x563a01]=_0x556fc2):_0x556fc2=_0x40304e,_0x556fc2;}import{describe,test,expect}from'@jest/globals';describe(a0_0x710662(0x77),()=>{test('useAgentControl hook can be imported',async()=>{const _0x5c33aa=a0_0x556f,{useAgentControl:_0x49a8eb}=await import('../../state/useAgentControl.js');expect(_0x49a8eb)['toBeDefined'](),expect(typeof _0x49a8eb)[_0x5c33aa(0x72)]('function');}),test('useAgentControl is default export',async()=>{const _0x1a3d76=a0_0x556f,module=await import(_0x1a3d76(0x89));expect(module['default'])['toBeDefined'](),expect(typeof module['default'])['toBe'](_0x1a3d76(0x8f)),expect(module['default'])['toBe'](module[_0x1a3d76(0x85)]);});}),describe('Agent\x20Control\x20Management\x20-\x20Constants',()=>{const _0x28d315=a0_0x710662;test('AGENT_MODE\x20constants\x20are\x20defined',async()=>{const _0x2c3811=a0_0x556f,{AGENT_MODE:_0x4dc86f}=await import('../../config/constants.js');expect(_0x4dc86f)[_0x2c3811(0x81)](),expect(_0x4dc86f[_0x2c3811(0xad)])[_0x2c3811(0x72)](_0x2c3811(0xad)),expect(_0x4dc86f['AGENT'])['toBe'](_0x2c3811(0x95));}),test(_0x28d315(0xa9),async()=>{const _0x3c2320=_0x28d315,{MODEL_CATEGORY:_0x3b090e}=await import(_0x3c2320(0x9d));expect(_0x3b090e)[_0x3c2320(0x81)](),expect(_0x3b090e['ANTHROPIC'])[_0x3c2320(0x72)]('anthropic'),expect(_0x3b090e[_0x3c2320(0x7e)])['toBe']('openai'),expect(_0x3b090e['DEEPSEEK'])['toBe']('deepseek'),expect(_0x3b090e[_0x3c2320(0x73)])[_0x3c2320(0x72)]('microsoft');}),test('Mode\x20and\x20model\x20API\x20endpoints\x20are\x20defined',async()=>{const _0x3600d4=_0x28d315,{API_ENDPOINTS:_0x61a7}=await import(_0x3600d4(0x9d));expect(_0x61a7[_0x3600d4(0x78)])[_0x3600d4(0x72)]('/api/agents/:agentId/mode'),expect(_0x61a7[_0x3600d4(0x9b)])['toBe']('/api/agents/:agentId/mode'),expect(_0x61a7[_0x3600d4(0xac)])[_0x3600d4(0x72)](_0x3600d4(0xa8));}),test('WS_MESSAGE_TYPE\x20includes\x20mode\x20and\x20model\x20change\x20events',async()=>{const _0x3d99d6=_0x28d315,{WS_MESSAGE_TYPE:_0x1c256a}=await import(_0x3d99d6(0x9d));expect(_0x1c256a)[_0x3d99d6(0x81)](),expect(_0x1c256a['AGENT_MODE_CHANGED'])['toBe'](_0x3d99d6(0x96));});}),describe('Agent\x20Control\x20Management\x20-\x20Integration',()=>{test('useAgentControl\x20hook\x20integrates\x20with\x20Session\x20and\x20MessageRouter',async()=>{const _0x33b4dc=a0_0x556f,{useAgentControl:_0x13c832}=await import('../../state/useAgentControl.js'),{SessionManager:_0x42ab24}=await import(_0x33b4dc(0x7a)),{MessageRouter:_0x19cef8}=await import(_0x33b4dc(0xaa)),{WebSocketManager:_0x3fd204}=await import(_0x33b4dc(0xa6)),_0x1c93a7=new _0x42ab24('localhost',0x1f90),_0x1b5404=new _0x3fd204(_0x33b4dc(0x71),0x1f90),_0x59a47a=new _0x19cef8(_0x1b5404);expect(_0x1c93a7)['toBeDefined'](),expect(_0x59a47a)['toBeDefined'](),expect(typeof _0x13c832)[_0x33b4dc(0x72)]('function');}),test('Full agent control stack can be imported together',async()=>{const _0x2da4a2=a0_0x556f,[_0x525c24,_0x450004,_0x1829ef,_0x29abc2,_0x338f70]=await Promise[_0x2da4a2(0x98)]([import('../../config/constants.js'),import(_0x2da4a2(0x7a)),import(_0x2da4a2(0xa6)),import('../../api/messageRouter.js'),import('../../state/useAgentControl.js')]);expect(_0x525c24['AGENT_MODE'])[_0x2da4a2(0x81)](),expect(_0x525c24[_0x2da4a2(0x97)])['toBeDefined'](),expect(_0x525c24[_0x2da4a2(0x7c)])[_0x2da4a2(0x81)](),expect(_0x450004[_0x2da4a2(0x74)])[_0x2da4a2(0x81)](),expect(_0x1829ef['WebSocketManager'])['toBeDefined'](),expect(_0x29abc2[_0x2da4a2(0x83)])[_0x2da4a2(0x81)](),expect(_0x338f70['useAgentControl'])['toBeDefined']();});}),describe('Agent\x20Control\x20Management\x20-\x20API\x20Endpoints\x20Validation',()=>{const _0x166192=a0_0x710662;test(_0x166192(0x92),async()=>{const _0x24831d=_0x166192,{API_ENDPOINTS:_0x1dcb15}=await import(_0x24831d(0x9d));expect(_0x1dcb15[_0x24831d(0x78)])['toMatch'](/^\/api\/agents/),expect(_0x1dcb15[_0x24831d(0x9b)])[_0x24831d(0x7f)](/^\/api\/agents/),expect(_0x1dcb15[_0x24831d(0x78)])[_0x24831d(0xa3)](_0x24831d(0xa4)),expect(_0x1dcb15[_0x24831d(0x9b)])[_0x24831d(0xa3)](_0x24831d(0xa4));}),test(_0x166192(0x8d),async()=>{const _0x5e217c=_0x166192,{API_ENDPOINTS:_0x5bc611}=await import(_0x5e217c(0x9d));expect(_0x5bc611['LLM_MODELS'])[_0x5e217c(0x81)](),expect(_0x5bc611[_0x5e217c(0xac)])[_0x5e217c(0x72)](_0x5e217c(0xa8));}),test('Orchestrator\x20endpoint\x20exists\x20for\x20model\x20and\x20config\x20operations',async()=>{const _0x31c7dc=_0x166192,{API_ENDPOINTS:_0x589c05}=await import('../../config/constants.js');expect(_0x589c05['ORCHESTRATOR'])[_0x31c7dc(0x81)](),expect(_0x589c05[_0x31c7dc(0xa0)])[_0x31c7dc(0x72)]('/api/orchestrator');});}),describe('Agent\x20Control\x20Management\x20-\x20Hook\x20Interface\x20Verification',()=>{test('useAgentControl\x20returns\x20expected\x20interface\x20shape',async()=>{const _0x11ad86=a0_0x556f,{useAgentControl:_0x14f831}=await import(_0x11ad86(0x89));expect(_0x14f831['length'])[_0x11ad86(0x72)](0x3);});}),describe('Agent\x20Control\x20Management\x20-\x20Constants\x20Validation',()=>{const _0x1b6597=a0_0x710662;test('AGENT_MODE\x20has\x20exactly\x20two\x20modes',async()=>{const _0x1bfbe9=a0_0x556f,{AGENT_MODE:_0x592286}=await import('../../config/constants.js'),_0x331c2f=Object['keys'](_0x592286);expect(_0x331c2f[_0x1bfbe9(0x9c)])[_0x1bfbe9(0x72)](0x2),expect(_0x331c2f)['toContain'](_0x1bfbe9(0xad)),expect(_0x331c2f)[_0x1bfbe9(0xa3)]('AGENT');}),test(_0x1b6597(0x80),async()=>{const _0x1ce62d=_0x1b6597,{AGENT_MODE:_0x296c96}=await import(_0x1ce62d(0x9d));expect(_0x296c96[_0x1ce62d(0xad)])['toBe'](_0x1ce62d(0xad)),expect(_0x296c96['AGENT'])[_0x1ce62d(0x72)](_0x1ce62d(0x95)),expect(_0x296c96[_0x1ce62d(0xad)])[_0x1ce62d(0x72)](_0x296c96['CHAT'][_0x1ce62d(0x99)]()),expect(_0x296c96['AGENT'])['toBe'](_0x296c96['AGENT']['toUpperCase']());}),test('MODEL_CATEGORY\x20values\x20are\x20lowercase',async()=>{const _0x36c727=_0x1b6597,{MODEL_CATEGORY:_0x4d94ee}=await import(_0x36c727(0x9d));expect(_0x4d94ee[_0x36c727(0xa5)])['toBe'](_0x36c727(0x75)),expect(_0x4d94ee['OPENAI'])['toBe']('openai'),expect(_0x4d94ee['DEEPSEEK'])['toBe'](_0x36c727(0x87)),expect(_0x4d94ee[_0x36c727(0x73)])['toBe'](_0x36c727(0x7d)),expect(_0x4d94ee[_0x36c727(0xa5)])[_0x36c727(0x72)](_0x4d94ee['ANTHROPIC'][_0x36c727(0x91)]()),expect(_0x4d94ee[_0x36c727(0x7e)])[_0x36c727(0x72)](_0x4d94ee['OPENAI']['toLowerCase']());}),test(_0x1b6597(0xab),async()=>{const _0x16a048=_0x1b6597,{MODEL_CATEGORY:_0x23c7eb}=await import('../../config/constants.js'),_0x212ff0=Object[_0x16a048(0x94)](_0x23c7eb);expect(_0x212ff0)[_0x16a048(0xa3)](_0x16a048(0xa5)),expect(_0x212ff0)['toContain']('OPENAI'),expect(_0x212ff0)['toContain'](_0x16a048(0x9e)),expect(_0x212ff0)[_0x16a048(0xa3)](_0x16a048(0x73));});}),describe(a0_0x710662(0x84),()=>{test('MessageRouter\x20has\x20mode\x20change\x20event\x20handler\x20registered',async()=>{const _0x11fe8b=a0_0x556f,{MessageRouter:_0x241c13}=await import('../../api/messageRouter.js'),{WebSocketManager:_0x3bf5c0}=await import('../../api/websocket.js'),{WS_MESSAGE_TYPE:_0x46760c}=await import(_0x11fe8b(0x9d)),_0x224b74=new _0x3bf5c0(_0x11fe8b(0x71),0x1f90),_0x4c74a5=new _0x241c13(_0x224b74);expect(_0x4c74a5['hasHandler'](_0x46760c[_0x11fe8b(0x79)]))['toBe'](!![]);});}),describe(a0_0x710662(0x8e),()=>{const _0x2919c2=a0_0x710662;test(_0x2919c2(0x8c),async()=>{const _0x2c1bf5=_0x2919c2,{AGENT_MODE:_0x208ce0}=await import('../../config/constants.js');let _0x5e9f0f=_0x208ce0[_0x2c1bf5(0xad)],_0x3d4bc1=_0x5e9f0f===_0x208ce0['CHAT']?_0x208ce0[_0x2c1bf5(0x95)]:_0x208ce0[_0x2c1bf5(0xad)];expect(_0x3d4bc1)['toBe'](_0x208ce0['AGENT']),_0x5e9f0f=_0x208ce0[_0x2c1bf5(0x95)],_0x3d4bc1=_0x5e9f0f===_0x208ce0['CHAT']?_0x208ce0[_0x2c1bf5(0x95)]:_0x208ce0['CHAT'],expect(_0x3d4bc1)[_0x2c1bf5(0x72)](_0x208ce0[_0x2c1bf5(0xad)]);});}),describe(a0_0x710662(0xa1),()=>{const _0x5731db=a0_0x710662;test(_0x5731db(0x8a),async()=>{const _0x3e878b=_0x5731db,{MODEL_CATEGORY:_0x2fad0d}=await import(_0x3e878b(0x9d)),_0x2c239f=[{'id':_0x3e878b(0x6e),'category':_0x2fad0d['ANTHROPIC']},{'id':_0x3e878b(0x8b),'category':_0x2fad0d['OPENAI']},{'id':'deepseek-chat','category':_0x2fad0d[_0x3e878b(0x9e)]}],_0x118f85=_0x2c239f[_0x3e878b(0xa7)](_0x25b7a7=>_0x25b7a7[_0x3e878b(0x6f)]===_0x2fad0d['ANTHROPIC']),_0xb462ed=_0x2c239f[_0x3e878b(0xa7)](_0x74e857=>_0x74e857[_0x3e878b(0x6f)]===_0x2fad0d[_0x3e878b(0x7e)]);expect(_0x118f85[_0x3e878b(0x9c)])[_0x3e878b(0x72)](0x1),expect(_0x118f85[0x0]['id'])[_0x3e878b(0x72)]('claude-3-5-sonnet'),expect(_0xb462ed[_0x3e878b(0x9c)])[_0x3e878b(0x72)](0x1),expect(_0xb462ed[0x0]['id'])['toBe'](_0x3e878b(0x8b));});});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const a0_0x573a7e=a0_0x4e8a;function a0_0x28b6(){const _0x20d820=['mty5odCYogn2rgrfCG','lI4VlI4VyxbPl3DLyNnVy2TLDc5QCW','y3vZDg9T','nefytfbTtq','nZC5nJqWmefnvunMDW','C3LZDgvTlwfKBwLUAxn0CMf0B3i','DxnLqwDLBNrZ','nZyYnJLpuNPdEu0','mJrzufvSCNG','zxjYB3i','Bg9JywXOB3n0','qwDLBNqGtwfUywDLBwvUDcaTiefqssbfBMrWB2LUDhmGvMfSAwrHDgLVBG','y29KAw5NlwfZC2LZDgfUDa','zNvUy3rPB24','l2fWAs9VCMnOzxn0CMf0B3i','lI4VlI4VC3rHDguVDxnLqwDLBNrZlMPZ','zgvMyxvSDa','Dg9czurLzMLUzwq','q09esu5hx0ftu0Ltvefova','ywn0AxzL','qwDLBNqGtwfUywDLBwvUDcaTieLTCg9YDhm','Dg9dB250ywLU','q1vtve9n','u2vZC2LVBK1HBMfNzxi','oMfNzw50swq','mtqWmZmWCNHjBfPH','qwXSigfNzw50igvUzhbVAw50CYbMB2XSB3CGuKvtvgz1BcbWyxr0zxjU','AwrSzq','lI4VlI4VyxbPl21LC3nHz2vsB3v0zxiUANm','qwDLBNqGtwfUywDLBwvUDcaTienVBNn0yw50CW','rvjst1i','qunusvzf','odaXnJGXmfDrqvPdBG','mtrnD1DYvKW','quDftLrtx0Lnue9sva','zgf0ys1HBMfSExn0','u1Ltvevnx0fetuLosvnuuKfut1i','Dg9nyxrJAa','Dg9czq','mZC0otG0mxLAz09rzq','quDftLrtx01prevFr0vu','quDftLrtx1nut1a','lI4VlI4Vy29UzMLNl2nVBNn0yw50CY5QCW','quDftLrFu1rbvfvtignVBNn0yw50CYbHCMuGzgvMAw5Lza','twvZC2fNzvjVDxrLCG','q1jfqvrjvKvFv1jjvevs','y3jLyxrPDMuTD3jPDgvY','l2fWAs9Hz2vUDhmVoMfNzw50swqVC3rVCa','quDftLrtx01prevFu0vu','quDftLrFtu9ersbJB25ZDgfUDhmGyxjLigrLzMLUzwq','mtq4odyXndbbwuLnuKK','uefvu0ve','qwDLBNqGqvbjigvUzhbVAw50CYbHCMuGzgvMAw5Lza','quDftLrtx0fwquLmqujmrq'];a0_0x28b6=function(){return _0x20d820;};return a0_0x28b6();}(function(_0xc0bc70,_0x54a1e7){const _0x1b559c=a0_0x4e8a,_0x5c936a=_0xc0bc70();while(!![]){try{const _0x3c43e9=parseInt(_0x1b559c(0x1d0))/0x1*(-parseInt(_0x1b559c(0x1b0))/0x2)+-parseInt(_0x1b559c(0x1d4))/0x3*(parseInt(_0x1b559c(0x1d5))/0x4)+-parseInt(_0x1b559c(0x1d1))/0x5+parseInt(_0x1b559c(0x1b7))/0x6+parseInt(_0x1b559c(0x1b8))/0x7*(parseInt(_0x1b559c(0x1cd))/0x8)+-parseInt(_0x1b559c(0x1be))/0x9+parseInt(_0x1b559c(0x1c9))/0xa;if(_0x3c43e9===_0x54a1e7)break;else _0x5c936a['push'](_0x5c936a['shift']());}catch(_0x52cce2){_0x5c936a['push'](_0x5c936a['shift']());}}}(a0_0x28b6,0xcd270));function a0_0x4e8a(_0x4024b9,_0x4acc9c){_0x4024b9=_0x4024b9-0x1a5;const _0x28b6f3=a0_0x28b6();let _0x4e8a49=_0x28b6f3[_0x4024b9];if(a0_0x4e8a['OvuVmc']===undefined){var _0x479807=function(_0x3b80c9){const _0x46f9e7='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x58e01a='',_0x2ececd='';for(let _0x43a4cc=0x0,_0x479dc6,_0x38098c,_0x276f8d=0x0;_0x38098c=_0x3b80c9['charAt'](_0x276f8d++);~_0x38098c&&(_0x479dc6=_0x43a4cc%0x4?_0x479dc6*0x40+_0x38098c:_0x38098c,_0x43a4cc++%0x4)?_0x58e01a+=String['fromCharCode'](0xff&_0x479dc6>>(-0x2*_0x43a4cc&0x6)):0x0){_0x38098c=_0x46f9e7['indexOf'](_0x38098c);}for(let _0x161d7e=0x0,_0x267f31=_0x58e01a['length'];_0x161d7e<_0x267f31;_0x161d7e++){_0x2ececd+='%'+('00'+_0x58e01a['charCodeAt'](_0x161d7e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2ececd);};a0_0x4e8a['igzLZV']=_0x479807,a0_0x4e8a['NQhBVd']={},a0_0x4e8a['OvuVmc']=!![];}const _0x147c55=_0x28b6f3[0x0],_0xc9d15b=_0x4024b9+_0x147c55,_0x5c32b1=a0_0x4e8a['NQhBVd'][_0xc9d15b];return!_0x5c32b1?(_0x4e8a49=a0_0x4e8a['igzLZV'](_0x4e8a49),a0_0x4e8a['NQhBVd'][_0xc9d15b]=_0x4e8a49):_0x4e8a49=_0x5c32b1,_0x4e8a49;}import{describe,test,expect}from'@jest/globals';describe(a0_0x573a7e(0x1ab),()=>{test('useAgents hook can be imported',async()=>{const _0x5e79f0=a0_0x4e8a,{useAgents:_0x58e01a}=await import('../../state/useAgents.js');expect(_0x58e01a)['toBeDefined'](),expect(typeof _0x58e01a)[_0x5e79f0(0x1bd)](_0x5e79f0(0x1da));}),test('useAgents is default export',async()=>{const _0x252a34=a0_0x4e8a,module=await import(_0x252a34(0x1a6));expect(module[_0x252a34(0x1a7)])[_0x252a34(0x1a8)](),expect(typeof module['default'])[_0x252a34(0x1bd)](_0x252a34(0x1da)),expect(module['default'])['toBe'](module[_0x252a34(0x1d3)]);});}),describe(a0_0x573a7e(0x1b4),()=>{const _0x1beda1=a0_0x573a7e;test(_0x1beda1(0x1c8),async()=>{const _0x4075d8=_0x1beda1,{AGENT_MODE:_0x2ececd}=await import('../../config/constants.js');expect(_0x2ececd)['toBeDefined'](),expect(_0x2ececd['CHAT'])[_0x4075d8(0x1bd)]('CHAT'),expect(_0x2ececd['AGENT'])['toBe']('AGENT');}),test(_0x1beda1(0x1c2),async()=>{const _0x4ad8eb=_0x1beda1,{AGENT_STATUS:_0x43a4cc}=await import('../../config/constants.js');expect(_0x43a4cc)['toBeDefined'](),expect(_0x43a4cc[_0x4ad8eb(0x1b6)])[_0x4ad8eb(0x1bd)](_0x4ad8eb(0x1aa)),expect(_0x43a4cc[_0x4ad8eb(0x1ca)])[_0x4ad8eb(0x1bd)]('paused'),expect(_0x43a4cc['IDLE'])[_0x4ad8eb(0x1bd)](_0x4ad8eb(0x1b2)),expect(_0x43a4cc[_0x4ad8eb(0x1b5)])['toBe'](_0x4ad8eb(0x1d6)),expect(_0x43a4cc['ARCHIVED'])['toBe']('archived');}),test(_0x1beda1(0x1cb),async()=>{const _0x9a5029=_0x1beda1,{API_ENDPOINTS:_0x479dc6}=await import(_0x9a5029(0x1c1));expect(_0x479dc6[_0x9a5029(0x1cc)])['toBe']('/api/agents/available'),expect(_0x479dc6['AGENTS_METADATA'])['toBe']('/api/agents/:agentId/metadata'),expect(_0x479dc6['AGENTS_IMPORT'])['toBe']('/api/agents/import'),expect(_0x479dc6[_0x9a5029(0x1c7)])['toBe']('/api/agents/:agentId/mode'),expect(_0x479dc6[_0x9a5029(0x1bf)])[_0x9a5029(0x1bd)]('/api/agents/:agentId/mode'),expect(_0x479dc6[_0x9a5029(0x1c0)])['toBe'](_0x9a5029(0x1c6));}),test('AGENT_TEMPLATES\x20constants\x20are\x20defined',async()=>{const _0x476cd4=_0x1beda1,{AGENT_TEMPLATES:_0x38098c}=await import('../../config/constants.js');expect(_0x38098c)[_0x476cd4(0x1a8)](),expect(_0x38098c[_0x476cd4(0x1a9)])['toBe'](_0x476cd4(0x1d9)),expect(_0x38098c['DATA_ANALYST'])[_0x476cd4(0x1bd)](_0x476cd4(0x1ba)),expect(_0x38098c[_0x476cd4(0x1c4)])['toBe'](_0x476cd4(0x1c5)),expect(_0x38098c[_0x476cd4(0x1bb)])[_0x476cd4(0x1bd)](_0x476cd4(0x1d2)),expect(_0x38098c[_0x476cd4(0x1ad)])['toBe'](_0x476cd4(0x1cf));});}),describe('Agent\x20Management\x20-\x20Integration',()=>{test('useAgents\x20hook\x20integrates\x20with\x20Session\x20and\x20MessageRouter',async()=>{const _0x56326c=a0_0x4e8a,{useAgents:_0x276f8d}=await import(_0x56326c(0x1a6)),{SessionManager:_0x161d7e}=await import('../../api/session.js'),{MessageRouter:_0x267f31}=await import(_0x56326c(0x1b3)),{WebSocketManager:_0x5a82bd}=await import('../../api/websocket.js'),_0x1fcc3f=new _0x161d7e(_0x56326c(0x1d7),0x1f90),_0x4a41de=new _0x5a82bd(_0x56326c(0x1d7),0x1f90),_0x40d31d=new _0x267f31(_0x4a41de);expect(_0x1fcc3f)['toBeDefined'](),expect(_0x40d31d)['toBeDefined'](),expect(typeof _0x276f8d)[_0x56326c(0x1bd)](_0x56326c(0x1da));}),test('Full agent management stack can be imported together',async()=>{const _0x47d16d=a0_0x4e8a,[_0x57d4ac,_0x28c1c5,_0x5bd981,_0x4d0069,_0x503385]=await Promise['all']([import('../../config/constants.js'),import('../../api/session.js'),import(_0x47d16d(0x1ce)),import(_0x47d16d(0x1b3)),import(_0x47d16d(0x1a6))]);expect(_0x57d4ac['AGENT_MODE'])['toBeDefined'](),expect(_0x28c1c5[_0x47d16d(0x1ae)])['toBeDefined'](),expect(_0x5bd981['WebSocketManager'])[_0x47d16d(0x1a8)](),expect(_0x4d0069[_0x47d16d(0x1c3)])[_0x47d16d(0x1a8)](),expect(_0x503385['useAgents'])['toBeDefined']();});}),describe(a0_0x573a7e(0x1d8),()=>{const _0x1a9b66=a0_0x573a7e;test(_0x1a9b66(0x1b1),async()=>{const _0x4514b7=_0x1a9b66,{API_ENDPOINTS:_0x1edfbe}=await import(_0x4514b7(0x1c1));expect(_0x1edfbe['AGENTS_AVAILABLE'])['toMatch'](/^\/api\/agents/),expect(_0x1edfbe['AGENTS_METADATA'])['toMatch'](/^\/api\/agents/),expect(_0x1edfbe[_0x4514b7(0x1b9)])['toMatch'](/^\/api\/agents/),expect(_0x1edfbe['AGENTS_MODE_SET'])[_0x4514b7(0x1bc)](/^\/api\/agents/),expect(_0x1edfbe['AGENTS_MODE_GET'])[_0x4514b7(0x1bc)](/^\/api\/agents/),expect(_0x1edfbe['AGENTS_STOP'])['toMatch'](/^\/api\/agents/),expect(_0x1edfbe['AGENTS_METADATA'])['toContain'](_0x4514b7(0x1af)),expect(_0x1edfbe[_0x4514b7(0x1c7)])['toContain'](':agentId'),expect(_0x1edfbe[_0x4514b7(0x1bf)])[_0x4514b7(0x1ac)](':agentId'),expect(_0x1edfbe['AGENTS_STOP'])[_0x4514b7(0x1ac)](_0x4514b7(0x1af));}),test('Orchestrator\x20endpoint\x20exists\x20for\x20agent\x20operations',async()=>{const _0x2fcdfa=_0x1a9b66,{API_ENDPOINTS:_0x5a2c51}=await import('../../config/constants.js');expect(_0x5a2c51['ORCHESTRATOR'])['toBeDefined'](),expect(_0x5a2c51['ORCHESTRATOR'])[_0x2fcdfa(0x1bd)](_0x2fcdfa(0x1a5));});});
|