Hide standalone IF VRF from the catalog and point ARP enrich at config_interface so one CLI maps to one check item.
Co-authored-by: Cursor <cursoragent@cursor.com>
Evaluate keeps match keys for normalize/map pairing while diffs, reds, and the board show collected ports plus show-command provenance; add monitor-context and command-raw read APIs with biz-monitor:read scope.
Co-authored-by: Cursor <cursoragent@cursor.com>
BGP/ISIS (and any other metric) can share a metric_id with distinct sheet_id + row_filters; drop conflicting bgp state_or_pfx and keep state/pfx_rcd.
Co-authored-by: Cursor <cursoragent@cursor.com>
Mapped interfaces are the expect set and must appear after cutover; unmapped same-name down/up is anomaly. Success presets no longer treat bare unchanged as green.
Co-authored-by: Cursor <cursoragent@cursor.com>
Move biz monitor/compare/migration under Cutover compare, split compare templates into their own page, and add monitor-template CRUD that overlays compare templates.
Co-authored-by: Cursor <cursoragent@cursor.com>
Protect baselines and compare/migration-referenced batches from purge or delete, and let operators mark baselines and clean high-freq data manually.
Co-authored-by: Cursor <cursoragent@cursor.com>
Treat missing+mismatch as fail, match as success, and added as a special filter; show three right-aligned sheet badges.
Co-authored-by: Cursor <cursoragent@cursor.com>
Fill started_at from batch lists, show compact times, and right-align color-only -/+~/ = counts per sheet.
Co-authored-by: Cursor <cursoragent@cursor.com>
Drop the batch-run label, resolve NE from job tasks, and slim left-nav badges to pass or non-zero fail counts only.
Co-authored-by: Cursor <cursoragent@cursor.com>
Enrich run detail with before/after NE labels, and keep present-side values readable for added/removed rows instead of striking them out.
Co-authored-by: Cursor <cursoragent@cursor.com>
Collectors apply RULE_KEYS (or index stems) into fsm_tables before normalize; parsers prefer FSM or hand-parse.
Co-authored-by: Cursor <cursoragent@cursor.com>
Introduce ParseProfile-based business state tasks that reuse LLDP parsing for snapshot batches (separate from topology Fabric writes), with scheduler, export, and a Phase1 UI under network tasks.
Co-authored-by: Cursor <cursoragent@cursor.com>
Key alerts now deliver only via the DSH hub; Modal Body no longer flex-shrinks the rules rows to empty.
Co-authored-by: Cursor <cursoragent@cursor.com>
Checkpoint before workbench facade redesign: list defaults, API key quota, toast portal, topology canvas editor toolbar with More menu, and trusted-proxy client IP for sessions.
Co-authored-by: Cursor <cursoragent@cursor.com>
Track per-connection metadata on the hub and surface it in the UME key-alert UI so operators can see which Netx Ops clients are subscribed.
Co-authored-by: Cursor <cursoragent@cursor.com>
netx hosts /v1/integrations/dsh-alarm/ws; matched key alerts fan out to dialed-in DSH subscribers while the optional oclaw bridge remains.
Co-authored-by: Cursor <cursoragent@cursor.com>
Drain leftover prompts before Netmiko send_command, and make stop/start tolerate orphan workers and locked log files.
Co-authored-by: Cursor <cursoragent@cursor.com>
Fix bare Enter re-audits, Tab expansion lag, and history mid-line edits by preferring the xterm/device row at Enter and rejecting empty-prompt snapshots.
Co-authored-by: Cursor <cursoragent@cursor.com>
Audit every completed stdin line per flush, keep a list of audit_line hints from the router, restore prompt enrichment and stdout fallback, and record actual bytes when hints disagree with what was sent.
Co-authored-by: Cursor <cursoragent@cursor.com>
Only audit interactive commands from frontend audit_line with a CLI prompt prefix; skip prompt-sync Enter and device error echoes; join wrapped xterm rows for long commands.
Co-authored-by: Cursor <cursoragent@cursor.com>
xterm and keydown can both emit carriage return for one keypress; skip duplicate Enter frames on the client and collapse identical audits within 450ms on the server.
Co-authored-by: Cursor <cursoragent@cursor.com>
Do not reuse the previous command when the operator presses Enter on a blank prompt; validate prompt-only rows on both frontend and backend.
Co-authored-by: Cursor <cursoragent@cursor.com>
PTY stdout/stdin carry backspace and edit noise during typing; record only the final row the operator sees when pressing Enter.
Co-authored-by: Cursor <cursoragent@cursor.com>
ZTE tab redraws the input line via carriage return; parse the last prompt line from PTY stdout on Enter instead of stdin keystrokes. Also remove remaining ?? in AuditPage.
Co-authored-by: Cursor <cursoragent@cursor.com>
On Enter, send audit_line from the terminal row so tab completion and edits match what the operator executed; keep the device prompt prefix in audit logs.
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep one 401 audit per IP+path window, and hide historical unauthorized noise from the default business view.
Co-authored-by: Cursor <cursoragent@cursor.com>