ciscollm-cli 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +112 -0
  3. package/dist/cli/ui/ui.d.ts +10 -0
  4. package/dist/cli/ui/ui.js +25 -0
  5. package/dist/cli/ui/ui.js.map +1 -0
  6. package/dist/core/agent/AgentLoop.d.ts +38 -0
  7. package/dist/core/agent/AgentLoop.js +562 -0
  8. package/dist/core/agent/AgentLoop.js.map +1 -0
  9. package/dist/core/agent/CommandReferenceEngine.d.ts +43 -0
  10. package/dist/core/agent/CommandReferenceEngine.js +366 -0
  11. package/dist/core/agent/CommandReferenceEngine.js.map +1 -0
  12. package/dist/core/agent/MultiAgentCoordinator.d.ts +12 -0
  13. package/dist/core/agent/MultiAgentCoordinator.js +57 -0
  14. package/dist/core/agent/MultiAgentCoordinator.js.map +1 -0
  15. package/dist/core/agent/PromptEngine.d.ts +3 -0
  16. package/dist/core/agent/PromptEngine.js +57 -0
  17. package/dist/core/agent/PromptEngine.js.map +1 -0
  18. package/dist/core/guardrails/CommandFirewall.d.ts +10 -0
  19. package/dist/core/guardrails/CommandFirewall.js +108 -0
  20. package/dist/core/guardrails/CommandFirewall.js.map +1 -0
  21. package/dist/core/guardrails/ErrorAnalyzer.d.ts +7 -0
  22. package/dist/core/guardrails/ErrorAnalyzer.js +16 -0
  23. package/dist/core/guardrails/ErrorAnalyzer.js.map +1 -0
  24. package/dist/core/rollback/TransactionManager.d.ts +13 -0
  25. package/dist/core/rollback/TransactionManager.js +144 -0
  26. package/dist/core/rollback/TransactionManager.js.map +1 -0
  27. package/dist/index.d.ts +2 -0
  28. package/dist/index.js +578 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/infrastructure/llm/LLMClient.d.ts +11 -0
  31. package/dist/infrastructure/llm/LLMClient.js +94 -0
  32. package/dist/infrastructure/llm/LLMClient.js.map +1 -0
  33. package/dist/infrastructure/llm/LocalLLMClient.d.ts +7 -0
  34. package/dist/infrastructure/llm/LocalLLMClient.js +39 -0
  35. package/dist/infrastructure/llm/LocalLLMClient.js.map +1 -0
  36. package/dist/infrastructure/llm/ToolDefinitions.d.ts +179 -0
  37. package/dist/infrastructure/llm/ToolDefinitions.js +150 -0
  38. package/dist/infrastructure/llm/ToolDefinitions.js.map +1 -0
  39. package/dist/infrastructure/protocols/BaseSession.d.ts +10 -0
  40. package/dist/infrastructure/protocols/BaseSession.js +39 -0
  41. package/dist/infrastructure/protocols/BaseSession.js.map +1 -0
  42. package/dist/infrastructure/protocols/MockSession.d.ts +43 -0
  43. package/dist/infrastructure/protocols/MockSession.js +505 -0
  44. package/dist/infrastructure/protocols/MockSession.js.map +1 -0
  45. package/dist/infrastructure/protocols/PlinkSerial.d.ts +16 -0
  46. package/dist/infrastructure/protocols/PlinkSerial.js +132 -0
  47. package/dist/infrastructure/protocols/PlinkSerial.js.map +1 -0
  48. package/dist/infrastructure/protocols/SshSession.d.ts +19 -0
  49. package/dist/infrastructure/protocols/SshSession.js +110 -0
  50. package/dist/infrastructure/protocols/SshSession.js.map +1 -0
  51. package/dist/infrastructure/protocols/TelnetSession.d.ts +17 -0
  52. package/dist/infrastructure/protocols/TelnetSession.js +177 -0
  53. package/dist/infrastructure/protocols/TelnetSession.js.map +1 -0
  54. package/dist/shared/constants.d.ts +8 -0
  55. package/dist/shared/constants.js +25 -0
  56. package/dist/shared/constants.js.map +1 -0
  57. package/dist/shared/types.d.ts +22 -0
  58. package/dist/shared/types.js +3 -0
  59. package/dist/shared/types.js.map +1 -0
  60. package/package.json +49 -0
package/dist/index.js ADDED
@@ -0,0 +1,578 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const commander_1 = require("commander");
8
+ const inquirer_1 = __importDefault(require("inquirer"));
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ const MultiAgentCoordinator_1 = require("./core/agent/MultiAgentCoordinator");
11
+ const PlinkSerial_1 = require("./infrastructure/protocols/PlinkSerial");
12
+ const SshSession_1 = require("./infrastructure/protocols/SshSession");
13
+ const TelnetSession_1 = require("./infrastructure/protocols/TelnetSession");
14
+ const LLMClient_1 = require("./infrastructure/llm/LLMClient");
15
+ const AgentLoop_1 = require("./core/agent/AgentLoop");
16
+ const MockSession_1 = require("./infrastructure/protocols/MockSession");
17
+ const ui_1 = require("./cli/ui/ui");
18
+ const program = new commander_1.Command();
19
+ let activeCoordinator = null;
20
+ const cleanup = async () => {
21
+ if (activeCoordinator) {
22
+ ui_1.logger.info('Cleaning up active terminal connections and sub-processes...');
23
+ try {
24
+ await activeCoordinator.disconnectAll();
25
+ }
26
+ catch (e) {
27
+ ui_1.logger.error(`Cleanup Error: ${e.message}`);
28
+ }
29
+ activeCoordinator = null;
30
+ }
31
+ };
32
+ process.on('SIGINT', async () => {
33
+ ui_1.logger.warn('SIGINT received. Shutting down...');
34
+ await cleanup();
35
+ process.exit(130);
36
+ });
37
+ process.on('SIGTERM', async () => {
38
+ ui_1.logger.warn('SIGTERM received. Shutting down...');
39
+ await cleanup();
40
+ process.exit(143);
41
+ });
42
+ process.on('exit', () => {
43
+ if (activeCoordinator) {
44
+ for (const [id, session] of activeCoordinator.getSessions().entries()) {
45
+ if (session instanceof PlinkSerial_1.PlinkSerialSession) {
46
+ const proc = session.getProcess();
47
+ if (proc && !proc.killed) {
48
+ console.log(chalk_1.default.red(`[index.ts]: Killing Plink sub-process for "${id}" on exit...`));
49
+ proc.kill('SIGKILL');
50
+ }
51
+ }
52
+ }
53
+ }
54
+ });
55
+ process.on('uncaughtException', async (err) => {
56
+ ui_1.logger.critical(`Uncaught Exception: ${err.stack || err.message}`);
57
+ await cleanup();
58
+ process.exit(1);
59
+ });
60
+ program
61
+ .name('ciscollm')
62
+ .description('Autonomous Agent Interface managing local Cisco Hardware using LLM Tooling.')
63
+ .version('1.0.0');
64
+ program
65
+ .command('run')
66
+ .description('Execute network configuration or optimization tasks on target Cisco hardware')
67
+ .option('--protocol <type>', 'Connection protocol (serial | ssh | telnet | mock)', 'serial')
68
+ .option('--provider <type>', 'LLM provider mode (local | cloud)', 'local')
69
+ .option('--api-key <key>', 'API key for cloud provider (OpenRouter)')
70
+ .option('-c, --com <ports>', 'COM Port interface identifier(s), comma-separated (e.g. COM3 or COM3,COM4)')
71
+ .option('-b, --baud <rate>', 'Serial transmission baud rate constraint', '9600')
72
+ .option('--host <address>', 'Target IP address or hostname (comma-separated for multi-device)')
73
+ .option('--port <port>', 'Target connection port')
74
+ .option('-u, --username <name>', 'Device login username')
75
+ .option('-p, --password <pass>', 'Device login password')
76
+ .option('--local-type <type>', 'Local service type (ollama | lmstudio)', 'ollama')
77
+ .option('--model <name>', 'Model name for compilation')
78
+ .option('--endpoint <url>', 'Ollama/compatibility API server endpoint')
79
+ .option('--strict-command-ref', 'Enable strict command validation against cf_command_ref.pdf index')
80
+ .option('--no-ref-telemetry', 'Disable command-reference telemetry logs during startup')
81
+ .option('-g, --goal <intent>', 'The execution goal for the agent to achieve')
82
+ .action(async (options) => {
83
+ let provider = options.provider;
84
+ let localType = options.localType;
85
+ let apiKey = options.api_key || options.apiKey;
86
+ let model = options.model;
87
+ let endpoint = options.endpoint;
88
+ let protocol = options.protocol;
89
+ let com = options.com;
90
+ let baud = options.baud;
91
+ let host = options.host;
92
+ let port = options.port;
93
+ let username = options.username;
94
+ let password = options.password;
95
+ let goal = options.goal;
96
+ let strictCommandRef = options.strictCommandRef === true;
97
+ let refTelemetry = options.refTelemetry !== false;
98
+ if (!goal) {
99
+ ui_1.logger.heading('Cisco LLM Agent Interactive Setup Wizard');
100
+ const detectedComs = await PlinkSerial_1.PlinkSerialSession.listAvailableComPorts();
101
+ if (detectedComs.length > 0) {
102
+ ui_1.logger.info(`Detected active COM ports on system: ${chalk_1.default.bold.yellow(detectedComs.join(', '))}`);
103
+ }
104
+ let currentStep = 'PROVIDER';
105
+ const history = [];
106
+ const answers = {
107
+ provider: provider || 'local',
108
+ localType: localType || 'ollama',
109
+ apiKey: apiKey || '',
110
+ model: model || '',
111
+ endpoint: endpoint || '',
112
+ protocol: protocol || 'serial',
113
+ com: com || '',
114
+ baud: baud || '9600',
115
+ host: host || '',
116
+ port: port || '',
117
+ username: username || '',
118
+ password: password || '',
119
+ goal: ''
120
+ };
121
+ const goForward = (nextStep) => {
122
+ history.push(currentStep);
123
+ currentStep = nextStep;
124
+ };
125
+ const goBack = () => {
126
+ if (history.length > 0) {
127
+ currentStep = history.pop();
128
+ }
129
+ else {
130
+ ui_1.logger.warn('Already at the first step.');
131
+ }
132
+ };
133
+ const refreshConsole = () => {
134
+ console.clear();
135
+ ui_1.logger.heading('Cisco LLM Agent Interactive Setup Wizard');
136
+ if (detectedComs.length > 0) {
137
+ ui_1.logger.info(`Detected active COM ports on system: ${chalk_1.default.bold.yellow(detectedComs.join(', '))}`);
138
+ }
139
+ console.log('');
140
+ };
141
+ while (currentStep !== 'CONFIRMATION') {
142
+ refreshConsole();
143
+ switch (currentStep) {
144
+ case 'PROVIDER': {
145
+ const ans = await inquirer_1.default.prompt([
146
+ {
147
+ type: 'list',
148
+ name: 'provider',
149
+ message: 'Select LLM Provider:',
150
+ choices: [
151
+ { name: 'Local (Ollama / LM Studio)', value: 'local' },
152
+ { name: 'Cloud (OpenRouter)', value: 'cloud' }
153
+ ],
154
+ default: answers.provider
155
+ }
156
+ ]);
157
+ answers.provider = ans.provider;
158
+ if (answers.provider === 'local') {
159
+ goForward('LOCAL_TYPE');
160
+ }
161
+ else {
162
+ goForward('API_KEY');
163
+ }
164
+ break;
165
+ }
166
+ case 'LOCAL_TYPE': {
167
+ const ans = await inquirer_1.default.prompt([
168
+ {
169
+ type: 'list',
170
+ name: 'localType',
171
+ message: 'Select Local LLM Service:',
172
+ choices: [
173
+ { name: 'Ollama', value: 'ollama' },
174
+ { name: 'LM Studio', value: 'lmstudio' },
175
+ { name: chalk_1.default.dim('< Go Back'), value: '__back__' }
176
+ ],
177
+ default: answers.localType
178
+ }
179
+ ]);
180
+ if (ans.localType === '__back__') {
181
+ goBack();
182
+ }
183
+ else {
184
+ answers.localType = ans.localType;
185
+ goForward('MODEL');
186
+ }
187
+ break;
188
+ }
189
+ case 'API_KEY': {
190
+ const ans = await inquirer_1.default.prompt([
191
+ {
192
+ type: 'input',
193
+ name: 'apiKey',
194
+ message: 'Enter OpenRouter API Key (or type "back" to go back):',
195
+ default: answers.apiKey
196
+ }
197
+ ]);
198
+ if (ans.apiKey.trim().toLowerCase() === 'back') {
199
+ goBack();
200
+ }
201
+ else {
202
+ answers.apiKey = ans.apiKey;
203
+ goForward('MODEL');
204
+ }
205
+ break;
206
+ }
207
+ case 'MODEL': {
208
+ const defaultModel = answers.model || (answers.provider === 'cloud'
209
+ ? 'nvidia/nemotron-3-super-120b-a12b:free'
210
+ : 'qwen3.5-4b');
211
+ const ans = await inquirer_1.default.prompt([
212
+ {
213
+ type: 'input',
214
+ name: 'model',
215
+ message: 'Enter LLM Model Name (or type "back" to go back):',
216
+ default: defaultModel
217
+ }
218
+ ]);
219
+ if (ans.model.trim().toLowerCase() === 'back') {
220
+ goBack();
221
+ }
222
+ else {
223
+ answers.model = ans.model;
224
+ goForward('ENDPOINT');
225
+ }
226
+ break;
227
+ }
228
+ case 'ENDPOINT': {
229
+ const defaultEndpoint = answers.endpoint || (answers.provider === 'cloud'
230
+ ? 'https://openrouter.ai/api/v1'
231
+ : (answers.localType === 'lmstudio'
232
+ ? 'http://127.0.0.1:1234/v1'
233
+ : 'http://127.0.0.1:11434/v1'));
234
+ const ans = await inquirer_1.default.prompt([
235
+ {
236
+ type: 'input',
237
+ name: 'endpoint',
238
+ message: 'Enter LLM API Endpoint URL (or type "back" to go back):',
239
+ default: defaultEndpoint
240
+ }
241
+ ]);
242
+ if (ans.endpoint.trim().toLowerCase() === 'back') {
243
+ goBack();
244
+ }
245
+ else {
246
+ answers.endpoint = ans.endpoint;
247
+ goForward('PROTOCOL');
248
+ }
249
+ break;
250
+ }
251
+ case 'PROTOCOL': {
252
+ const ans = await inquirer_1.default.prompt([
253
+ {
254
+ type: 'list',
255
+ name: 'protocol',
256
+ message: 'Select Connection Protocol:',
257
+ choices: [
258
+ { name: 'serial', value: 'serial' },
259
+ { name: 'ssh', value: 'ssh' },
260
+ { name: 'telnet', value: 'telnet' },
261
+ { name: 'mock', value: 'mock' },
262
+ { name: chalk_1.default.dim('< Go Back'), value: '__back__' }
263
+ ],
264
+ default: answers.protocol
265
+ }
266
+ ]);
267
+ if (ans.protocol === '__back__') {
268
+ goBack();
269
+ }
270
+ else {
271
+ answers.protocol = ans.protocol;
272
+ if (answers.protocol === 'serial') {
273
+ goForward('SERIAL_COM');
274
+ }
275
+ else if (answers.protocol === 'ssh' || answers.protocol === 'telnet') {
276
+ goForward('IP_HOST');
277
+ }
278
+ else {
279
+ goForward('GOAL');
280
+ }
281
+ }
282
+ break;
283
+ }
284
+ case 'SERIAL_COM': {
285
+ const ans = await inquirer_1.default.prompt([
286
+ {
287
+ type: 'input',
288
+ name: 'com',
289
+ message: 'Enter COM Port name(s) (comma-separated, e.g. COM3 or COM3,COM4) (or type "back" to go back):',
290
+ default: answers.com,
291
+ validate: (input) => {
292
+ if (input.trim().toLowerCase() === 'back')
293
+ return true;
294
+ return input.trim().length > 0 ? true : 'COM port is required.';
295
+ }
296
+ }
297
+ ]);
298
+ if (ans.com.trim().toLowerCase() === 'back') {
299
+ goBack();
300
+ }
301
+ else {
302
+ answers.com = ans.com;
303
+ goForward('SERIAL_BAUD');
304
+ }
305
+ break;
306
+ }
307
+ case 'SERIAL_BAUD': {
308
+ const ans = await inquirer_1.default.prompt([
309
+ {
310
+ type: 'list',
311
+ name: 'baud',
312
+ message: 'Select Serial Baud Rate:',
313
+ choices: [
314
+ '9600', '19200', '38400', '57600', '115200',
315
+ { name: chalk_1.default.dim('< Go Back'), value: '__back__' }
316
+ ],
317
+ default: answers.baud
318
+ }
319
+ ]);
320
+ if (ans.baud === '__back__') {
321
+ goBack();
322
+ }
323
+ else {
324
+ answers.baud = ans.baud;
325
+ goForward('GOAL');
326
+ }
327
+ break;
328
+ }
329
+ case 'IP_HOST': {
330
+ const ans = await inquirer_1.default.prompt([
331
+ {
332
+ type: 'input',
333
+ name: 'host',
334
+ message: 'Enter Target IP address(es) / Hostname(s) (comma-separated) (or type "back" to go back):',
335
+ default: answers.host,
336
+ validate: (input) => {
337
+ if (input.trim().toLowerCase() === 'back')
338
+ return true;
339
+ return input.trim().length > 0 ? true : 'Host address is required.';
340
+ }
341
+ }
342
+ ]);
343
+ if (ans.host.trim().toLowerCase() === 'back') {
344
+ goBack();
345
+ }
346
+ else {
347
+ answers.host = ans.host;
348
+ goForward('IP_PORT');
349
+ }
350
+ break;
351
+ }
352
+ case 'IP_PORT': {
353
+ const ans = await inquirer_1.default.prompt([
354
+ {
355
+ type: 'input',
356
+ name: 'port',
357
+ message: 'Enter Connection Port (leave empty for default) (or type "back" to go back):',
358
+ default: answers.port
359
+ }
360
+ ]);
361
+ if (ans.port.trim().toLowerCase() === 'back') {
362
+ goBack();
363
+ }
364
+ else {
365
+ answers.port = ans.port;
366
+ goForward('IP_USER');
367
+ }
368
+ break;
369
+ }
370
+ case 'IP_USER': {
371
+ const ans = await inquirer_1.default.prompt([
372
+ {
373
+ type: 'input',
374
+ name: 'username',
375
+ message: 'Enter Device Username (leave empty if none) (or type "back" to go back):',
376
+ default: answers.username
377
+ }
378
+ ]);
379
+ if (ans.username.trim().toLowerCase() === 'back') {
380
+ goBack();
381
+ }
382
+ else {
383
+ answers.username = ans.username;
384
+ goForward('IP_PASS');
385
+ }
386
+ break;
387
+ }
388
+ case 'IP_PASS': {
389
+ const ans = await inquirer_1.default.prompt([
390
+ {
391
+ type: 'password',
392
+ name: 'password',
393
+ message: 'Enter Device Password (leave empty if none) (or type "back" to go back):',
394
+ default: answers.password
395
+ }
396
+ ]);
397
+ if (ans.password === 'back') {
398
+ goBack();
399
+ }
400
+ else {
401
+ answers.password = ans.password;
402
+ goForward('GOAL');
403
+ }
404
+ break;
405
+ }
406
+ case 'GOAL': {
407
+ const ans = await inquirer_1.default.prompt([
408
+ {
409
+ type: 'input',
410
+ name: 'goal',
411
+ message: 'Enter your configuration goal for the Cisco device (or type "back" to go back):',
412
+ default: answers.goal,
413
+ validate: (input) => {
414
+ if (input.trim().toLowerCase() === 'back')
415
+ return true;
416
+ return input.trim().length > 0 ? true : 'Goal is required.';
417
+ }
418
+ }
419
+ ]);
420
+ if (ans.goal.trim().toLowerCase() === 'back') {
421
+ goBack();
422
+ }
423
+ else {
424
+ answers.goal = ans.goal;
425
+ console.log(chalk_1.default.bold.yellow('Configuration Summary:'));
426
+ console.log(`- LLM Provider: ${chalk_1.default.cyan(answers.provider)}` + (answers.provider === 'local' ? ` (${answers.localType})` : ''));
427
+ console.log(`- Model Name: ${chalk_1.default.cyan(answers.model || (answers.provider === 'cloud' ? 'nvidia/nemotron-3-super-120b-a12b:free' : 'qwen3.5-4b'))}`);
428
+ console.log(`- API Endpoint: ${chalk_1.default.cyan(answers.endpoint || 'default')}`);
429
+ console.log(`- Protocol: ${chalk_1.default.cyan(answers.protocol)}`);
430
+ if (answers.protocol === 'serial') {
431
+ console.log(`- COM Port: ${chalk_1.default.cyan(answers.com)}`);
432
+ console.log(`- Baud Rate: ${chalk_1.default.cyan(answers.baud)}`);
433
+ }
434
+ else if (answers.protocol === 'ssh' || answers.protocol === 'telnet') {
435
+ console.log(`- Host Target: ${chalk_1.default.cyan(answers.host)}`);
436
+ console.log(`- Port: ${chalk_1.default.cyan(answers.port || 'default')}`);
437
+ console.log(`- Username: ${chalk_1.default.cyan(answers.username || '(none)')}`);
438
+ }
439
+ console.log(`- Config Goal: ${chalk_1.default.green(`"${answers.goal}"`)}`);
440
+ const confirmAns = await inquirer_1.default.prompt([
441
+ {
442
+ type: 'list',
443
+ name: 'confirm',
444
+ message: 'Proceed with this configuration?',
445
+ choices: [
446
+ { name: 'Yes, start agent execution', value: 'yes' },
447
+ { name: 'No, edit goal again', value: 'edit_goal' },
448
+ { name: 'No, start wizard from the beginning', value: 'restart' },
449
+ { name: 'Cancel and exit', value: 'cancel' }
450
+ ]
451
+ }
452
+ ]);
453
+ if (confirmAns.confirm === 'yes') {
454
+ currentStep = 'CONFIRMATION';
455
+ }
456
+ else if (confirmAns.confirm === 'edit_goal') {
457
+ currentStep = 'GOAL';
458
+ }
459
+ else if (confirmAns.confirm === 'restart') {
460
+ history.length = 0;
461
+ currentStep = 'PROVIDER';
462
+ }
463
+ else {
464
+ ui_1.logger.info('Configuration wizard cancelled.');
465
+ process.exit(0);
466
+ }
467
+ }
468
+ break;
469
+ }
470
+ }
471
+ }
472
+ provider = answers.provider;
473
+ localType = answers.localType;
474
+ apiKey = answers.apiKey;
475
+ model = answers.model;
476
+ endpoint = answers.endpoint;
477
+ protocol = answers.protocol;
478
+ com = answers.com;
479
+ baud = answers.baud;
480
+ host = answers.host;
481
+ port = answers.port;
482
+ username = answers.username;
483
+ password = answers.password;
484
+ goal = answers.goal;
485
+ }
486
+ ui_1.logger.info(`Initializing system link in [${provider.toUpperCase()}] mode using ${protocol.toUpperCase()}...`);
487
+ ui_1.logger.info(`Command reference policy: strict=${strictCommandRef ? 'on' : 'off'}, telemetry=${refTelemetry ? 'on' : 'off'}`);
488
+ activeCoordinator = new MultiAgentCoordinator_1.MultiAgentCoordinator();
489
+ try {
490
+ if (protocol === 'serial') {
491
+ if (!com) {
492
+ throw new Error('COM port (-c, --com) is required for serial protocol connections.');
493
+ }
494
+ const ports = com.split(',').map((p) => p.trim()).filter((p) => p.length > 0);
495
+ for (const port of ports) {
496
+ const session = new PlinkSerial_1.PlinkSerialSession(port, parseInt(baud, 10));
497
+ activeCoordinator.registerSession(port, session);
498
+ }
499
+ }
500
+ else if (protocol === 'ssh') {
501
+ if (!host || !username) {
502
+ throw new Error('Host (--host) and Username (-u, --username) are required for SSH connections.');
503
+ }
504
+ const hosts = host.split(',').map((h) => h.trim()).filter((h) => h.length > 0);
505
+ for (const h of hosts) {
506
+ const session = new SshSession_1.SshSession({
507
+ host: h,
508
+ port: port ? parseInt(port, 10) : 22,
509
+ username: username,
510
+ password: password
511
+ });
512
+ activeCoordinator.registerSession(h, session);
513
+ }
514
+ }
515
+ else if (protocol === 'telnet') {
516
+ if (!host) {
517
+ throw new Error('Host (--host) is required for Telnet connections.');
518
+ }
519
+ const hosts = host.split(',').map((h) => h.trim()).filter((h) => h.length > 0);
520
+ for (const h of hosts) {
521
+ const session = new TelnetSession_1.TelnetSession({
522
+ host: h,
523
+ port: port ? parseInt(port, 10) : 23,
524
+ username: username,
525
+ password: password
526
+ });
527
+ activeCoordinator.registerSession(h, session);
528
+ }
529
+ }
530
+ else if (protocol === 'mock') {
531
+ const names = (com || host || 'Switch1').split(',').map((n) => n.trim()).filter((n) => n.length > 0);
532
+ for (const name of names) {
533
+ const session = new MockSession_1.MockSession(name);
534
+ activeCoordinator.registerSession(name, session);
535
+ }
536
+ }
537
+ else {
538
+ throw new Error(`Unsupported connection protocol type: ${protocol}`);
539
+ }
540
+ if (provider === 'local' && !endpoint) {
541
+ endpoint = localType === 'lmstudio' ? 'http://127.0.0.1:1234/v1' : 'http://127.0.0.1:11434/v1';
542
+ }
543
+ const localAIClient = new LLMClient_1.LLMClient(provider, endpoint, model, apiKey);
544
+ const llmSpinner = (0, ui_1.createSpinner)('Preflight check: validating LLM endpoint reachability...').start();
545
+ try {
546
+ await localAIClient.ensureReachable();
547
+ llmSpinner.succeed('LLM endpoint is reachable.');
548
+ }
549
+ catch (err) {
550
+ llmSpinner.fail('LLM endpoint preflight failed.');
551
+ throw err;
552
+ }
553
+ const connSpinner = (0, ui_1.createSpinner)('Connecting to target network devices...').start();
554
+ try {
555
+ await activeCoordinator.connectAll();
556
+ connSpinner.succeed('All hardware sessions synchronized successfully.');
557
+ }
558
+ catch (err) {
559
+ connSpinner.fail('Connection failed.');
560
+ throw err;
561
+ }
562
+ const agent = new AgentLoop_1.CiscoAgentLoop(localAIClient, activeCoordinator, {
563
+ strictReferenceMode: strictCommandRef,
564
+ referenceTelemetry: refTelemetry
565
+ });
566
+ await agent.run(goal);
567
+ }
568
+ catch (err) {
569
+ ui_1.logger.critical(`Execution Error: ${err.message}`);
570
+ }
571
+ finally {
572
+ await cleanup();
573
+ ui_1.logger.info('Session Terminated. Pipelines detached.');
574
+ process.exit(0);
575
+ }
576
+ });
577
+ program.parse(process.argv);
578
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { ChatMessage } from '../../shared/types';
2
+ export type LLMProvider = 'local' | 'cloud';
3
+ export declare class LLMClient {
4
+ private provider;
5
+ private endpoint;
6
+ private modelName;
7
+ private apiKey?;
8
+ constructor(provider?: LLMProvider, endpoint?: string, modelName?: string, apiKey?: string);
9
+ generateCompletion(messages: ChatMessage[], tools?: any[]): Promise<ChatMessage>;
10
+ ensureReachable(timeoutMs?: number): Promise<void>;
11
+ }