Run compares in the background with progress, persist fails first, and store success as sampled key+row_id hydrated from source so million-row sheets no longer block the API.
Co-authored-by: Cursor <cursoragent@cursor.com>
Ship installable releases via zip/Inno Setup with optional bundled Postgres, API-hosted SPA, manual update path, and CI workflow for future tag builds.
Co-authored-by: Cursor <cursoragent@cursor.com>
Expose recommended_mode/hints on getManagedNe, support background exec-jobs with getNeExecJob in MCP, and allow linux_shell on MikroTik as well as Linux.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stop inheriting `(default for vrf)` onto RD-only blocks, and normalize CE vrf commands so `(afi,vrf)` sheet splits no longer collide with global VPNx tables.
Co-authored-by: Cursor <cursoragent@cursor.com>
Create tasks via pick-NE or import log; re-import appends batches like collects, without inventory NE or SSH.
Co-authored-by: Cursor <cursoragent@cursor.com>
List failing profile/command/reason in batch.message (including unmatched and expand_all), and require whitespace/EOL after HH:MM:SS so prefixes like 56:16:10::/64 are parsed.
Co-authored-by: Cursor <cursoragent@cursor.com>
Write JSONL iteratively, flush via chunked PG execute_values, skip mega raw in DB, and yield bgp_route rows instead of building a full list.
Co-authored-by: Cursor <cursoragent@cursor.com>
Skip TextFSM for neighbor route tables (status vs plain, From, RD+VRF, heavy wraps); parse via callback and cover with live RR/VRF fixtures.
Co-authored-by: Cursor <cursoragent@cursor.com>
RR vpnv6 wrap lines with next-hop+metrics were collapsing ECMP legs; store raw_line_count/declared_total before DB truncate so collect stats stay accurate.
Co-authored-by: Cursor <cursoragent@cursor.com>
Decouple heavy CLI parse via ParsePool, keep ECMP/multi-RD keys, and expose per-command CLI lines vs DB rows with raw.txt export.
Co-authored-by: Cursor <cursoragent@cursor.com>
IPv4/IPv6 neighbor in/out keep AF peers and peer-group expand, while top-level global activate is routed to ipv4 or ipv6 discover by address literal.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stamp local_as on peer/route/evpn results and discover (local_as, neighbor/vrf) pairs from config_bgp_peer so each router bgp process is collected separately.
Co-authored-by: Cursor <cursoragent@cursor.com>
Avoid idle Session disconnect after heavy timeout, and separate SSH collect from batched Postgres persist via disk spool.
Co-authored-by: Cursor <cursoragent@cursor.com>
Clear stuck collect_running without re-dispatching; finalize in-flight commands as failed with interrupted_by_restart.
Co-authored-by: Cursor <cursoragent@cursor.com>
Catalog previously only had VPNv4/VPNv6 route items; global ipv4/ipv6 discover requires empty vrf so VRF CE peers are not mixed in.
Co-authored-by: Cursor <cursoragent@cursor.com>
Apply the same global peer-group member expand to address-family ipv4; keep VRF direct-only. Cover IPv4 wrapped neighbor routes.
Co-authored-by: Cursor <cursoragent@cursor.com>
Batch sheets are keyed by metric_id, so all AF summaries land in one tab; stop inheriting the first profile title (VPNv4).
Co-authored-by: Cursor <cursoragent@cursor.com>
Shared aux CLIs (e.g. running-config bgp) now repeat per monitoring section; the trailing unique list still collapses duplicates.
Co-authored-by: Cursor <cursoragent@cursor.com>
Match live collect: include discover-backed aux CLIs in plan/export (and unbound sections); primary-only via include_aux=false.
Co-authored-by: Cursor <cursoragent@cursor.com>
Overwrite explicit aux from discover_select at load time; join VRF CE on vrf,neighbor and global neighbors on afi,neighbor to avoid cross-AF collisions.
Co-authored-by: Cursor <cursoragent@cursor.com>
Discover and aux both use zte.config_bgp_peer; enrich remote_as/activate/route-maps from intent. Guard with tests so aux templates cannot introduce extra placeholders.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add an Aux column for each monitor item. Drop ip_route/ipv6_route as summary enrich aux so FIB stays a standalone collect profile. Export defaults to primary commands only.
Co-authored-by: Cursor <cursoragent@cursor.com>
When a monitoring item has no concrete CLI, export its command_template commented with # instead of omitting it.
Co-authored-by: Cursor <cursoragent@cursor.com>
Plan enabled monitoring items into concrete CLIs (with aux) and download as txt from the task detail modal.
Co-authored-by: Cursor <cursoragent@cursor.com>
Skip Dest/Network headers when Total routes is 0; capture direction from match groups; expose workbook compare/data/sheet stats and prefer batch aliases in compare/cutover pickers.
Co-authored-by: Cursor <cursoragent@cursor.com>
Filter peers by AFI (and VRF pairs for CE), support zip/pair bindings in discover UI, and tag FIB rows with address_families.
Co-authored-by: Cursor <cursoragent@cursor.com>
Drop default-all-VRF mode so collects must bind VRFs manually; discover starts with none selected and select-all toggles to deselect.
Co-authored-by: Cursor <cursoragent@cursor.com>
Wire config_vrf plus ipv4/ipv6 forwarding as aux for VPN VRF summaries, and allow unbound items to expand all AF-filtered VRFs at collect time.
Co-authored-by: Cursor <cursoragent@cursor.com>
Plain MTU alone missed sibling values in filtered show interface output; also clear Filldown between interfaces so optional IPv6 MTU does not leak.
Co-authored-by: Cursor <cursoragent@cursor.com>
Split interface detail/route-class collects from the light lane so they no longer block other checks, and scope Collect Now busy state per task.
Co-authored-by: Cursor <cursoragent@cursor.com>
Remap legacy if_intf items, skip duplicate CLI+metric work, hide aux command duplicates in the workbook, use profile titles for sheet tabs, sticky table headers, and let scheduled tasks trigger collect-now when idle.
Co-authored-by: Cursor <cursoragent@cursor.com>
Load batch summaries without metric payloads, fetch sheet rows on demand, and show collect commands with a raw-log viewer.
Co-authored-by: Cursor <cursoragent@cursor.com>
Drop the route-summary profiles/parser/persist path; keep VRF list discover for bindings and strip it from default cutover templates.
Co-authored-by: Cursor <cursoragent@cursor.com>
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>