@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.
Files changed (120) hide show
  1. package/README.md +44 -54
  2. package/bin/cli.js +1 -115
  3. package/bin/loxia-terminal-v2.js +3 -0
  4. package/bin/loxia-terminal.js +3 -0
  5. package/bin/start-with-terminal.js +3 -0
  6. package/package.json +15 -15
  7. package/scripts/install-scanners.js +1 -235
  8. package/src/analyzers/CSSAnalyzer.js +1 -297
  9. package/src/analyzers/ConfigValidator.js +1 -690
  10. package/src/analyzers/ESLintAnalyzer.js +1 -320
  11. package/src/analyzers/JavaScriptAnalyzer.js +1 -261
  12. package/src/analyzers/PrettierFormatter.js +1 -247
  13. package/src/analyzers/PythonAnalyzer.js +1 -266
  14. package/src/analyzers/SecurityAnalyzer.js +1 -729
  15. package/src/analyzers/TypeScriptAnalyzer.js +1 -247
  16. package/src/analyzers/codeCloneDetector/analyzer.js +1 -344
  17. package/src/analyzers/codeCloneDetector/detector.js +1 -203
  18. package/src/analyzers/codeCloneDetector/index.js +1 -160
  19. package/src/analyzers/codeCloneDetector/parser.js +1 -199
  20. package/src/analyzers/codeCloneDetector/reporter.js +1 -148
  21. package/src/analyzers/codeCloneDetector/scanner.js +1 -59
  22. package/src/core/agentPool.js +1 -1474
  23. package/src/core/agentScheduler.js +1 -2147
  24. package/src/core/contextManager.js +1 -709
  25. package/src/core/messageProcessor.js +1 -732
  26. package/src/core/orchestrator.js +1 -548
  27. package/src/core/stateManager.js +1 -877
  28. package/src/index.js +1 -631
  29. package/src/interfaces/cli.js +1 -549
  30. package/src/interfaces/terminal/__tests__/smoke/advancedFeatures.test.js +1 -0
  31. package/src/interfaces/terminal/__tests__/smoke/agentControl.test.js +1 -0
  32. package/src/interfaces/terminal/__tests__/smoke/agents.test.js +1 -0
  33. package/src/interfaces/terminal/__tests__/smoke/components.test.js +1 -0
  34. package/src/interfaces/terminal/__tests__/smoke/connection.test.js +1 -0
  35. package/src/interfaces/terminal/__tests__/smoke/enhancements.test.js +1 -0
  36. package/src/interfaces/terminal/__tests__/smoke/imports.test.js +1 -0
  37. package/src/interfaces/terminal/__tests__/smoke/messages.test.js +1 -0
  38. package/src/interfaces/terminal/__tests__/smoke/tools.test.js +1 -0
  39. package/src/interfaces/terminal/api/apiClient.js +1 -0
  40. package/src/interfaces/terminal/api/messageRouter.js +1 -0
  41. package/src/interfaces/terminal/api/session.js +1 -0
  42. package/src/interfaces/terminal/api/websocket.js +1 -0
  43. package/src/interfaces/terminal/components/AgentCreator.js +1 -0
  44. package/src/interfaces/terminal/components/AgentEditor.js +1 -0
  45. package/src/interfaces/terminal/components/AgentSwitcher.js +1 -0
  46. package/src/interfaces/terminal/components/ErrorBoundary.js +1 -0
  47. package/src/interfaces/terminal/components/ErrorPanel.js +1 -0
  48. package/src/interfaces/terminal/components/Header.js +1 -0
  49. package/src/interfaces/terminal/components/HelpPanel.js +1 -0
  50. package/src/interfaces/terminal/components/InputBox.js +1 -0
  51. package/src/interfaces/terminal/components/Layout.js +1 -0
  52. package/src/interfaces/terminal/components/LoadingSpinner.js +1 -0
  53. package/src/interfaces/terminal/components/MessageList.js +1 -0
  54. package/src/interfaces/terminal/components/MultilineTextInput.js +1 -0
  55. package/src/interfaces/terminal/components/SearchPanel.js +1 -0
  56. package/src/interfaces/terminal/components/SettingsPanel.js +1 -0
  57. package/src/interfaces/terminal/components/StatusBar.js +1 -0
  58. package/src/interfaces/terminal/components/TextInput.js +1 -0
  59. package/src/interfaces/terminal/config/agentEditorConstants.js +1 -0
  60. package/src/interfaces/terminal/config/constants.js +1 -0
  61. package/src/interfaces/terminal/index.js +1 -0
  62. package/src/interfaces/terminal/state/useAgentControl.js +1 -0
  63. package/src/interfaces/terminal/state/useAgents.js +1 -0
  64. package/src/interfaces/terminal/state/useConnection.js +1 -0
  65. package/src/interfaces/terminal/state/useMessages.js +1 -0
  66. package/src/interfaces/terminal/state/useTools.js +1 -0
  67. package/src/interfaces/terminal/utils/debugLogger.js +1 -0
  68. package/src/interfaces/terminal/utils/settingsStorage.js +1 -0
  69. package/src/interfaces/terminal/utils/theme.js +1 -0
  70. package/src/interfaces/webServer.js +1 -2162
  71. package/src/modules/fileExplorer/controller.js +1 -280
  72. package/src/modules/fileExplorer/index.js +1 -37
  73. package/src/modules/fileExplorer/middleware.js +1 -92
  74. package/src/modules/fileExplorer/routes.js +1 -125
  75. package/src/modules/fileExplorer/types.js +1 -44
  76. package/src/services/aiService.js +1 -1232
  77. package/src/services/apiKeyManager.js +1 -164
  78. package/src/services/benchmarkService.js +1 -366
  79. package/src/services/budgetService.js +1 -539
  80. package/src/services/contextInjectionService.js +1 -247
  81. package/src/services/conversationCompactionService.js +1 -637
  82. package/src/services/errorHandler.js +1 -810
  83. package/src/services/fileAttachmentService.js +1 -544
  84. package/src/services/modelRouterService.js +1 -366
  85. package/src/services/modelsService.js +1 -322
  86. package/src/services/qualityInspector.js +1 -796
  87. package/src/services/tokenCountingService.js +1 -536
  88. package/src/tools/agentCommunicationTool.js +1 -1344
  89. package/src/tools/agentDelayTool.js +1 -485
  90. package/src/tools/asyncToolManager.js +1 -604
  91. package/src/tools/baseTool.js +1 -800
  92. package/src/tools/browserTool.js +1 -920
  93. package/src/tools/cloneDetectionTool.js +1 -621
  94. package/src/tools/dependencyResolverTool.js +1 -1215
  95. package/src/tools/fileContentReplaceTool.js +1 -875
  96. package/src/tools/fileSystemTool.js +1 -1107
  97. package/src/tools/fileTreeTool.js +1 -853
  98. package/src/tools/imageTool.js +1 -901
  99. package/src/tools/importAnalyzerTool.js +1 -1060
  100. package/src/tools/jobDoneTool.js +1 -248
  101. package/src/tools/seekTool.js +1 -956
  102. package/src/tools/staticAnalysisTool.js +1 -1778
  103. package/src/tools/taskManagerTool.js +1 -2873
  104. package/src/tools/terminalTool.js +1 -2304
  105. package/src/tools/webTool.js +1 -1430
  106. package/src/types/agent.js +1 -519
  107. package/src/types/contextReference.js +1 -972
  108. package/src/types/conversation.js +1 -730
  109. package/src/types/toolCommand.js +1 -747
  110. package/src/utilities/attachmentValidator.js +1 -292
  111. package/src/utilities/configManager.js +1 -582
  112. package/src/utilities/constants.js +1 -722
  113. package/src/utilities/directoryAccessManager.js +1 -535
  114. package/src/utilities/fileProcessor.js +1 -307
  115. package/src/utilities/logger.js +1 -436
  116. package/src/utilities/tagParser.js +1 -1246
  117. package/src/utilities/toolConstants.js +1 -317
  118. package/web-ui/build/index.html +2 -2
  119. package/web-ui/build/static/{index-Dy2bYbOa.css → index-CClD1090.css} +1 -1
  120. package/web-ui/build/static/{index-CjkkcnFA.js → index-lCBai6dX.js} +66 -67
@@ -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));});});