ciscollm-cli 1.3.3 → 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.
- package/README.md +19 -25
- package/dist/cli/commands/daemonCommand.d.ts +4 -0
- package/dist/cli/commands/daemonCommand.js +68 -0
- package/dist/cli/commands/daemonCommand.js.map +1 -0
- package/dist/cli/commands/monitorCommand.js +17 -1
- package/dist/cli/commands/monitorCommand.js.map +1 -1
- package/dist/cli/commands/runCommand.d.ts +1 -3
- package/dist/cli/commands/runCommand.js +177 -470
- package/dist/cli/commands/runCommand.js.map +1 -1
- package/dist/cli/ui/interactiveWizard.d.ts +1 -0
- package/dist/cli/ui/interactiveWizard.js +429 -0
- package/dist/cli/ui/interactiveWizard.js.map +1 -0
- package/dist/cli/ui/ui.js +0 -5
- package/dist/cli/ui/ui.js.map +1 -1
- package/dist/core/agent/AgentLoop.d.ts +15 -3
- package/dist/core/agent/AgentLoop.js +196 -67
- package/dist/core/agent/AgentLoop.js.map +1 -1
- package/dist/core/agent/AutoRemediationEngine.d.ts +14 -0
- package/dist/core/agent/AutoRemediationEngine.js +75 -0
- package/dist/core/agent/AutoRemediationEngine.js.map +1 -0
- package/dist/core/agent/DigitalTwin.d.ts +10 -0
- package/dist/core/agent/DigitalTwin.js +41 -0
- package/dist/core/agent/DigitalTwin.js.map +1 -0
- package/dist/core/agent/IntentTranslator.d.ts +8 -0
- package/dist/core/agent/IntentTranslator.js +63 -0
- package/dist/core/agent/IntentTranslator.js.map +1 -0
- package/dist/core/agent/MemoryManager.d.ts +14 -0
- package/dist/core/agent/MemoryManager.js +89 -0
- package/dist/core/agent/MemoryManager.js.map +1 -0
- package/dist/core/agent/MultiAgentCoordinator.js +0 -2
- package/dist/core/agent/MultiAgentCoordinator.js.map +1 -1
- package/dist/core/agent/NetworkPlanner.d.ts +9 -0
- package/dist/core/agent/NetworkPlanner.js +111 -0
- package/dist/core/agent/NetworkPlanner.js.map +1 -0
- package/dist/core/agent/PromptEngine.d.ts +1 -1
- package/dist/core/agent/PromptEngine.js +23 -13
- package/dist/core/agent/PromptEngine.js.map +1 -1
- package/dist/core/guardrails/NetworkAudit.js +1 -1
- package/dist/core/guardrails/NetworkAudit.js.map +1 -1
- package/dist/core/plugins/PluginManager.d.ts +17 -0
- package/dist/core/plugins/PluginManager.js +108 -0
- package/dist/core/plugins/PluginManager.js.map +1 -0
- package/dist/core/rollback/TransactionManager.js +0 -5
- package/dist/core/rollback/TransactionManager.js.map +1 -1
- package/dist/index.js +36 -61
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/llm/LLMClient.d.ts +1 -0
- package/dist/infrastructure/llm/LLMClient.js +33 -9
- package/dist/infrastructure/llm/LLMClient.js.map +1 -1
- package/dist/infrastructure/protocols/SshSession.d.ts +1 -0
- package/dist/infrastructure/protocols/SshSession.js +5 -4
- package/dist/infrastructure/protocols/SshSession.js.map +1 -1
- package/dist/infrastructure/protocols/TelnetSession.d.ts +1 -0
- package/dist/infrastructure/protocols/TelnetSession.js +5 -1
- package/dist/infrastructure/protocols/TelnetSession.js.map +1 -1
- package/dist/server/devices/ASADevice.d.ts +17 -0
- package/dist/server/devices/ASADevice.js +160 -0
- package/dist/server/devices/ASADevice.js.map +1 -0
- package/dist/server/devices/BaseDevice.d.ts +11 -0
- package/dist/server/devices/BaseDevice.js +19 -0
- package/dist/server/devices/BaseDevice.js.map +1 -0
- package/dist/server/devices/IOSDevice.d.ts +100 -0
- package/dist/server/devices/IOSDevice.js +1561 -0
- package/dist/server/devices/IOSDevice.js.map +1 -0
- package/dist/server/devices/LinuxServerDevice.d.ts +8 -0
- package/dist/server/devices/LinuxServerDevice.js +71 -0
- package/dist/server/devices/LinuxServerDevice.js.map +1 -0
- package/dist/server/devices/PCDevice.d.ts +20 -0
- package/dist/server/devices/PCDevice.js +86 -0
- package/dist/server/devices/PCDevice.js.map +1 -0
- package/dist/server/devices/RouterDevice.d.ts +4 -0
- package/dist/server/devices/RouterDevice.js +11 -0
- package/dist/server/devices/RouterDevice.js.map +1 -0
- package/dist/server/devices/SwitchDevice.d.ts +4 -0
- package/dist/server/devices/SwitchDevice.js +11 -0
- package/dist/server/devices/SwitchDevice.js.map +1 -0
- package/dist/server/devices/WLCDevice.d.ts +15 -0
- package/dist/server/devices/WLCDevice.js +88 -0
- package/dist/server/devices/WLCDevice.js.map +1 -0
- package/dist/server/index.js +47 -22
- package/dist/server/index.js.map +1 -1
- package/dist/server/shell-simulator.js +1 -2
- package/dist/server/shell-simulator.js.map +1 -1
- package/dist/server/ssh.d.ts +2 -1
- package/dist/server/ssh.js +22 -9
- package/dist/server/ssh.js.map +1 -1
- package/dist/server/telnet.d.ts +3 -2
- package/dist/server/telnet.js +10 -42
- package/dist/server/telnet.js.map +1 -1
- package/dist/shared/bootBanner.d.ts +1 -0
- package/dist/shared/bootBanner.js +93 -0
- package/dist/shared/bootBanner.js.map +1 -0
- package/dist/shared/constants.js +1 -1
- package/dist/shared/constants.js.map +1 -1
- package/package.json +1 -1
- package/dist/cli/commands/dashboardCommand.d.ts +0 -1
- package/dist/cli/commands/dashboardCommand.js +0 -16
- package/dist/cli/commands/dashboardCommand.js.map +0 -1
- package/dist/cli/commands/shellCommand.d.ts +0 -1
- package/dist/cli/commands/shellCommand.js +0 -44
- package/dist/cli/commands/shellCommand.js.map +0 -1
- package/dist/infrastructure/protocols/CmlSession.d.ts +0 -26
- package/dist/infrastructure/protocols/CmlSession.js +0 -448
- package/dist/infrastructure/protocols/CmlSession.js.map +0 -1
- package/dist/infrastructure/protocols/NetconfSession.d.ts +0 -74
- package/dist/infrastructure/protocols/NetconfSession.js +0 -553
- package/dist/infrastructure/protocols/NetconfSession.js.map +0 -1
- package/dist/server/dashboard.d.ts +0 -3
- package/dist/server/dashboard.js +0 -1149
- package/dist/server/dashboard.js.map +0 -1
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.AutoRemediationEngine = void 0;
|
|
7
|
+
const AgentLoop_1 = require("./AgentLoop");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const axios_1 = __importDefault(require("axios"));
|
|
10
|
+
class AutoRemediationEngine {
|
|
11
|
+
llmClient;
|
|
12
|
+
coordinator;
|
|
13
|
+
webhookUrl;
|
|
14
|
+
constructor(llmClient, coordinator, webhookUrl) {
|
|
15
|
+
this.llmClient = llmClient;
|
|
16
|
+
this.coordinator = coordinator;
|
|
17
|
+
this.webhookUrl = webhookUrl;
|
|
18
|
+
}
|
|
19
|
+
async checkHealth() {
|
|
20
|
+
console.log(chalk_1.default.gray('Running background health checks...'));
|
|
21
|
+
try {
|
|
22
|
+
for (const [id, session] of this.coordinator.getSessions().entries()) {
|
|
23
|
+
const output = await session.execute('show ip interface brief | exclude unassigned');
|
|
24
|
+
const downMatch = output.match(/(\S+)\s+(?:\d+\.\d+\.\d+\.\d+)\s+YES\s+(?:NVRAM|manual)\s+down\s+down/i);
|
|
25
|
+
if (downMatch) {
|
|
26
|
+
console.log(chalk_1.default.yellow(`Detected downed interface on ${id}: ${downMatch[1]}`));
|
|
27
|
+
return { healthy: false, issue: `Interface ${downMatch[1]} on device ${id} is unexpectedly down. output: ${output}` };
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
console.log(chalk_1.default.green('Network is healthy.'));
|
|
31
|
+
return { healthy: true };
|
|
32
|
+
}
|
|
33
|
+
catch (e) {
|
|
34
|
+
console.log(chalk_1.default.red(`Health check failed: ${e.message}`));
|
|
35
|
+
return { healthy: false, issue: `Could not retrieve status: ${e.message}` };
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
async autoRemediate(issue) {
|
|
39
|
+
console.log(chalk_1.default.red('\n🚨 AUTO-REMEDIATION TRIGGERED 🚨'));
|
|
40
|
+
console.log(chalk_1.default.yellow(`Issue Detected: ${issue}`));
|
|
41
|
+
await this.sendWebhook({ status: 'TRIGGERED', issue });
|
|
42
|
+
const agent = new AgentLoop_1.CiscoAgentLoop(this.llmClient, this.coordinator, {
|
|
43
|
+
fastTrack: true,
|
|
44
|
+
rbacRole: 'system_daemon',
|
|
45
|
+
safeMode: true
|
|
46
|
+
});
|
|
47
|
+
const goal = `Background Task: Investigate and fix the following issue: "${issue}". Use show commands to understand why it is down, then execute configuration commands (like 'no shutdown') to fix it if it is a configuration issue. Verify it comes back up.`;
|
|
48
|
+
try {
|
|
49
|
+
await agent.run(goal);
|
|
50
|
+
console.log(chalk_1.default.green('\n AUTO-REMEDIATION COMPLETE \n'));
|
|
51
|
+
await this.sendWebhook({ status: 'RESOLVED', issue, details: 'The AI agent has successfully completed the remediation task.' });
|
|
52
|
+
}
|
|
53
|
+
catch (e) {
|
|
54
|
+
console.log(chalk_1.default.red(`\n AUTO-REMEDIATION FAILED: ${e.message} \n`));
|
|
55
|
+
await this.sendWebhook({ status: 'FAILED', issue, error: e.message });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
async sendWebhook(payload) {
|
|
59
|
+
if (!this.webhookUrl)
|
|
60
|
+
return;
|
|
61
|
+
try {
|
|
62
|
+
await axios_1.default.post(this.webhookUrl, {
|
|
63
|
+
timestamp: new Date().toISOString(),
|
|
64
|
+
component: 'CiscoLLM-Daemon',
|
|
65
|
+
...payload
|
|
66
|
+
});
|
|
67
|
+
console.log(chalk_1.default.gray(`[Webhook sent to ${this.webhookUrl}]`));
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
console.log(chalk_1.default.red(`[Failed to send webhook: ${err.message}]`));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.AutoRemediationEngine = AutoRemediationEngine;
|
|
75
|
+
//# sourceMappingURL=AutoRemediationEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AutoRemediationEngine.js","sourceRoot":"","sources":["../../../src/core/agent/AutoRemediationEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DigitalTwin = void 0;
|
|
7
|
+
const SwitchDevice_1 = require("../../server/devices/SwitchDevice");
|
|
8
|
+
const ui_1 = require("../../cli/ui/ui");
|
|
9
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
10
|
+
class DigitalTwin {
|
|
11
|
+
simulator;
|
|
12
|
+
constructor(initialHostname = 'Switch1') {
|
|
13
|
+
this.simulator = new SwitchDevice_1.SwitchDevice();
|
|
14
|
+
this.simulator.hostname = initialHostname;
|
|
15
|
+
this.simulator.mode = 'PRIVILEGED_EXEC';
|
|
16
|
+
}
|
|
17
|
+
async preFlightCheck(commands) {
|
|
18
|
+
ui_1.logger.info(chalk_1.default.magenta(`[Digital Twin] Starting Pre-Flight Check for ${commands.length} commands...`));
|
|
19
|
+
let fullOutput = '';
|
|
20
|
+
for (let i = 0; i < commands.length; i++) {
|
|
21
|
+
const cmd = commands[i].trim();
|
|
22
|
+
if (!cmd)
|
|
23
|
+
continue;
|
|
24
|
+
const out = this.simulator.processCommand(cmd);
|
|
25
|
+
fullOutput += `> ${cmd}\n${out}\n`;
|
|
26
|
+
if (out.includes('% Invalid input detected') ||
|
|
27
|
+
out.includes('% Incomplete command') ||
|
|
28
|
+
out.includes('% Command rejected')) {
|
|
29
|
+
ui_1.logger.warn(chalk_1.default.red(`[Digital Twin] Pre-Flight Failed at command: "${cmd}"`));
|
|
30
|
+
return { success: false, errorIndex: i, output: fullOutput };
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
ui_1.logger.info(chalk_1.default.green(`[Digital Twin] Pre-Flight Check Passed!`));
|
|
34
|
+
return { success: true, errorIndex: -1, output: fullOutput };
|
|
35
|
+
}
|
|
36
|
+
getSimulatorState() {
|
|
37
|
+
return `Mode: ${this.simulator.mode}, Interfaces: ${this.simulator.interfaces.size}, VLANs: ${this.simulator.vlans.size}`;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.DigitalTwin = DigitalTwin;
|
|
41
|
+
//# sourceMappingURL=DigitalTwin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DigitalTwin.js","sourceRoot":"","sources":["../../../src/core/agent/DigitalTwin.ts"],"names":[],"mappings":";;;;;;AAAA,oEAAiE;AACjE,wCAAyC;AACzC,kDAA0B;AAE1B,MAAa,WAAW;IACZ,SAAS,CAAe;IAEhC,YAAY,kBAA0B,SAAS;QAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,2BAAY,EAAE,CAAC;QAEpC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,eAAe,CAAC;QAC1C,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAC5C,CAAC;IAGM,KAAK,CAAC,cAAc,CAAC,QAAkB;QAC1C,WAAM,CAAC,IAAI,CAAC,eAAK,CAAC,OAAO,CAAC,gDAAgD,QAAQ,CAAC,MAAM,cAAc,CAAC,CAAC,CAAC;QAC1G,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/B,IAAI,CAAC,GAAG;gBAAE,SAAS;YAEnB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YAC/C,UAAU,IAAI,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;YAGnC,IAAI,GAAG,CAAC,QAAQ,CAAC,0BAA0B,CAAC;gBACxC,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC;gBACpC,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBACrC,WAAM,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,iDAAiD,GAAG,GAAG,CAAC,CAAC,CAAC;gBAChF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;YACjE,CAAC;QACL,CAAC;QAED,WAAM,CAAC,IAAI,CAAC,eAAK,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC,CAAC;QACpE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IACjE,CAAC;IAEM,iBAAiB;QACpB,OAAO,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,iBAAiB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,YAAY,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC9H,CAAC;CACJ;AAtCD,kCAsCC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { LLMClient } from '../../infrastructure/llm/LLMClient';
|
|
2
|
+
export declare class IntentTranslator {
|
|
3
|
+
static categorizeComplexityWithLLM(llmClient: LLMClient, intent: string): Promise<'FAST_TRACK' | 'DEEP_ORCHESTRATION' | 'QUERY_ONLY'>;
|
|
4
|
+
static validateCommandAgainstIntent(command: string, intent: string): {
|
|
5
|
+
valid: boolean;
|
|
6
|
+
reason?: string;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IntentTranslator = void 0;
|
|
4
|
+
class IntentTranslator {
|
|
5
|
+
static async categorizeComplexityWithLLM(llmClient, intent) {
|
|
6
|
+
const systemPrompt = `You are an Intent Classifier for a Cisco Network Automation tool.
|
|
7
|
+
The user will provide an intent. You must output exactly one word: 'FAST_TRACK', 'DEEP_ORCHESTRATION', or 'QUERY_ONLY'.
|
|
8
|
+
Rules:
|
|
9
|
+
- Use 'QUERY_ONLY' if the user is just asking a question, wanting to look up information, or troubleshoot (e.g. "who is connected to port 1?", "why is internet slow?", "show routing table").
|
|
10
|
+
- Use 'FAST_TRACK' if the intent is a simple state-changing configuration (e.g. setting or changing hostname, setting passwords).
|
|
11
|
+
- Use 'DEEP_ORCHESTRATION' if the intent is complex and involves state-changing configurations (e.g. configuring OSPF, routing, VLANs, ACLs, BGP, or interface states like shutdown/no shutdown).
|
|
12
|
+
No other text, explanations, or markdown.`;
|
|
13
|
+
try {
|
|
14
|
+
const response = await llmClient.generateCompletion([
|
|
15
|
+
{ role: 'system', content: systemPrompt },
|
|
16
|
+
{ role: 'user', content: intent }
|
|
17
|
+
], []);
|
|
18
|
+
const rawResponse = (response.content || '').toUpperCase();
|
|
19
|
+
if (rawResponse.includes('QUERY_ONLY')) {
|
|
20
|
+
return 'QUERY_ONLY';
|
|
21
|
+
}
|
|
22
|
+
if (rawResponse.includes('FAST_TRACK')) {
|
|
23
|
+
return 'FAST_TRACK';
|
|
24
|
+
}
|
|
25
|
+
return 'DEEP_ORCHESTRATION';
|
|
26
|
+
}
|
|
27
|
+
catch (e) {
|
|
28
|
+
return 'DEEP_ORCHESTRATION';
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
static validateCommandAgainstIntent(command, intent) {
|
|
32
|
+
const lowerIntent = intent.toLowerCase();
|
|
33
|
+
const lowerCmd = command.toLowerCase().trim();
|
|
34
|
+
const whitelist = ['show', 'enable', 'disable', 'configure terminal', 'exit', 'end', 'ping', 'dir'];
|
|
35
|
+
if (whitelist.some(w => lowerCmd.startsWith(w))) {
|
|
36
|
+
return { valid: true };
|
|
37
|
+
}
|
|
38
|
+
if (lowerIntent.includes('vlan')) {
|
|
39
|
+
if (lowerCmd.startsWith('vlan ') || lowerCmd.startsWith('name ') || lowerCmd.includes('switchport')) {
|
|
40
|
+
return { valid: true };
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (lowerIntent.includes('ospf') || lowerIntent.includes('route')) {
|
|
44
|
+
if (lowerCmd.includes('router ospf') || lowerCmd.includes('network') || lowerCmd.includes('ip route')) {
|
|
45
|
+
return { valid: true };
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (lowerIntent.includes('interface') || lowerIntent.includes('port')) {
|
|
49
|
+
if (lowerCmd.startsWith('interface ') || lowerCmd.includes('ip address') || lowerCmd.includes('description') || lowerCmd.includes('shutdown')) {
|
|
50
|
+
return { valid: true };
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (!lowerIntent.includes('vlan') && !lowerIntent.includes('ospf') && !lowerIntent.includes('route') && !lowerIntent.includes('interface') && !lowerIntent.includes('port')) {
|
|
54
|
+
return { valid: true };
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
valid: false,
|
|
58
|
+
reason: `The command "${command}" does not seem to deterministically match the intent domain "${intent}".`
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.IntentTranslator = IntentTranslator;
|
|
63
|
+
//# sourceMappingURL=IntentTranslator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IntentTranslator.js","sourceRoot":"","sources":["../../../src/core/agent/IntentTranslator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface MemoryEntry {
|
|
2
|
+
intent: string;
|
|
3
|
+
successfulCommands: string[];
|
|
4
|
+
failedCommands: string[];
|
|
5
|
+
timestamp: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class MemoryManager {
|
|
8
|
+
private memoryFile;
|
|
9
|
+
private memory;
|
|
10
|
+
constructor(storagePath?: string);
|
|
11
|
+
private loadMemory;
|
|
12
|
+
saveExperience(intent: string, successful: string[], failed: string[]): void;
|
|
13
|
+
retrieveRelevantExperience(intent: string): string;
|
|
14
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.MemoryManager = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
class MemoryManager {
|
|
40
|
+
memoryFile;
|
|
41
|
+
memory = [];
|
|
42
|
+
constructor(storagePath = path.join(process.cwd(), 'memory.json')) {
|
|
43
|
+
this.memoryFile = storagePath;
|
|
44
|
+
this.loadMemory();
|
|
45
|
+
}
|
|
46
|
+
loadMemory() {
|
|
47
|
+
if (fs.existsSync(this.memoryFile)) {
|
|
48
|
+
try {
|
|
49
|
+
const data = fs.readFileSync(this.memoryFile, 'utf8');
|
|
50
|
+
this.memory = JSON.parse(data);
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
console.warn('Failed to load memory file. Starting fresh.');
|
|
54
|
+
this.memory = [];
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
saveExperience(intent, successful, failed) {
|
|
59
|
+
this.memory.push({
|
|
60
|
+
intent,
|
|
61
|
+
successfulCommands: successful,
|
|
62
|
+
failedCommands: failed,
|
|
63
|
+
timestamp: new Date().toISOString()
|
|
64
|
+
});
|
|
65
|
+
try {
|
|
66
|
+
fs.writeFileSync(this.memoryFile, JSON.stringify(this.memory, null, 2));
|
|
67
|
+
}
|
|
68
|
+
catch (e) {
|
|
69
|
+
console.error('Failed to save memory.');
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
retrieveRelevantExperience(intent) {
|
|
73
|
+
const matches = this.memory.filter(m => m.intent.toLowerCase().includes(intent.toLowerCase()) ||
|
|
74
|
+
intent.toLowerCase().includes(m.intent.toLowerCase()));
|
|
75
|
+
if (matches.length === 0)
|
|
76
|
+
return 'No relevant past experiences found.';
|
|
77
|
+
const latest = matches[matches.length - 1];
|
|
78
|
+
let exp = `Past Experience for similar intent: "${latest.intent}"\n`;
|
|
79
|
+
if (latest.successfulCommands.length > 0) {
|
|
80
|
+
exp += `Successful commands previously used:\n- ${latest.successfulCommands.join('\n- ')}\n`;
|
|
81
|
+
}
|
|
82
|
+
if (latest.failedCommands.length > 0) {
|
|
83
|
+
exp += `Commands to AVOID (previously failed):\n- ${latest.failedCommands.join('\n- ')}\n`;
|
|
84
|
+
}
|
|
85
|
+
return exp;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
exports.MemoryManager = MemoryManager;
|
|
89
|
+
//# sourceMappingURL=MemoryManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoryManager.js","sourceRoot":"","sources":["../../../src/core/agent/MemoryManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAS7B,MAAa,aAAa;IACd,UAAU,CAAS;IACnB,MAAM,GAAkB,EAAE,CAAC;IAEnC,YAAY,cAAsB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC;QACrE,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC;QAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAEO,UAAU;QACd,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC;gBACD,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBACtD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,OAAO,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;gBAC5D,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;YACrB,CAAC;QACL,CAAC;IACL,CAAC;IAEM,cAAc,CAAC,MAAc,EAAE,UAAoB,EAAE,MAAgB;QACxE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACb,MAAM;YACN,kBAAkB,EAAE,UAAU;YAC9B,cAAc,EAAE,MAAM;YACtB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACtC,CAAC,CAAC;QAEH,IAAI,CAAC;YACD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;IACL,CAAC;IAEM,0BAA0B,CAAC,MAAc;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACnC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACrD,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CACxD,CAAC;QAEF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,qCAAqC,CAAC;QAEvE,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC3C,IAAI,GAAG,GAAG,wCAAwC,MAAM,CAAC,MAAM,KAAK,CAAC;QACrE,IAAI,MAAM,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,GAAG,IAAI,2CAA2C,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACjG,CAAC;QACD,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,GAAG,IAAI,6CAA6C,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAC/F,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;CACJ;AAtDD,sCAsDC"}
|
|
@@ -39,11 +39,9 @@ class MultiAgentCoordinator extends events_1.EventEmitter {
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
async connectAll() {
|
|
42
|
-
console.log(chalk_1.default.cyan(`❯ Establishing parallel connections to ${this.sessions.size} target device(s)...`));
|
|
43
42
|
const promises = Array.from(this.sessions.entries()).map(async ([id, session]) => {
|
|
44
43
|
try {
|
|
45
44
|
await session.connect();
|
|
46
|
-
console.log(chalk_1.default.green(`[+] Device "${id}" connected successfully.`));
|
|
47
45
|
}
|
|
48
46
|
catch (err) {
|
|
49
47
|
throw new Error(`Device "${id}" failed to connect: ${err.message}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiAgentCoordinator.js","sourceRoot":"","sources":["../../../src/core/agent/MultiAgentCoordinator.ts"],"names":[],"mappings":";;;;;;AAEA,qEAAkE;AAClE,kDAA0B;AAC1B,mCAAsC;AAEtC,MAAa,qBAAsB,SAAQ,qBAAY;IAC3C,QAAQ,GAA6B,IAAI,GAAG,EAAE,CAAC;IAC/C,QAAQ,GAAoB;QAChC,YAAY,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;QACvC,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,EAAE;KACZ,CAAC;IACM,YAAY,GAAwE,EAAE,CAAC;IAExF,WAAW,CAAC,QAAgB,EAAE,GAAQ,EAAE,IAAS;QACpD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACnB,QAAQ;YACR,GAAG;YACH,IAAI;YACJ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACtC,CAAC,CAAC;IACP,CAAC;IAEM,eAAe;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED;QACI,KAAK,EAAE,CAAC;IACZ,CAAC;IAEM,eAAe,CAAC,QAAgB,EAAE,OAAoB;QACzD,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrC,IAAI,OAAO,OAAO,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;YAC/C,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;gBAClC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,UAAU;QACnB,
|
|
1
|
+
{"version":3,"file":"MultiAgentCoordinator.js","sourceRoot":"","sources":["../../../src/core/agent/MultiAgentCoordinator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { LLMClient } from '../../infrastructure/llm/LLMClient';
|
|
2
|
+
import { MultiAgentCoordinator } from './MultiAgentCoordinator';
|
|
3
|
+
export declare class NetworkPlanner {
|
|
4
|
+
private llmClient;
|
|
5
|
+
private coordinator;
|
|
6
|
+
constructor(llmClient: LLMClient, coordinator: MultiAgentCoordinator);
|
|
7
|
+
generatePlan(goal: string): Promise<string>;
|
|
8
|
+
simulateImpact(blueprint: string): Promise<string>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.NetworkPlanner = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const PluginManager_1 = require("../plugins/PluginManager");
|
|
9
|
+
class NetworkPlanner {
|
|
10
|
+
llmClient;
|
|
11
|
+
coordinator;
|
|
12
|
+
constructor(llmClient, coordinator) {
|
|
13
|
+
this.llmClient = llmClient;
|
|
14
|
+
this.coordinator = coordinator;
|
|
15
|
+
}
|
|
16
|
+
async generatePlan(goal) {
|
|
17
|
+
const topology = this.coordinator.getTopology();
|
|
18
|
+
let devicesStr = '';
|
|
19
|
+
if (topology.nodes.length > 0) {
|
|
20
|
+
devicesStr = topology.nodes.join(', ');
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
devicesStr = Array.from(this.coordinator.getSessions().keys()).join(', ');
|
|
24
|
+
}
|
|
25
|
+
const plugins = PluginManager_1.PluginManager.getInstance().getDynamicTools().map(t => `- ${t.function.name}: ${t.function.description}`).join('\n');
|
|
26
|
+
const systemPrompt = `You are a Principal Network Architect orchestrating operations across multiple Cisco Enterprise devices.
|
|
27
|
+
Your task is to translate the user's high-level intent into a detailed Execution Blueprint (Orchestration Plan) before any commands are run on actual hardware.
|
|
28
|
+
|
|
29
|
+
ENVIRONMENT
|
|
30
|
+
Available Devices: ${devicesStr}
|
|
31
|
+
Available Plugins/Scripts:
|
|
32
|
+
${plugins || 'None'}
|
|
33
|
+
|
|
34
|
+
INSTRUCTIONS
|
|
35
|
+
1. Evaluate Intent: If the user's goal is completely unrelated to Network Engineering, Cisco operations, or CLI commands (e.g. "book a flight", "write python"), output EXACTLY: "REJECTED_INTENT: The requested task is outside the scope of network operations." and stop.
|
|
36
|
+
2. Analyze the user's goal and break it down into step-by-step device operations.
|
|
37
|
+
3. For each step, specify:
|
|
38
|
+
- Target Device
|
|
39
|
+
- Action (What will be done, not necessarily the exact syntax, but the logical operation)
|
|
40
|
+
- Risk Level (LOW, MEDIUM, HIGH)
|
|
41
|
+
4. Format your output as a clean, readable text document. Do NOT use markdown asterisks (**) or bold text. Do not output raw JSON, make it human readable.
|
|
42
|
+
|
|
43
|
+
Example:
|
|
44
|
+
Orchestration Plan
|
|
45
|
+
|
|
46
|
+
Step 1: [Device: Core-1]
|
|
47
|
+
- Action: Configure OSPF process 1 and add network 10.0.0.0/24
|
|
48
|
+
- Risk: MEDIUM
|
|
49
|
+
|
|
50
|
+
Step 2: [Device: Dist-1]
|
|
51
|
+
- Action: Ping Core-1 to verify OSPF adjacency
|
|
52
|
+
- Risk: LOW
|
|
53
|
+
`;
|
|
54
|
+
const messages = [
|
|
55
|
+
{ role: 'system', content: systemPrompt },
|
|
56
|
+
{ role: 'user', content: `Goal: ${goal}` }
|
|
57
|
+
];
|
|
58
|
+
console.log(chalk_1.default.magenta('\nORCHESTRATION PLANNER'));
|
|
59
|
+
console.log(chalk_1.default.gray('Analyzing topology and generating execution blueprint...'));
|
|
60
|
+
let fullContent = '';
|
|
61
|
+
try {
|
|
62
|
+
const response = await this.llmClient.generateCompletion(messages, [], (chunk) => {
|
|
63
|
+
if (chunk.content) {
|
|
64
|
+
process.stdout.write(chalk_1.default.cyan(chunk.content));
|
|
65
|
+
fullContent += chunk.content;
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
console.log();
|
|
69
|
+
return response.content || fullContent;
|
|
70
|
+
}
|
|
71
|
+
catch (e) {
|
|
72
|
+
console.log(chalk_1.default.red(`\nFailed to generate orchestration plan: ${e.message}`));
|
|
73
|
+
throw e;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
async simulateImpact(blueprint) {
|
|
77
|
+
const stateStrs = [];
|
|
78
|
+
for (const [id, session] of this.coordinator.getSessions().entries()) {
|
|
79
|
+
stateStrs.push(`Device: ${id}\nPrompt: ${session.getState().prompt}`);
|
|
80
|
+
}
|
|
81
|
+
const stateStr = stateStrs.join('\n');
|
|
82
|
+
const systemPrompt = `You are a Network Risk Assessment AI.
|
|
83
|
+
Your job is to simulate the 'What-If' impact of the following execution blueprint on the current network state.
|
|
84
|
+
You must output a short Risk Assessment Report (max 5 lines) detailing:
|
|
85
|
+
1. Potential disruptions (e.g., "This will drop SSH connections to the management IP").
|
|
86
|
+
2. Overall Risk Level (LOW, MEDIUM, HIGH, CRITICAL).
|
|
87
|
+
Do NOT write code or commands, just the impact analysis.`;
|
|
88
|
+
const messages = [
|
|
89
|
+
{ role: 'system', content: systemPrompt },
|
|
90
|
+
{ role: 'user', content: `Current State:\n${stateStr}\n\nPlanned Blueprint:\n${blueprint}` }
|
|
91
|
+
];
|
|
92
|
+
console.log(chalk_1.default.cyan('\n🔍 WHAT-IF ANALYSIS (SIMULATING IMPACT)'));
|
|
93
|
+
let impact = '';
|
|
94
|
+
try {
|
|
95
|
+
const response = await this.llmClient.generateCompletion(messages, [], (chunk) => {
|
|
96
|
+
if (chunk.content) {
|
|
97
|
+
process.stdout.write(chalk_1.default.cyan(chunk.content));
|
|
98
|
+
impact += chunk.content;
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
console.log('\n');
|
|
102
|
+
return impact.trim() || response.content || 'Impact simulation completed with no specific warnings.';
|
|
103
|
+
}
|
|
104
|
+
catch (e) {
|
|
105
|
+
console.log(chalk_1.default.red(`\n[Simulation Failed: ${e.message}]\n`));
|
|
106
|
+
return 'Could not simulate impact due to an error.';
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
exports.NetworkPlanner = NetworkPlanner;
|
|
111
|
+
//# sourceMappingURL=NetworkPlanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NetworkPlanner.js","sourceRoot":"","sources":["../../../src/core/agent/NetworkPlanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export declare class PromptEngine {
|
|
2
|
-
static getSystemPrompt(stateInfo: string, commandReferenceHints?: string, strictReferenceMode?: boolean, topologyInfo?: string): string;
|
|
2
|
+
static getSystemPrompt(stateInfo: string, commandReferenceHints?: string, strictReferenceMode?: boolean, topologyInfo?: string, memoryInfo?: string, queryOnly?: boolean): string;
|
|
3
3
|
}
|
|
@@ -2,22 +2,28 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PromptEngine = void 0;
|
|
4
4
|
class PromptEngine {
|
|
5
|
-
static getSystemPrompt(stateInfo, commandReferenceHints = 'Reference status: not loaded.', strictReferenceMode = false, topologyInfo = 'Topology not discovered yet.') {
|
|
6
|
-
|
|
7
|
-
Your objective is to
|
|
5
|
+
static getSystemPrompt(stateInfo, commandReferenceHints = 'Reference status: not loaded.', strictReferenceMode = false, topologyInfo = 'Topology not discovered yet.', memoryInfo = 'No relevant past experiences found.', queryOnly = false) {
|
|
6
|
+
const baseRole = queryOnly
|
|
7
|
+
? "You are a Network Operations Q&A Agent. Your objective is to query the network using 'show' commands to answer the user's questions. DO NOT execute state-changing configuration commands."
|
|
8
|
+
: "You are a Senior Network Automation Engineer Agent executing operations on Cisco Enterprise Hardware (Switches & Routers).\nYour objective is to accomplish the user's goal safely using step-by-step commands.";
|
|
9
|
+
return `${baseRole}
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
CONTEXT
|
|
10
12
|
${stateInfo}
|
|
11
13
|
Topology: ${topologyInfo}
|
|
12
14
|
Command Hints: ${commandReferenceHints} (Strict enforcement: ${strictReferenceMode})
|
|
15
|
+
Memory: ${memoryInfo}
|
|
13
16
|
|
|
14
|
-
|
|
15
|
-
1. Verify
|
|
17
|
+
COMPLIANCE RULES
|
|
18
|
+
1. Verify Access Level & Prompt: Pay close attention to the EXACT CLI prompt (e.g. "(config)#" vs "(config-vlan)#"). Do NOT run interface commands if you are not in the appropriate mode. Run "enable" and "configure terminal" appropriately before configuration.
|
|
16
19
|
2. Single Tool Call: Generate EXACTLY ONE tool call per response. Wait for the output before proceeding.
|
|
17
20
|
3. Errors: If a command fails or returns error markers, stop and change strategy. Do not repeat failed commands.
|
|
18
|
-
4.
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
4. Intent Adherence: Do NOT make any configuration changes (e.g., no shutdown, ip address) unless explicitly requested by the user's intent. Do not assume or try to fix unrelated issues.
|
|
22
|
+
5. Language: Always output in English.
|
|
23
|
+
6. Anti-Loop/Overthinking: DO NOT overthink or repeat your reasoning. Once you decide on the next command, execute the TOOL CALL immediately. Do not output repetitive thoughts without calling a tool.
|
|
24
|
+
7. Multi-Device Operations: If a task requires changes on multiple nodes (e.g. OSPF, links), you MUST execute commands on all necessary nodes before declaring success. The execute_ios_command tool accepts a 'deviceId' parameter—ensure you specify the correct node from the topology.
|
|
25
|
+
${queryOnly ? '8. READ ONLY MODE: You are answering a question. Only use inspection commands (show, ping, etc). DO NOT enter config mode.\n' : ''}
|
|
26
|
+
HOW TO CALL TOOLS (IMPORTANT)
|
|
21
27
|
You must invoke tools to execute commands or tests. You can do this in three ways:
|
|
22
28
|
1. Native Tool Calling (Preferred).
|
|
23
29
|
2. JSON Code Block Fallback: If you cannot call tools natively, output a JSON code block in your message:
|
|
@@ -30,10 +36,14 @@ You must invoke tools to execute commands or tests. You can do this in three way
|
|
|
30
36
|
<parameter=command>show ip interface brief</parameter> (for execute_ios_command)
|
|
31
37
|
<parameter=destination>10.0.1.1</parameter> (for ping_test)
|
|
32
38
|
|
|
33
|
-
|
|
34
|
-
First, write your thoughts:
|
|
35
|
-
-
|
|
36
|
-
-
|
|
39
|
+
RESPONSE FORMAT
|
|
40
|
+
First, write your thoughts (Scratchpad Summarization & Tree of Thoughts):
|
|
41
|
+
- LAST ACTION: [What command did I just run?]
|
|
42
|
+
- RESULT: [What was the output? Did it succeed?]
|
|
43
|
+
- CURRENT STATE: [What is the EXACT device prompt right now?]
|
|
44
|
+
- ALTERNATIVES: [Generate 2 possible strategies/commands to use next]
|
|
45
|
+
- EVALUATION: [Evaluate which strategy is safer or more likely to succeed]
|
|
46
|
+
- PLAN: [Select the best step. Ensure commands match the CURRENT STATE]
|
|
37
47
|
- ACTION: [Tool to run]
|
|
38
48
|
Then, invoke the tool (or output one of the fallback blocks above).`;
|
|
39
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromptEngine.js","sourceRoot":"","sources":["../../../src/core/agent/PromptEngine.ts"],"names":[],"mappings":";;;AAAA,MAAa,YAAY;IACf,MAAM,CAAC,eAAe,CACvB,SAAiB,EACjB,wBAAgC,+BAA+B,EAC/D,sBAA+B,KAAK,EACpC,eAAuB,8BAA8B;
|
|
1
|
+
{"version":3,"file":"PromptEngine.js","sourceRoot":"","sources":["../../../src/core/agent/PromptEngine.ts"],"names":[],"mappings":";;;AAAA,MAAa,YAAY;IACf,MAAM,CAAC,eAAe,CACvB,SAAiB,EACjB,wBAAgC,+BAA+B,EAC/D,sBAA+B,KAAK,EACpC,eAAuB,8BAA8B,EACrD,aAAqB,qCAAqC,EAC1D,YAAqB,KAAK;QAE1B,MAAM,QAAQ,GAAG,SAAS;YACvB,CAAC,CAAC,4LAA4L;YAC9L,CAAC,CAAC,iNAAiN,CAAC;QAEvN,OAAO,GAAG,QAAQ;;;EAGzB,SAAS;YACC,YAAY;iBACP,qBAAqB,yBAAyB,mBAAmB;UACxE,UAAU;;;;;;;;;;EAUlB,SAAS,CAAC,CAAC,CAAC,8HAA8H,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;oEAuB7E,CAAC;IAClE,CAAC;CACH;AAtDD,oCAsDC"}
|
|
@@ -71,7 +71,7 @@ class NetworkAudit {
|
|
|
71
71
|
}
|
|
72
72
|
static renderAuditReport(before, after) {
|
|
73
73
|
let out = '';
|
|
74
|
-
out += chalk_1.default.bold.cyan('\n┌────────────────────────────────────────────────────────┐\n');
|
|
74
|
+
out += chalk_1.default.bold.cyan('\n\n\n┌────────────────────────────────────────────────────────┐\n');
|
|
75
75
|
out += chalk_1.default.bold.cyan('│') + chalk_1.default.bold.white(' NETWORK CHANGE WINDOW AUDIT REPORT ') + chalk_1.default.bold.cyan('│\n');
|
|
76
76
|
out += chalk_1.default.bold.cyan('├──────────────────────────┬──────────────┬──────────────┤\n');
|
|
77
77
|
out += chalk_1.default.bold.cyan('│') + chalk_1.default.bold.white(' METRIC ') + chalk_1.default.bold.cyan('│') + chalk_1.default.bold.white(' PRE-FLIGHT ') + chalk_1.default.bold.cyan('│') + chalk_1.default.bold.white(' POST-FLIGHT ') + chalk_1.default.bold.cyan('│\n');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NetworkAudit.js","sourceRoot":"","sources":["../../../src/core/guardrails/NetworkAudit.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"NetworkAudit.js","sourceRoot":"","sources":["../../../src/core/guardrails/NetworkAudit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface PluginDefinition {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
script: string;
|
|
5
|
+
parameters: any;
|
|
6
|
+
pluginDir: string;
|
|
7
|
+
}
|
|
8
|
+
export declare class PluginManager {
|
|
9
|
+
private plugins;
|
|
10
|
+
private static instance;
|
|
11
|
+
private constructor();
|
|
12
|
+
static getInstance(): PluginManager;
|
|
13
|
+
private discoverPlugins;
|
|
14
|
+
getDynamicTools(): any[];
|
|
15
|
+
hasPlugin(name: string): boolean;
|
|
16
|
+
executePlugin(name: string, args: any): Promise<string>;
|
|
17
|
+
}
|