ciscollm-cli 1.0.6 โ†’ 1.0.7

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 (2) hide show
  1. package/README.md +0 -127
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -206,130 +206,3 @@ Validate features including the Command Firewall, Transaction Manager, and Error
206
206
  npm run test
207
207
  ```
208
208
 
209
- ---
210
-
211
- ## ๐Ÿงช Agent Test Results
212
-
213
- All tests were executed using **LM Studio (qwen3.5-4b)** in `--protocol mock --non-interactive` mode against a simulated `Switch1` device.
214
-
215
- ---
216
-
217
- ### Test 1 โ€” Basic Interface & Static Route Configuration โœ… PASSED
218
-
219
- **Goal:** Configure `GigabitEthernet0/1` with IP `10.0.0.1/24`, add static route to `192.168.10.0/24` via `10.0.0.2`, and verify connectivity.
220
-
221
- ```bash
222
- npx ts-node src/index.ts run --protocol mock --provider local --local-type lmstudio \
223
- --model "qwen3.5-4b" \
224
- --goal "Configure GigabitEthernet0/1 with IP 10.0.0.1/24, add static route 192.168.10.0/24 via 10.0.0.2, ping 192.168.10.5" \
225
- --non-interactive
226
- ```
227
-
228
- | Step | Command | Result | State Diff |
229
- |------|---------|--------|------------|
230
- | 1 | `configure terminal` | โœ… | Mode entered |
231
- | 2 | `interface GigabitEthernet0/1` | โœ… | Interface mode |
232
- | 3 | `description Primary` | โœ… | description: unassigned โ†’ "Primary" |
233
- | 4 | `ip address 10.0.0.1 255.255.255.0` | โœ… | IP + Connected route added |
234
- | 5 | `exit` | โœ… | Returned to Global Config |
235
- | 6 | `ip route 192.168.10.0 255.255.255.0 10.0.0.2` | โœ… | Static route added |
236
- | 7 | `ping 192.168.10.5` | โœ… | **100% success (5/5)** |
237
-
238
- **Outcome:** All 8 steps completed. Ping 100% success rate confirmed.
239
-
240
- ---
241
-
242
- ### Test 2 โ€” Rollback on Invalid Interface โœ… PASSED
243
-
244
- **Goal:** Trigger automated rollback by trying to configure non-existent `GigabitEthernet0/777`.
245
-
246
- | Behaviour | Result |
247
- |-----------|--------|
248
- | Command `interface GigabitEthernet0/777` issued | โŒ `InvalidInput` error returned |
249
- | `TransactionManager` triggered rollback | โœ… Backup restore completed |
250
- | CLI submode context restored after rollback | โœ… Returned to correct mode |
251
- | Agent continued to next step | โœ… No infinite retry loop |
252
-
253
- ---
254
-
255
- ### Test 3 โ€” Enterprise Multi-Step: VLAN + Interface + Route โœ… PASSED (12/13 steps)
256
-
257
- **Goal:** VLAN 100 (Engineering) + VLAN 200 (Finance), configure Gi0/1, trigger rollback on Gi0/999, add static route, verify with ping and `show vlan brief`.
258
-
259
- ```bash
260
- npx ts-node src/index.ts run --protocol mock --provider local --local-type lmstudio \
261
- --model "qwen3.5-4b" \
262
- --goal "...17-step enterprise configuration..." \
263
- --non-interactive
264
- ```
265
-
266
- | Step | Command | Result | State Diff |
267
- |------|---------|--------|------------|
268
- | 1 | `configure terminal` | โœ… | Global Config mode |
269
- | 2 | `vlan 100` | โœ… | **VLANs Added (+): 100** |
270
- | 3 | `name Engineering` | โœ… | Name stored |
271
- | 4 | `exit` | โœ… | Back to Global Config |
272
- | 5 | `vlan 200` | โœ… | **VLANs Added (+): 200** |
273
- | 6 | `name Finance` | โœ… | Name stored |
274
- | 7 | `exit` | โœ… | Back to Global Config |
275
- | 8 | `interface GigabitEthernet0/1` | โœ… | Interface mode |
276
- | 9 | `description Uplink` | โœ… | description: unassigned โ†’ "Uplink" |
277
- | 10 | `ip address 172.16.0.1 255.255.255.0` | โœ… | IP + Connected route added |
278
- | 11 | `no shutdown` | โœ… | shutdown: YES โ†’ NO |
279
- | 12 | `exit` | โœ… | Back to Global Config |
280
- | 13 | `interface GigabitEthernet0/999` | โš ๏ธ | Not executed โ€” agent exited early |
281
- | 14โ€“17 | route + ping + show vlan | โš ๏ธ | Skipped due to early exit |
282
-
283
- **Issues found & fixed:**
284
- - Agent stopped early (after step 12) before `show vlan brief` โ€” root cause: missing **Goal Completion Discipline** rule in system prompt.
285
- - Fallback ping used `127.0.0.1` instead of actual route target โ€” root cause: `resolveValidationDestination` only checked interface IPs, not static routes.
286
-
287
- **Fixes applied (`2026-05-28`):**
288
- - `PromptEngine.ts` โ€” Added **Rule 8 (Goal Completion Discipline)**: agent must not stop until ALL numbered steps are done.
289
- - `AgentLoop.ts` โ€” `resolveValidationDestination` now checks `show ip route` (static routes) first, then falls back to interface IPs.
290
- - `AgentLoop.ts` โ€” Nudge message now injects the resolved destination IP instead of hardcoding `127.0.0.1`.
291
-
292
- ---
293
-
294
- ### Test 4 โ€” Enterprise Multi-Step (Post-Fix Re-Run) โœ… PASSED (15/15 steps + MAX_STEPS hit)
295
-
296
- Re-running Test 3 with **Rule 8 (Goal Completion Discipline)** and improved `resolveValidationDestination` applied.
297
-
298
- | Step | Command | Result | State Diff |
299
- |------|---------|--------|------------|
300
- | 1 | `configure terminal` | โœ… | Global Config mode |
301
- | 2 | `vlan 100` | โœ… | **VLANs Added (+): 100** |
302
- | 3 | `name Engineering` | โœ… | Name stored |
303
- | 4 | `exit` | โœ… | Back to Global Config |
304
- | 5 | `vlan 200` | โœ… | **VLANs Added (+): 200** |
305
- | 6 | `name Finance` | โœ… | Name stored |
306
- | 7 | `exit` | โœ… | Back to Global Config |
307
- | 8 | `interface GigabitEthernet0/1` | โœ… | Interface mode |
308
- | 9 | `description Uplink` | โœ… | description: unassigned โ†’ "Uplink" |
309
- | 10 | `ip address 172.16.0.1 255.255.255.0` | โœ… | IP + Connected route added |
310
- | 11 | `no shutdown` | โœ… | shutdown: YES โ†’ NO |
311
- | 12 | `exit` | โœ… | Back to Global Config |
312
- | 13 | `interface GigabitEthernet0/999` | โœ… | `BadInterfaceParameter` โ†’ **Rollback triggered + context restored** |
313
- | 14 | `ip route 10.50.0.0 255.255.255.0 172.16.0.254` | โœ… | **Routes Added (+): 10.50.0.0/24 via 172.16.0.254** |
314
- | 15 | `end` | โœ… | Returned to Privileged EXEC |
315
- | 16 | `ping 10.50.0.1` | โš ๏ธ | Not reached โ€” `MAX_STEPS = 15` limit hit |
316
- | 17 | `show vlan brief` | โš ๏ธ | Not reached โ€” `MAX_STEPS = 15` limit hit |
317
-
318
- **Progress vs Test 3:** Steps 13โ€“15 now execute correctly (was stopping at step 12). Rollback + context restore confirmed working. Static route `10.50.0.0/24` successfully added after rollback.
319
-
320
- **Remaining issue:** `MAX_STEPS = 15` cap prevented steps 16โ€“17 from running.
321
- **Fix applied:** `MAX_STEPS` increased to `20` in `AgentLoop.ts`.
322
-
323
-
324
- ---
325
-
326
- ### GPU Metrics (Live โ€” during inference)
327
-
328
- | Metric | Observed Range |
329
- |--------|---------------|
330
- | GPU Utilization | 58% โ€“ 85% |
331
- | VRAM Used | 5019 โ€“ 5094 MB / 6144 MB |
332
- | Temperature | 77ยฐC โ€“ 84ยฐC |
333
- | Power Draw | 55 W โ€“ 120 W |
334
-
335
- GPU metrics are displayed in real-time in the thinking spinner via `nvidia-smi` polling every 1.5 seconds.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ciscollm-cli",
3
- "version": "1.0.6",
3
+ "version": "1.0.7",
4
4
  "description": "Cisco IOS automation agent CLI with mock simulation, guardrails, and LLM tool-calling support.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {