ciscollm-cli 1.3.4 → 1.3.5

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 (69) hide show
  1. package/dist/cli/commands/daemonCommand.d.ts +4 -0
  2. package/dist/cli/commands/daemonCommand.js +68 -0
  3. package/dist/cli/commands/daemonCommand.js.map +1 -0
  4. package/dist/cli/commands/monitorCommand.js +1 -2
  5. package/dist/cli/commands/monitorCommand.js.map +1 -1
  6. package/dist/cli/commands/runCommand.js +75 -42
  7. package/dist/cli/commands/runCommand.js.map +1 -1
  8. package/dist/cli/ui/interactiveWizard.js +2 -2
  9. package/dist/cli/ui/interactiveWizard.js.map +1 -1
  10. package/dist/core/agent/AgentLoop.d.ts +12 -3
  11. package/dist/core/agent/AgentLoop.js +138 -64
  12. package/dist/core/agent/AgentLoop.js.map +1 -1
  13. package/dist/core/agent/AutoRemediationEngine.d.ts +14 -0
  14. package/dist/core/agent/AutoRemediationEngine.js +75 -0
  15. package/dist/core/agent/AutoRemediationEngine.js.map +1 -0
  16. package/dist/core/agent/DigitalTwin.js +4 -3
  17. package/dist/core/agent/DigitalTwin.js.map +1 -1
  18. package/dist/core/agent/IntentTranslator.d.ts +2 -0
  19. package/dist/core/agent/IntentTranslator.js +26 -0
  20. package/dist/core/agent/IntentTranslator.js.map +1 -1
  21. package/dist/core/agent/NetworkPlanner.d.ts +1 -0
  22. package/dist/core/agent/NetworkPlanner.js +47 -14
  23. package/dist/core/agent/NetworkPlanner.js.map +1 -1
  24. package/dist/core/agent/PromptEngine.d.ts +1 -1
  25. package/dist/core/agent/PromptEngine.js +14 -9
  26. package/dist/core/agent/PromptEngine.js.map +1 -1
  27. package/dist/core/guardrails/NetworkAudit.js +1 -1
  28. package/dist/core/guardrails/NetworkAudit.js.map +1 -1
  29. package/dist/core/plugins/PluginManager.js +3 -1
  30. package/dist/core/plugins/PluginManager.js.map +1 -1
  31. package/dist/index.js +10 -0
  32. package/dist/index.js.map +1 -1
  33. package/dist/infrastructure/llm/LLMClient.js +1 -2
  34. package/dist/infrastructure/llm/LLMClient.js.map +1 -1
  35. package/dist/server/devices/ASADevice.d.ts +17 -0
  36. package/dist/server/devices/ASADevice.js +160 -0
  37. package/dist/server/devices/ASADevice.js.map +1 -0
  38. package/dist/server/devices/BaseDevice.d.ts +11 -0
  39. package/dist/server/devices/BaseDevice.js +19 -0
  40. package/dist/server/devices/BaseDevice.js.map +1 -0
  41. package/dist/server/devices/IOSDevice.d.ts +100 -0
  42. package/dist/server/devices/IOSDevice.js +1561 -0
  43. package/dist/server/devices/IOSDevice.js.map +1 -0
  44. package/dist/server/devices/LinuxServerDevice.d.ts +8 -0
  45. package/dist/server/devices/LinuxServerDevice.js +71 -0
  46. package/dist/server/devices/LinuxServerDevice.js.map +1 -0
  47. package/dist/server/devices/PCDevice.d.ts +20 -0
  48. package/dist/server/devices/PCDevice.js +86 -0
  49. package/dist/server/devices/PCDevice.js.map +1 -0
  50. package/dist/server/devices/RouterDevice.d.ts +4 -0
  51. package/dist/server/devices/RouterDevice.js +11 -0
  52. package/dist/server/devices/RouterDevice.js.map +1 -0
  53. package/dist/server/devices/SwitchDevice.d.ts +4 -0
  54. package/dist/server/devices/SwitchDevice.js +11 -0
  55. package/dist/server/devices/SwitchDevice.js.map +1 -0
  56. package/dist/server/devices/WLCDevice.d.ts +15 -0
  57. package/dist/server/devices/WLCDevice.js +88 -0
  58. package/dist/server/devices/WLCDevice.js.map +1 -0
  59. package/dist/server/index.js +47 -22
  60. package/dist/server/index.js.map +1 -1
  61. package/dist/server/ssh.d.ts +2 -1
  62. package/dist/server/ssh.js +20 -7
  63. package/dist/server/ssh.js.map +1 -1
  64. package/dist/server/telnet.d.ts +3 -2
  65. package/dist/server/telnet.js +8 -40
  66. package/dist/server/telnet.js.map +1 -1
  67. package/dist/shared/constants.js +1 -1
  68. package/dist/shared/constants.js.map +1 -1
  69. package/package.json +1 -1
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ASADevice = void 0;
4
+ const BaseDevice_1 = require("./BaseDevice");
5
+ class ASADevice extends BaseDevice_1.BaseDevice {
6
+ interfaces = new Map([
7
+ ['Ethernet0/0', { name: 'Ethernet0/0', ip: null, subnet: null, securityLevel: 0, nameif: null, adminShutdown: false }],
8
+ ['Ethernet0/1', { name: 'Ethernet0/1', ip: null, subnet: null, securityLevel: 0, nameif: null, adminShutdown: false }],
9
+ ['Vlan1', { name: 'Vlan1', ip: '192.168.1.1', subnet: '255.255.255.0', securityLevel: 100, nameif: 'inside', adminShutdown: false }],
10
+ ['Vlan2', { name: 'Vlan2', ip: null, subnet: null, securityLevel: 0, nameif: 'outside', adminShutdown: false }]
11
+ ]);
12
+ activeInterface = null;
13
+ constructor(initialHostname) {
14
+ super(initialHostname || 'ciscoasa', 'asa');
15
+ this.mode = 'USER_EXEC';
16
+ }
17
+ getPrompt() {
18
+ switch (this.mode) {
19
+ case 'USER_EXEC':
20
+ return `${this.hostname}> `;
21
+ case 'PRIVILEGED_EXEC':
22
+ return `${this.hostname}# `;
23
+ case 'GLOBAL_CONFIG':
24
+ return `${this.hostname}(config)# `;
25
+ case 'INTERFACE_CONFIG':
26
+ return `${this.hostname}(config-if)# `;
27
+ default:
28
+ return `${this.hostname}# `;
29
+ }
30
+ }
31
+ processCommand(cmd) {
32
+ const normalized = cmd.trim();
33
+ if (!normalized)
34
+ return '';
35
+ const args = normalized.split(/\s+/);
36
+ const command = args[0].toLowerCase();
37
+ if (command === 'exit') {
38
+ if (this.mode === 'INTERFACE_CONFIG') {
39
+ this.mode = 'GLOBAL_CONFIG';
40
+ this.activeInterface = null;
41
+ return '';
42
+ }
43
+ else if (this.mode === 'GLOBAL_CONFIG') {
44
+ this.mode = 'PRIVILEGED_EXEC';
45
+ return '';
46
+ }
47
+ else if (this.mode === 'PRIVILEGED_EXEC') {
48
+ this.mode = 'USER_EXEC';
49
+ return '';
50
+ }
51
+ else {
52
+ return '';
53
+ }
54
+ }
55
+ if (command === 'enable') {
56
+ this.mode = 'PRIVILEGED_EXEC';
57
+ return 'Password: \n';
58
+ }
59
+ if (command === 'disable') {
60
+ this.mode = 'USER_EXEC';
61
+ return '';
62
+ }
63
+ if (command === 'configure' && args[1]?.toLowerCase() === 'terminal') {
64
+ if (this.mode === 'PRIVILEGED_EXEC') {
65
+ this.mode = 'GLOBAL_CONFIG';
66
+ return '';
67
+ }
68
+ return 'Command authorization failed.';
69
+ }
70
+ if (command === 'write' && args[1]?.toLowerCase() === 'memory') {
71
+ if (this.mode !== 'USER_EXEC') {
72
+ return 'Building configuration...\nCryptochecksum: 1a2b3c4d 5e6f7a8b\n\n2531 bytes copied in 1.123 secs\n[OK]';
73
+ }
74
+ return 'Command authorization failed.';
75
+ }
76
+ if (this.mode === 'GLOBAL_CONFIG' && command === 'interface' && args[1]) {
77
+ const ifaceName = this.normalizeInterfaceName(args[1]);
78
+ if (this.interfaces.has(ifaceName)) {
79
+ this.activeInterface = ifaceName;
80
+ this.mode = 'INTERFACE_CONFIG';
81
+ return '';
82
+ }
83
+ else {
84
+ return `ERROR: Interface ${ifaceName} does not exist.`;
85
+ }
86
+ }
87
+ if (this.mode === 'INTERFACE_CONFIG' && this.activeInterface) {
88
+ const iface = this.interfaces.get(this.activeInterface);
89
+ if (command === 'nameif' && args[1]) {
90
+ iface.nameif = args[1];
91
+ if (iface.nameif.toLowerCase() === 'inside') {
92
+ iface.securityLevel = 100;
93
+ return `INFO: Security level for "inside" set to 100 by default.`;
94
+ }
95
+ else {
96
+ iface.securityLevel = 0;
97
+ return `INFO: Security level for "${iface.nameif}" set to 0 by default.`;
98
+ }
99
+ }
100
+ if (command === 'security-level' && args[1]) {
101
+ const level = parseInt(args[1], 10);
102
+ if (!isNaN(level) && level >= 0 && level <= 100) {
103
+ iface.securityLevel = level;
104
+ return '';
105
+ }
106
+ return `ERROR: Invalid security level. Must be 0-100.`;
107
+ }
108
+ if (command === 'ip' && args[1] === 'address' && args[2]) {
109
+ iface.ip = args[2];
110
+ iface.subnet = args[3] || '255.255.255.0';
111
+ return '';
112
+ }
113
+ if (command === 'no' && args[1] === 'shutdown') {
114
+ iface.adminShutdown = false;
115
+ return '';
116
+ }
117
+ if (command === 'shutdown') {
118
+ iface.adminShutdown = true;
119
+ return '';
120
+ }
121
+ }
122
+ if (command === 'show' || (command === 'do' && args[1] === 'show')) {
123
+ const showArgs = command === 'do' ? args.slice(2) : args.slice(1);
124
+ if (showArgs[0] === 'interface' && showArgs[1] === 'ip' && showArgs[2] === 'brief') {
125
+ let out = `Interface IP-Address OK? Method Status Protocol\n`;
126
+ for (const [name, iface] of this.interfaces) {
127
+ out += `${name.padEnd(26)} ${iface.ip ? iface.ip.padEnd(15) : 'unassigned '} YES unset ${iface.adminShutdown ? 'administratively down' : 'up '} ${iface.adminShutdown ? 'down' : 'up'}\n`;
128
+ }
129
+ return out;
130
+ }
131
+ if (showArgs[0] === 'nameif') {
132
+ let out = `Interface Name Security\n`;
133
+ for (const [name, iface] of this.interfaces) {
134
+ if (iface.nameif) {
135
+ out += `${name.padEnd(24)} ${iface.nameif.padEnd(24)} ${iface.securityLevel}\n`;
136
+ }
137
+ }
138
+ return out;
139
+ }
140
+ }
141
+ if (command === 'ping' && args[1]) {
142
+ const target = args[1];
143
+ return `Type escape sequence to abort.\nSending 5, 100-byte ICMP Echos to ${target}, timeout is 2 seconds:\n!!!!!\nSuccess rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms`;
144
+ }
145
+ if (command === '?') {
146
+ return `ASA Commands:\n enable\n disable\n configure terminal\n show interface ip brief\n show nameif\n write memory\n ping <ip>\n exit`;
147
+ }
148
+ return `ERROR: % Invalid input detected at '^' marker.`;
149
+ }
150
+ normalizeInterfaceName(name) {
151
+ const lower = name.toLowerCase();
152
+ if (lower.startsWith('e'))
153
+ return 'Ethernet' + lower.substring(1).replace(/thernet/, '');
154
+ if (lower.startsWith('v'))
155
+ return 'Vlan' + lower.substring(1).replace(/lan/, '');
156
+ return name;
157
+ }
158
+ }
159
+ exports.ASADevice = ASADevice;
160
+ //# sourceMappingURL=ASADevice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ASADevice.js","sourceRoot":"","sources":["../../../src/server/devices/ASADevice.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { EventEmitter } from 'events';
2
+ export declare const simulatorEvents: EventEmitter<[never]>;
3
+ export declare abstract class BaseDevice {
4
+ hostname: string;
5
+ type: string;
6
+ mode: string;
7
+ constructor(hostname: string, type: string);
8
+ abstract processCommand(cmd: string): string;
9
+ abstract getPrompt(): string;
10
+ getHostname(): string;
11
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseDevice = exports.simulatorEvents = void 0;
4
+ const events_1 = require("events");
5
+ exports.simulatorEvents = new events_1.EventEmitter();
6
+ class BaseDevice {
7
+ hostname;
8
+ type;
9
+ mode = 'USER_EXEC';
10
+ constructor(hostname, type) {
11
+ this.hostname = hostname;
12
+ this.type = type;
13
+ }
14
+ getHostname() {
15
+ return this.hostname;
16
+ }
17
+ }
18
+ exports.BaseDevice = BaseDevice;
19
+ //# sourceMappingURL=BaseDevice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseDevice.js","sourceRoot":"","sources":["../../../src/server/devices/BaseDevice.ts"],"names":[],"mappings":";;;AAAA,mCAAsC;AAEzB,QAAA,eAAe,GAAG,IAAI,qBAAY,EAAE,CAAC;AAElD,MAAsB,UAAU;IACrB,QAAQ,CAAS;IACjB,IAAI,CAAS;IACb,IAAI,GAAW,WAAW,CAAC;IAElC,YAAY,QAAgB,EAAE,IAAY;QACtC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IASM,WAAW;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;CACJ;AApBD,gCAoBC"}
@@ -0,0 +1,100 @@
1
+ import { BaseDevice } from './BaseDevice';
2
+ export type CliMode = 'USER_EXEC' | 'PRIVILEGED_EXEC' | 'GLOBAL_CONFIG' | 'INTERFACE_CONFIG' | 'OSPF_CONFIG' | 'RIP_CONFIG' | 'BGP_CONFIG' | 'EIGRP_CONFIG' | 'DHCP_CONFIG' | 'ACL_CONFIG' | 'VLAN_CONFIG' | 'VPC_CONFIG' | 'VRF_CONFIG' | 'VRF_AF_CONFIG';
3
+ export interface InterfaceState {
4
+ name: string;
5
+ ip: string | null;
6
+ subnet: string | null;
7
+ adminShutdown: boolean;
8
+ lineProtocolUp: boolean;
9
+ description: string | null;
10
+ isSwitchport?: boolean;
11
+ switchportMode?: 'access' | 'trunk';
12
+ vlan?: number;
13
+ natType?: 'inside' | 'outside';
14
+ vpcMemberId?: number;
15
+ sourceInterface?: string;
16
+ memberVnis?: Map<number, {
17
+ mcastGroup?: string;
18
+ associateVrf?: boolean;
19
+ }>;
20
+ }
21
+ export interface RouteState {
22
+ network: string;
23
+ mask: string;
24
+ nextHop: string | null;
25
+ outgoingInterface: string | null;
26
+ connected: boolean;
27
+ }
28
+ export declare class IOSDevice extends BaseDevice {
29
+ mode: CliMode;
30
+ activeInterface: string | null;
31
+ interfaces: Map<string, InterfaceState>;
32
+ vlans: Set<number>;
33
+ vlanNames: Map<number, string>;
34
+ activeVlan: number | null;
35
+ routes: RouteState[];
36
+ shellEnabled: boolean;
37
+ shellVariables: Record<string, string>;
38
+ shellFunctions: Record<string, string>;
39
+ ospfEnabled: boolean;
40
+ ospfProcessId: string | null;
41
+ ospfNetworks: {
42
+ network: string;
43
+ wildcard: string;
44
+ area: string;
45
+ }[];
46
+ ripEnabled: boolean;
47
+ ripVersion: number;
48
+ ripAutoSummary: boolean;
49
+ bgpEnabled: boolean;
50
+ bgpAsn: string | null;
51
+ eigrpEnabled: boolean;
52
+ eigrpAsn: string | null;
53
+ vtpMode: string;
54
+ vtpDomain: string | null;
55
+ vtpPassword: string | null;
56
+ hsrpGroups: Map<string, {
57
+ virtualIp: string;
58
+ priority: number;
59
+ preempt: boolean;
60
+ }>;
61
+ vrrpGroups: Map<string, {
62
+ virtualIp: string;
63
+ priority: number;
64
+ }>;
65
+ ntpServers: string[];
66
+ snmpCommunities: string[];
67
+ natInsideInterfaces: Set<string>;
68
+ natOutsideInterfaces: Set<string>;
69
+ natRules: string[];
70
+ acls: Map<string, string[]>;
71
+ ipRoutingEnabled: boolean;
72
+ featuresEnabled: Set<string>;
73
+ vpcDomainId: number | null;
74
+ vpcPeerKeepalive: string | null;
75
+ vnSegments: Map<number, number>;
76
+ vrfs: Map<string, {
77
+ vni?: number;
78
+ rd?: string;
79
+ routeTargets: string[];
80
+ }>;
81
+ activeVrf: string | null;
82
+ flashFiles: Set<string>;
83
+ private pendingCopyDest;
84
+ private backupState;
85
+ private saveBackupState;
86
+ private restoreBackupState;
87
+ constructor(initialHostname?: string, type?: string);
88
+ getPrompt(): string;
89
+ processCommand(line: string): string;
90
+ private normalizeCommandString;
91
+ private normalizeInterfaceName;
92
+ private shortenInterfaceName;
93
+ private getPrefixLength;
94
+ private calculateNetwork;
95
+ private wildcardToSubnet;
96
+ private getContextHelp;
97
+ private getModeCommandsHelp;
98
+ private getWordCompletionHelp;
99
+ private getModeCommandsList;
100
+ }