ciscollm-cli 1.1.4 → 1.3.0

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 (44) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +137 -17
  3. package/dist/core/agent/AgentLoop.js +1 -0
  4. package/dist/core/agent/AgentLoop.js.map +1 -1
  5. package/dist/core/agent/AutoHealer.d.ts +27 -0
  6. package/dist/core/agent/AutoHealer.js +387 -0
  7. package/dist/core/agent/AutoHealer.js.map +1 -0
  8. package/dist/core/agent/HierarchicalAgentManager.js +5 -5
  9. package/dist/core/agent/MultiAgentCoordinator.d.ts +6 -1
  10. package/dist/core/agent/MultiAgentCoordinator.js +23 -1
  11. package/dist/core/agent/MultiAgentCoordinator.js.map +1 -1
  12. package/dist/core/agent/PromptEngine.js +67 -67
  13. package/dist/core/guardrails/AuditLogger.js +4 -4
  14. package/dist/core/guardrails/CommandFirewall.d.ts +2 -0
  15. package/dist/core/guardrails/CommandFirewall.js +112 -12
  16. package/dist/core/guardrails/CommandFirewall.js.map +1 -1
  17. package/dist/core/rollback/TransactionManager.js +17 -0
  18. package/dist/core/rollback/TransactionManager.js.map +1 -1
  19. package/dist/index.js +142 -0
  20. package/dist/index.js.map +1 -1
  21. package/dist/infrastructure/llm/LLMClient.js +0 -1
  22. package/dist/infrastructure/llm/LLMClient.js.map +1 -1
  23. package/dist/infrastructure/protocols/BaseSession.d.ts +2 -1
  24. package/dist/infrastructure/protocols/BaseSession.js +2 -1
  25. package/dist/infrastructure/protocols/BaseSession.js.map +1 -1
  26. package/dist/infrastructure/protocols/PlinkSerial.d.ts +1 -0
  27. package/dist/infrastructure/protocols/PlinkSerial.js +67 -12
  28. package/dist/infrastructure/protocols/PlinkSerial.js.map +1 -1
  29. package/dist/server/dashboard.js +324 -224
  30. package/dist/server/dashboard.js.map +1 -1
  31. package/dist/server/index.js +8 -8
  32. package/dist/server/shell-simulator.d.ts +29 -1
  33. package/dist/server/shell-simulator.js +394 -59
  34. package/dist/server/shell-simulator.js.map +1 -1
  35. package/dist/server/ssh.js +31 -20
  36. package/dist/server/ssh.js.map +1 -1
  37. package/dist/server/telnet.js +11 -0
  38. package/dist/server/telnet.js.map +1 -1
  39. package/dist/shared/constants.js +1 -1
  40. package/dist/shared/constants.js.map +1 -1
  41. package/package.json +54 -52
  42. package/dist/infrastructure/llm/LocalLLMClient.d.ts +0 -7
  43. package/dist/infrastructure/llm/LocalLLMClient.js +0 -39
  44. package/dist/infrastructure/llm/LocalLLMClient.js.map +0 -1
@@ -3,73 +3,73 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PromptEngine = void 0;
4
4
  class PromptEngine {
5
5
  static getSystemPrompt(stateInfo, commandReferenceHints = 'Reference status: not loaded.', strictReferenceMode = false, topologyInfo = 'Topology not discovered yet.') {
6
- return `You are a Senior Network Automation Engineer Agent executing operations on Cisco Enterprise Hardware (Switches & Routers).
7
- Your objective is to accomplish the user's network configuration and troubleshooting goals safely, using step-by-step tool calls.
8
-
9
- =========================================
10
- HIERARCHICAL NETWORK SWARM & RBAC:
11
- =========================================
12
- You operate as a Hierarchical Network Agent Swarm to focus execution and reduce context overhead:
13
- 1. CORE AGENT: Manages core routing tables, dynamic routing protocols (OSPF, BGP, RIP), static routes, and IP SLAs.
14
- 2. DISTRIBUTION AGENT: Manages VLAN databases, trunking protocols, authentication (AAA), ACL firewalls, and NAT mappings.
15
- 3. ACCESS AGENT: Manages physical port assignments, speed/duplex, interface shut/no shut, port descriptions, and interface IPs.
16
- Specify which layer is performing the action in your thoughts (e.g., "[CORE AGENT] Configuring static route").
17
- Your actions are monitored by a Context-Aware Pre-Execution Validator and restricted by your current RBAC Role.
18
-
19
- =========================================
20
- CURRENT CONNECTED DEVICES & MODE CONTEXT:
21
- =========================================
22
- ${stateInfo}
23
-
24
- =========================================
25
- CF COMMAND REFERENCE (cf_command_ref.pdf):
26
- =========================================
27
- The following hints were extracted from the official command reference and ranked for the current request. Prefer these exact command forms and syntax whenever relevant.
28
- Strict reference enforcement: ${strictReferenceMode ? 'ENABLED (unsupported commands will be blocked)' : 'DISABLED (advisory mode)'}
29
- ${commandReferenceHints}
30
-
31
- =========================================
32
- DISCOVERED NETWORK TOPOLOGY MAP:
33
- =========================================
34
- ${topologyInfo}
35
- Interpret the map as network-wide intent context. Prefer plans that keep end-to-end reachability and avoid asymmetric intermediate states.
36
-
37
- =========================================
38
- CISCO IOS SHELL (IOS.sh) AUTOMATION GUIDE:
39
- =========================================
40
- 1. Capabilities: The connected Cisco devices support Cisco IOS Shell. You can utilize:
41
- - Variables: E.g., "TARGET_IP=10.0.1.5", and reference them as "$TARGET_IP" in commands.
42
- - Loop Constructs: E.g., "for i in 1 2; do ping 10.0.1.$i; done" to check connectivity.
43
- - Piping & Output Filtering: E.g., "| include GigabitEthernet" or "| grep ip" to filter CLI outputs.
44
- - Functions: E.g., "my_ping() { ping 10.0.1.1; }" to bind commands.
45
- 2. Activation:
46
- - Session-wide: Execute "terminal shell" in Privileged EXEC mode (Switch#).
47
- - Global Config: Execute "shell processing full" in Global Configuration mode (Switch(config)#).
48
- - Use the specialized tool "enable_ios_shell" to activate the shell instead of running raw activation commands.
49
-
50
- =========================================
51
- OPERATIONAL COMPLIANCE RULES:
52
- =========================================
53
- 1. Navigational Awareness: Verify the current device access level (e.g., USER_EXEC ">", PRIVILEGED_EXEC "#", GLOBAL_CONFIG "(config)#", INTERFACE_CONFIG "(config-if)#"). Change modes appropriately before running commands (e.g., issue "enable", "configure terminal").
54
- 2. Multi-Device Scope: When multiple target devices are connected, you must specify the "device" parameter in all tool calls to designate the destination.
55
- 3. Chaining Constraint: Issue commands step-by-step. Do not combine multiple unrelated configuration actions into a single tool call.
56
- 4. Validation Discipline: Use at most one inspection pass before a configuration block. Do not repeat show commands unless the device state changed or a command failed. After the configuration block completes, verify once with an inspection command or a ping_test, then stop if the verification is clean.
57
- 5. Error Diagnostics & Self-Correction: If a command fails or returns error markers (e.g., "% Unrecognized command", "% Invalid input"), stop. Do not repeat failed commands. Check your turn history to verify if the command has been run previously and failed. If it did, immediately troubleshoot the cause (such as incorrect CLI mode context, missing submode initialization, or unsupported commands) and change your strategy instead of repeating the failed command.
58
- 6. Language Policy: All reasoning blocks, arguments, tool calls, and output explanations must be written strictly in English.
59
- 7. Single Tool Call Constraint: You MUST only generate EXACTLY ONE tool call per response. Never generate multiple parallel tool calls (e.g. do not call execute_ios_command multiple times in a single turn). You must wait for the output of the first tool call to update the device state before proposing the next one.
60
- 8. Goal Completion Discipline: NEVER stop generating tool calls until every numbered step in the user's goal has been executed in order. Do not produce a summary or declare success while steps remain pending. Only stop (return a text-only response with no tool call) after ALL steps are complete AND the final verification (ping_test or show command) has been executed and returned a result.
61
- 9. Reversion Awareness: If a configuration command fails and triggers a rollback, pay close attention to the [System Alert] in the tool response. Verify your current configuration submode/prompt before executing further commands.
62
-
63
- =========================================
64
- RESPONSE FORMAT PROTOCOL (CRITICAL):
65
- =========================================
66
- - You MUST always populate the "content" field of your response with a detailed, step-by-step Chain-of-Thought (CoT) reasoning block BEFORE proposing any tool calls.
67
- - You MUST format your thoughts by explicitly structuring them into these three sections:
68
- 1. CURRENT STATE ANALYSIS: [What is the current device status, context, and access level?]
69
- 2. TECHNICAL PLAN: [What is the detailed sequential plan, variables, loops, or shell configurations needed to achieve the goal?]
70
- 3. NEXT ACTION DETAILS: [What specific tool are you calling right now, what arguments/commands are you sending, and why?]
71
- - NEVER return an empty or whitespace-only "content" string when generating tool calls. The user must see your structured thoughts before execution occurs.
72
- - Do NOT use markdown bold formatting (e.g., **text**) or any other markdown decorators in any part of your response (including technical plans and final summaries). All responses must be clean, plain text.
6
+ return `You are a Senior Network Automation Engineer Agent executing operations on Cisco Enterprise Hardware (Switches & Routers).
7
+ Your objective is to accomplish the user's network configuration and troubleshooting goals safely, using step-by-step tool calls.
8
+
9
+ =========================================
10
+ HIERARCHICAL NETWORK SWARM & RBAC:
11
+ =========================================
12
+ You operate as a Hierarchical Network Agent Swarm to focus execution and reduce context overhead:
13
+ 1. CORE AGENT: Manages core routing tables, dynamic routing protocols (OSPF, BGP, RIP), static routes, and IP SLAs.
14
+ 2. DISTRIBUTION AGENT: Manages VLAN databases, trunking protocols, authentication (AAA), ACL firewalls, and NAT mappings.
15
+ 3. ACCESS AGENT: Manages physical port assignments, speed/duplex, interface shut/no shut, port descriptions, and interface IPs.
16
+ Specify which layer is performing the action in your thoughts (e.g., "[CORE AGENT] Configuring static route").
17
+ Your actions are monitored by a Context-Aware Pre-Execution Validator and restricted by your current RBAC Role.
18
+
19
+ =========================================
20
+ CURRENT CONNECTED DEVICES & MODE CONTEXT:
21
+ =========================================
22
+ ${stateInfo}
23
+
24
+ =========================================
25
+ CF COMMAND REFERENCE (cf_command_ref.pdf):
26
+ =========================================
27
+ The following hints were extracted from the official command reference and ranked for the current request. Prefer these exact command forms and syntax whenever relevant.
28
+ Strict reference enforcement: ${strictReferenceMode ? 'ENABLED (unsupported commands will be blocked)' : 'DISABLED (advisory mode)'}
29
+ ${commandReferenceHints}
30
+
31
+ =========================================
32
+ DISCOVERED NETWORK TOPOLOGY MAP:
33
+ =========================================
34
+ ${topologyInfo}
35
+ Interpret the map as network-wide intent context. Prefer plans that keep end-to-end reachability and avoid asymmetric intermediate states.
36
+
37
+ =========================================
38
+ CISCO IOS SHELL (IOS.sh) AUTOMATION GUIDE:
39
+ =========================================
40
+ 1. Capabilities: The connected Cisco devices support Cisco IOS Shell. You can utilize:
41
+ - Variables: E.g., "TARGET_IP=10.0.1.5", and reference them as "$TARGET_IP" in commands.
42
+ - Loop Constructs: E.g., "for i in 1 2; do ping 10.0.1.$i; done" to check connectivity.
43
+ - Piping & Output Filtering: E.g., "| include GigabitEthernet" or "| grep ip" to filter CLI outputs.
44
+ - Functions: E.g., "my_ping() { ping 10.0.1.1; }" to bind commands.
45
+ 2. Activation:
46
+ - Session-wide: Execute "terminal shell" in Privileged EXEC mode (Switch#).
47
+ - Global Config: Execute "shell processing full" in Global Configuration mode (Switch(config)#).
48
+ - Use the specialized tool "enable_ios_shell" to activate the shell instead of running raw activation commands.
49
+
50
+ =========================================
51
+ OPERATIONAL COMPLIANCE RULES:
52
+ =========================================
53
+ 1. Navigational Awareness: Verify the current device access level (e.g., USER_EXEC ">", PRIVILEGED_EXEC "#", GLOBAL_CONFIG "(config)#", INTERFACE_CONFIG "(config-if)#"). Change modes appropriately before running commands (e.g., issue "enable", "configure terminal").
54
+ 2. Multi-Device Scope: When multiple target devices are connected, you must specify the "device" parameter in all tool calls to designate the destination.
55
+ 3. Chaining Constraint: Issue commands step-by-step. Do not combine multiple unrelated configuration actions into a single tool call.
56
+ 4. Validation Discipline: Use at most one inspection pass before a configuration block. Do not repeat show commands unless the device state changed or a command failed. After the configuration block completes, verify once with an inspection command or a ping_test, then stop if the verification is clean.
57
+ 5. Error Diagnostics & Self-Correction: If a command fails or returns error markers (e.g., "% Unrecognized command", "% Invalid input"), stop. Do not repeat failed commands. Check your turn history to verify if the command has been run previously and failed. If it did, immediately troubleshoot the cause (such as incorrect CLI mode context, missing submode initialization, or unsupported commands) and change your strategy instead of repeating the failed command.
58
+ 6. Language Policy: All reasoning blocks, arguments, tool calls, and output explanations must be written strictly in English.
59
+ 7. Single Tool Call Constraint: You MUST only generate EXACTLY ONE tool call per response. Never generate multiple parallel tool calls (e.g. do not call execute_ios_command multiple times in a single turn). You must wait for the output of the first tool call to update the device state before proposing the next one.
60
+ 8. Goal Completion Discipline: NEVER stop generating tool calls until every numbered step in the user's goal has been executed in order. Do not produce a summary or declare success while steps remain pending. Only stop (return a text-only response with no tool call) after ALL steps are complete AND the final verification (ping_test or show command) has been executed and returned a result.
61
+ 9. Reversion Awareness: If a configuration command fails and triggers a rollback, pay close attention to the [System Alert] in the tool response. Verify your current configuration submode/prompt before executing further commands.
62
+
63
+ =========================================
64
+ RESPONSE FORMAT PROTOCOL (CRITICAL):
65
+ =========================================
66
+ - You MUST always populate the "content" field of your response with a detailed, step-by-step Chain-of-Thought (CoT) reasoning block BEFORE proposing any tool calls.
67
+ - You MUST format your thoughts by explicitly structuring them into these three sections:
68
+ 1. CURRENT STATE ANALYSIS: [What is the current device status, context, and access level?]
69
+ 2. TECHNICAL PLAN: [What is the detailed sequential plan, variables, loops, or shell configurations needed to achieve the goal?]
70
+ 3. NEXT ACTION DETAILS: [What specific tool are you calling right now, what arguments/commands are you sending, and why?]
71
+ - NEVER return an empty or whitespace-only "content" string when generating tool calls. The user must see your structured thoughts before execution occurs.
72
+ - Do NOT use markdown bold formatting (e.g., **text**) or any other markdown decorators in any part of your response (including technical plans and final summaries). All responses must be clean, plain text.
73
73
  - When you are done and no additional tool call is required, your final response must be a direct user-facing outcome summary with concrete results and next actions (if any). Do not end with meta statements such as "I should" or "I will".`;
74
74
  }
75
75
  }
@@ -54,10 +54,10 @@ class AuditLogger {
54
54
  const thoughtCleaned = entry.thought
55
55
  ? entry.thought.replace(/\r?\n/g, ' ').substring(0, 150) + '...'
56
56
  : '';
57
- const logMessage = `[${formattedTimestamp}] [Device: ${entry.deviceId}] [Role: ${entry.role.toUpperCase()}] [Status: ${entry.status}]
58
- Thought: ${thoughtCleaned || 'N/A'}
59
- Command: "${entry.command}"
60
- Result: ${outputCleaned || entry.reason || 'N/A'}
57
+ const logMessage = `[${formattedTimestamp}] [Device: ${entry.deviceId}] [Role: ${entry.role.toUpperCase()}] [Status: ${entry.status}]
58
+ Thought: ${thoughtCleaned || 'N/A'}
59
+ Command: "${entry.command}"
60
+ Result: ${outputCleaned || entry.reason || 'N/A'}
61
61
  --------------------------------------------------------------------------------\n`;
62
62
  try {
63
63
  fs.appendFileSync(this.logFile, logMessage, 'utf8');
@@ -2,6 +2,8 @@ export declare class CommandFirewall {
2
2
  private protectedInterfaces;
3
3
  private playbook;
4
4
  constructor(protectedInterfaces?: string[]);
5
+ static normalizeCiscoCommand(command: string): string;
6
+ static normalizeInterfaceName(name: string): string;
5
7
  checkCommand(command: string, currentInterfaceContext: string | null): {
6
8
  dangerous: boolean;
7
9
  reason?: string;
@@ -44,15 +44,18 @@ const path_1 = require("path");
44
44
  const constants_1 = require("../../shared/constants");
45
45
  const utils_1 = require("../../shared/utils");
46
46
  class CommandFirewall {
47
- protectedInterfaces;
47
+ protectedInterfaces = [];
48
48
  playbook = null;
49
- constructor(protectedInterfaces = constants_1.DEFAULT_PROTECTED_INTERFACES) {
50
- this.protectedInterfaces = protectedInterfaces.map(i => i.toLowerCase().trim());
49
+ constructor(protectedInterfaces) {
50
+ if (protectedInterfaces) {
51
+ this.protectedInterfaces = protectedInterfaces.map(i => i.toLowerCase().trim());
52
+ this.playbook = { protectedInterfaces };
53
+ }
51
54
  try {
52
55
  const yamlPath = (0, path_1.join)(process.cwd(), '.ciscollm-guard.yaml');
53
56
  if ((0, fs_1.existsSync)(yamlPath)) {
54
57
  const content = (0, fs_1.readFileSync)(yamlPath, 'utf8');
55
- this.playbook = (0, utils_1.parseSimpleYaml)(content);
58
+ this.playbook = (0, utils_1.parseSimpleYaml)(content) || {};
56
59
  console.log(chalk_1.default.green(`[+] Loaded custom safety playbook from .ciscollm-guard.yaml`));
57
60
  if (this.playbook && Array.isArray(this.playbook.protectedInterfaces)) {
58
61
  this.playbook.protectedInterfaces.forEach((intf) => {
@@ -63,13 +66,106 @@ class CommandFirewall {
63
66
  });
64
67
  }
65
68
  }
69
+ else if (!protectedInterfaces) {
70
+ this.playbook = null;
71
+ }
66
72
  }
67
73
  catch (e) {
68
74
  console.warn(chalk_1.default.yellow(`[!] Warning loading safety playbook: ${e.message}`));
69
75
  }
70
76
  }
77
+ static normalizeCiscoCommand(command) {
78
+ const trimmed = command.trim();
79
+ const parts = trimmed.split(/\s+/);
80
+ if (parts.length === 0 || !parts[0])
81
+ return trimmed;
82
+ const firstToken = parts[0].toLowerCase();
83
+ if (firstToken === 'no' && parts.length > 1) {
84
+ const subNormalized = CommandFirewall.normalizeCiscoCommand(parts.slice(1).join(' '));
85
+ return `no ${subNormalized}`;
86
+ }
87
+ if (firstToken.startsWith('conf') && 'configure'.startsWith(firstToken)) {
88
+ if (parts[1] && parts[1].toLowerCase().startsWith('t') && 'terminal'.startsWith(parts[1].toLowerCase())) {
89
+ return 'configure terminal';
90
+ }
91
+ parts[0] = 'configure';
92
+ }
93
+ else if (firstToken.startsWith('int') && 'interface'.startsWith(firstToken)) {
94
+ parts[0] = 'interface';
95
+ if (parts[1]) {
96
+ parts[1] = CommandFirewall.normalizeInterfaceName(parts[1]);
97
+ }
98
+ }
99
+ else if (firstToken.startsWith('shut') && 'shutdown'.startsWith(firstToken)) {
100
+ parts[0] = 'shutdown';
101
+ }
102
+ else if (firstToken.startsWith('desc') && 'description'.startsWith(firstToken)) {
103
+ parts[0] = 'description';
104
+ }
105
+ else if (firstToken.startsWith('cry') && 'crypto'.startsWith(firstToken)) {
106
+ parts[0] = 'crypto';
107
+ if (parts[1] && parts[1].toLowerCase().startsWith('ke') && 'key'.startsWith(parts[1].toLowerCase())) {
108
+ parts[1] = 'key';
109
+ if (parts[2] && parts[2].toLowerCase().startsWith('ze') && 'zeroize'.startsWith(parts[2].toLowerCase())) {
110
+ parts[2] = 'zeroize';
111
+ }
112
+ }
113
+ }
114
+ else if (firstToken.startsWith('wr') && 'write'.startsWith(firstToken)) {
115
+ parts[0] = 'write';
116
+ if (parts[1] && parts[1].toLowerCase().startsWith('er') && 'erase'.startsWith(parts[1].toLowerCase())) {
117
+ parts[1] = 'erase';
118
+ }
119
+ }
120
+ else if (firstToken.startsWith('er') && 'erase'.startsWith(firstToken)) {
121
+ parts[0] = 'erase';
122
+ }
123
+ else if (firstToken.startsWith('reload') && 'reload'.startsWith(firstToken)) {
124
+ parts[0] = 'reload';
125
+ }
126
+ else if (firstToken === 'ip') {
127
+ if (parts[1] && parts[1].toLowerCase().startsWith('add') && 'address'.startsWith(parts[1].toLowerCase())) {
128
+ parts[1] = 'address';
129
+ }
130
+ else if (parts[1] && parts[1].toLowerCase().startsWith('access-g') && 'access-group'.startsWith(parts[1].toLowerCase())) {
131
+ parts[1] = 'access-group';
132
+ }
133
+ else if (parts[1] && parts[1].toLowerCase().startsWith('access-l') && 'access-list'.startsWith(parts[1].toLowerCase())) {
134
+ parts[1] = 'access-list';
135
+ }
136
+ }
137
+ else if (firstToken === 'aaa') {
138
+ if (parts[1] && parts[1].toLowerCase().startsWith('new') && 'new-model'.startsWith(parts[1].toLowerCase())) {
139
+ parts[1] = 'new-model';
140
+ }
141
+ }
142
+ return parts.join(' ');
143
+ }
144
+ static normalizeInterfaceName(name) {
145
+ const lower = name.toLowerCase();
146
+ if (lower.startsWith('gi') && !lower.startsWith('gigabitethernet')) {
147
+ return 'gigabitethernet' + name.substring(2);
148
+ }
149
+ if (lower.startsWith('fa') && !lower.startsWith('fastethernet')) {
150
+ return 'fastethernet' + name.substring(2);
151
+ }
152
+ if (lower.startsWith('te') && !lower.startsWith('tengigabitethernet')) {
153
+ return 'tengigabitethernet' + name.substring(2);
154
+ }
155
+ if (lower.startsWith('vl') && !lower.startsWith('vlan')) {
156
+ return 'vlan' + name.substring(2);
157
+ }
158
+ if (lower.startsWith('lo') && !lower.startsWith('loopback')) {
159
+ return 'loopback' + name.substring(2);
160
+ }
161
+ return name;
162
+ }
71
163
  checkCommand(command, currentInterfaceContext) {
72
- const normalized = command.toLowerCase().trim();
164
+ if (!this.playbook) {
165
+ return { dangerous: false };
166
+ }
167
+ const normalizedCommand = CommandFirewall.normalizeCiscoCommand(command);
168
+ const normalized = normalizedCommand.toLowerCase().trim();
73
169
  if (this.playbook) {
74
170
  if (Array.isArray(this.playbook.blockedCommands)) {
75
171
  const isBlocked = this.playbook.blockedCommands.some((blocked) => normalized === blocked.toLowerCase().trim() || normalized.includes(blocked.toLowerCase().trim()));
@@ -115,9 +211,9 @@ class CommandFirewall {
115
211
  reason: `Destructive keyword detected ("${matchedDestructive}")`
116
212
  };
117
213
  }
118
- const interfaceMatch = /^interface\s+([A-Za-z0-9\/\.\-]+)/i.exec(command.trim());
214
+ const interfaceMatch = /^interface\s+([A-Za-z0-9\/\.\-]+)/i.exec(normalizedCommand);
119
215
  if (interfaceMatch) {
120
- const targetedInterface = interfaceMatch[1].toLowerCase().trim();
216
+ const targetedInterface = CommandFirewall.normalizeInterfaceName(interfaceMatch[1]).toLowerCase().trim();
121
217
  if (this.isProtected(targetedInterface) && normalized.includes('shutdown') && !normalized.includes('no shutdown')) {
122
218
  return {
123
219
  dangerous: true,
@@ -126,7 +222,7 @@ class CommandFirewall {
126
222
  }
127
223
  }
128
224
  if (currentInterfaceContext) {
129
- const activeIntf = currentInterfaceContext.toLowerCase().trim();
225
+ const activeIntf = CommandFirewall.normalizeInterfaceName(currentInterfaceContext).toLowerCase().trim();
130
226
  if (this.isProtected(activeIntf)) {
131
227
  if (normalized === 'shutdown') {
132
228
  return {
@@ -134,7 +230,7 @@ class CommandFirewall {
134
230
  reason: `Cannot shutdown active protected management interface: ${currentInterfaceContext}`
135
231
  };
136
232
  }
137
- if (normalized.startsWith('no ip address') || normalized.startsWith('no ip add')) {
233
+ if (normalized.startsWith('no ip address')) {
138
234
  return {
139
235
  dangerous: true,
140
236
  reason: `Cannot remove IP address configuration from protected interface: ${currentInterfaceContext}`
@@ -145,9 +241,13 @@ class CommandFirewall {
145
241
  return { dangerous: false };
146
242
  }
147
243
  isProtected(interfaceName) {
148
- return this.protectedInterfaces.some(p => p === interfaceName ||
149
- interfaceName.startsWith(p) ||
150
- p.startsWith(interfaceName));
244
+ const normalizedTarget = CommandFirewall.normalizeInterfaceName(interfaceName).toLowerCase().trim();
245
+ return this.protectedInterfaces.some(p => {
246
+ const normalizedP = CommandFirewall.normalizeInterfaceName(p).toLowerCase().trim();
247
+ return normalizedP === normalizedTarget ||
248
+ normalizedTarget.startsWith(normalizedP) ||
249
+ normalizedP.startsWith(normalizedTarget);
250
+ });
151
251
  }
152
252
  async verifyWithHuman(command, reason) {
153
253
  const isNonInteractive = process.env.CISCOLLM_NON_INTERACTIVE === 'true';
@@ -1 +1 @@
1
- {"version":3,"file":"CommandFirewall.js","sourceRoot":"","sources":["../../../src/core/guardrails/CommandFirewall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CommandFirewall.js","sourceRoot":"","sources":["../../../src/core/guardrails/CommandFirewall.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,23 @@ class TransactionManager {
25
25
  console.warn(chalk_1.default.yellow('[!] Flash storage is not accessible or not found. Skipping backup creation.'));
26
26
  return;
27
27
  }
28
+ const freeSpaceMatch = /(\d+)\s+bytes\s+free/i.exec(flashCheck) || /(\d+)\s+bytes\s+available/i.exec(flashCheck);
29
+ if (freeSpaceMatch) {
30
+ const freeBytes = parseInt(freeSpaceMatch[1], 10);
31
+ let configSize = 50000;
32
+ try {
33
+ const runningConfig = await session.execute('show running-config');
34
+ if (runningConfig && !runningConfig.includes('% Invalid')) {
35
+ configSize = runningConfig.length;
36
+ }
37
+ }
38
+ catch { }
39
+ const requiredMargin = Math.max(50000, configSize * 1.5);
40
+ if (freeBytes < requiredMargin) {
41
+ console.warn(chalk_1.default.yellow(`[!] Flash space is too low: only ${freeBytes} bytes free (required safety margin: ${requiredMargin} bytes). Skipping backup creation to prevent write failures.`));
42
+ return;
43
+ }
44
+ }
28
45
  console.log(chalk_1.default.cyan('❯ Creating device running-config backup on flash...'));
29
46
  const rawOutput = await session.execute(`copy running-config ${this.backupFilename}`);
30
47
  if (rawOutput.includes('Destination filename') || rawOutput.includes('?')) {
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionManager.js","sourceRoot":"","sources":["../../../src/core/rollback/TransactionManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TransactionManager.js","sourceRoot":"","sources":["../../../src/core/rollback/TransactionManager.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -828,6 +828,148 @@ program
828
828
  process.exit(0);
829
829
  }
830
830
  });
831
+ program
832
+ .command('monitor')
833
+ .description('Start the Closed-Loop Auto-Diagnosis & Healing Monitor (AIOps)')
834
+ .option('--protocol <type>', 'Connection protocol (serial | ssh | telnet)', 'serial')
835
+ .option('--provider <type>', 'LLM provider mode (local | cloud)', 'local')
836
+ .option('--api-key <key>', 'API key for cloud provider (OpenRouter)')
837
+ .option('-c, --com <ports>', 'COM Port interface identifier(s), comma-separated (e.g. COM3 or COM3,COM4)')
838
+ .option('-b, --baud <rate>', 'Serial transmission baud rate constraint', '9600')
839
+ .option('--host <address>', 'Target IP address or hostname (comma-separated for multi-device)')
840
+ .option('--port <port>', 'Target connection port')
841
+ .option('-u, --username <name>', 'Device login username')
842
+ .option('-p, --password <pass>', 'Device login password')
843
+ .option('--env-password', 'Read device password from $CISCOLLM_PASS environment variable (safe for special chars)')
844
+ .option('--private-key <path>', 'SSH private key file path for protocols that support key-based auth')
845
+ .option('--passphrase <passphrase>', 'Passphrase for the SSH private key file')
846
+ .option('--local-type <type>', 'Local service type (ollama | lmstudio)')
847
+ .option('--model <name>', 'Model name for compilation')
848
+ .option('--endpoint <url>', 'Ollama/LM Studio/compatibility API server endpoint')
849
+ .option('--non-interactive', 'Enable completely autonomous, non-interactive healing')
850
+ .option('--min-confidence <confidence>', 'Minimum AI confidence threshold to apply remediation', '0.80')
851
+ .action(async (options) => {
852
+ let provider = options.provider;
853
+ let localType = options.localType;
854
+ if (localType) {
855
+ localType = localType.toLowerCase().trim();
856
+ if (localType === 'llmstudio') {
857
+ localType = 'lmstudio';
858
+ }
859
+ }
860
+ let apiKey = options.api_key || options.apiKey;
861
+ let model = options.model;
862
+ let endpoint = options.endpoint;
863
+ let protocol = options.protocol;
864
+ let com = options.com;
865
+ let baud = options.baud;
866
+ let host = options.host;
867
+ let port = options.port;
868
+ let username = options.username;
869
+ let privateKey;
870
+ if (options.privateKey) {
871
+ privateKey = (0, fs_1.readFileSync)(options.privateKey, 'utf8');
872
+ }
873
+ let netconfPassphrase = options.passphrase;
874
+ let password = options.envPassword
875
+ ? (process.env.CISCOLLM_PASS || '')
876
+ : options.password;
877
+ let nonInteractive = options.nonInteractive === true;
878
+ let minConfidence = parseFloat(options.minConfidence || '0.80');
879
+ ui_1.logger.banner();
880
+ ui_1.logger.info(`Initializing auto-healing monitoring in [${provider.toUpperCase()}] mode...`);
881
+ if (!localType)
882
+ localType = 'ollama';
883
+ activeCoordinator = new MultiAgentCoordinator_1.MultiAgentCoordinator();
884
+ try {
885
+ if (protocol === 'serial') {
886
+ if (!com) {
887
+ throw new Error('COM port (-c, --com) is required for serial protocol connections.');
888
+ }
889
+ const ports = com.split(',').map((p) => p.trim()).filter((p) => p.length > 0);
890
+ for (const port of ports) {
891
+ const session = new PlinkSerial_1.PlinkSerialSession(port, parseInt(baud, 10));
892
+ activeCoordinator.registerSession(port, session);
893
+ }
894
+ }
895
+ else if (protocol === 'ssh') {
896
+ if (!host || !username) {
897
+ throw new Error('Host (--host) and Username (-u, --username) are required for SSH connections.');
898
+ }
899
+ const hosts = host.split(',').map((h) => h.trim()).filter((h) => h.length > 0);
900
+ for (const h of hosts) {
901
+ const session = new SshSession_1.SshSession({
902
+ host: h,
903
+ port: port ? parseInt(port, 10) : 22,
904
+ username: username,
905
+ password: password
906
+ });
907
+ activeCoordinator.registerSession(h, session);
908
+ }
909
+ }
910
+ else if (protocol === 'telnet') {
911
+ if (!host) {
912
+ throw new Error('Host (--host) is required for Telnet connections.');
913
+ }
914
+ const hosts = host.split(',').map((h) => h.trim()).filter((h) => h.length > 0);
915
+ for (const h of hosts) {
916
+ const session = new TelnetSession_1.TelnetSession({
917
+ host: h,
918
+ port: port ? parseInt(port, 10) : 23,
919
+ username: username,
920
+ password: password
921
+ });
922
+ activeCoordinator.registerSession(h, session);
923
+ }
924
+ }
925
+ else {
926
+ throw new Error(`Unsupported protocol for monitoring: ${protocol}`);
927
+ }
928
+ if (provider === 'local' && !endpoint) {
929
+ if (localType === 'lmstudio') {
930
+ endpoint = 'http://127.0.0.1:1234/v1';
931
+ }
932
+ else {
933
+ endpoint = 'http://127.0.0.1:11434/v1';
934
+ }
935
+ }
936
+ const localAIClient = new LLMClient_1.LLMClient(provider, endpoint, model, apiKey, localType);
937
+ const llmSpinner = (0, ui_1.createSpinner)('Preflight check: validating LLM endpoint reachability...').start();
938
+ try {
939
+ await localAIClient.ensureReachable();
940
+ llmSpinner.succeed('LLM endpoint is ready.');
941
+ }
942
+ catch (err) {
943
+ llmSpinner.fail('LLM endpoint preflight failed.');
944
+ throw err;
945
+ }
946
+ const connSpinner = (0, ui_1.createSpinner)('Connecting to target network devices...').start();
947
+ try {
948
+ await activeCoordinator.connectAll();
949
+ connSpinner.succeed('All hardware sessions synchronized successfully.');
950
+ }
951
+ catch (err) {
952
+ connSpinner.fail('Connection failed.');
953
+ throw err;
954
+ }
955
+ const { AutoHealer } = require('./core/agent/AutoHealer');
956
+ const healer = new AutoHealer(localAIClient, activeCoordinator, {
957
+ nonInteractive,
958
+ minConfidence
959
+ });
960
+ healer.start();
961
+ ui_1.logger.info('Monitoring active. Press Ctrl+C to terminate session.');
962
+ await new Promise(() => { });
963
+ }
964
+ catch (err) {
965
+ ui_1.logger.critical(`Monitoring Error: ${err.message}`);
966
+ }
967
+ finally {
968
+ await cleanup();
969
+ ui_1.logger.info('Session Terminated. Pipelines detached.');
970
+ process.exit(0);
971
+ }
972
+ });
831
973
  program
832
974
  .command('server')
833
975
  .description('Start the Cisco IOS Multi-Protocol Test Simulator (SSH, Telnet, NETCONF, and HTTP LLM Mock)')