Commit graph

438 commits

Author SHA1 Message Date
c181158209 Drop HTTP polling noise from operation audit by default.
Persist only business events and mutating/failed HTTP calls, and default the audit UI to a business view with an explicit HTTP filter.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 21:41:05 +08:00
8915455b52 Record WebCRT device login/commands and NE exec in operation audit.
Make session lifecycle and typed CLI lines searchable in audit_log with password redaction, and surface summaries plus device filters in the ops UI.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 21:36:44 +08:00
497a5e048e Add topology situational overlays and harden live sync.
Show connect/alarm/level on the canvas with display toggles, refresh overlay fields even on dirty edits, fix connect-test dots and create-place messaging, and deep-link node alarms into the network alarms page.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 21:13:15 +08:00
56569e49d1 Add topology NE create/connect flows and trim connect-test logs.
Bring full managed-NE create onto the canvas (keep placeholders), add single/multi connect test and multi discover links, split topology/managedNe dialogs into modules, and shorten redundant connectivity failure details.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 20:37:42 +08:00
f8d4a396f1 Fix ZTE hop false auth rejects by treating CLI prompt as success.
ZTE post-login banners can line-wrap login-failure stats and were misclassified before the target prompt was recognized.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-31 10:46:16 +08:00
fbf73cbaaf Disable target paging after hop login and keep CLI echo on timeouts.
LLDP discover and config collect were timing out on --More--; send vendor paging-off after nested/bastion auth, and attach session-log tails so failures show where the CLI stuck.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-29 12:30:33 +08:00
3adf8d8b75 Prefer vendor label for LLDP command when it conflicts with device_type.
Huawei NEs still tagged zte_zxros were getting show lldp neighbor brief and timing out; use display lldp neighbor and align UME inventory vendor before the jump.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-29 00:24:06 +08:00
b36174bfa4 Add explicit Huawei hop system-view option and startup column safety-net.
Some hops only accept stelnet in system-view; make it a saved yes/no setting (default off) instead of auto-retry, and always ALTER the new column on API boot when Alembic skips legacy DDL.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-28 23:58:05 +08:00
0a550abcb0 Fix Huawei WebCRT hop login echo doubling and safer Change-now handling.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-28 23:34:15 +08:00
cacd8c7b75 Keep WebCRT login failures in-terminal CRT-style and skip duplicate bootstrap replay.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-28 22:33:19 +08:00
6aedd2c522 Fix WebCRT connect crash from invalid Netmiko session_log wrapper.
Use a BytesIO subclass for live connect echo so Netmiko accepts the log object again.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-28 21:55:20 +08:00
6ed08e24de Stream WebCRT login live and unblock Huawei hop interactive connect.
Skip Huawei special_login_handler under interactive WebCRT, harden stelnet host-key auth, and echo hop/login progress into the terminal during connect.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-28 21:41:36 +08:00
hansjone
6901a7c019 Fix Huawei stelnet hop auth hanging on host-key [Y/N] prompts.
Answer Continue/Save-key prompts during CLI-hop secondary auth so WebCRT terminal login no longer times out after connectivity passes.
2026-08-28 21:13:29 +08:00
91a2d1ad6b Enrich UME alarm MCP tool descriptions with field keyword guidance.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-12 22:36:57 +08:00
23ca7bb980 Document async execManagedNe batch option for oclaw job polling.
Clarify large-batch background behavior and add async flag to the tool schema.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-12 22:17:16 +08:00
0eb579609b Document per-NE targets batch for mixed-vendor execManagedNe.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-12 21:27:30 +08:00
329ae8501f Ensure ne_collection_job.trigger_mode exists on existing DBs.
Missing column broke ops task overview and collection queries when Alembic skipped legacy DDL; add always-on safety net plus migration.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-12 16:58:52 +08:00
3f18702edc Drop legacy NetX wording from collect commands hint.
Keep the practical usage note without the old-format parenthetical.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-12 16:48:58 +08:00
984585c384 Fix collect policy commands field overflowing the viewport.
Use the stacked form-grid layout instead of the nowrap policy-field flex row so the long label/hint no longer pushes the textarea aside.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-12 16:44:55 +08:00
b81e5869a6 Ship gated eye polish, fabric levels, and collection UI refresh.
Topology MCP adds pull/compact/bundle/suggest-hubs with a no-template skill path; API gains fabric level and NE collection policy; web list pages get paging and denser collect/network workflows.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-12 16:13:05 +08:00
b1aee86701 Split topology page into modules and hooks; add SVG/XML export.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 22:00:38 +08:00
54ca265430 Retry ZTE prompt wait with RETURN after login banner timeout.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 19:22:56 +08:00
b4514c13aa Support bastion hop hosts as FQDN and pasted OpenSSH destinations.
Use placeholder examples (example.com / RFC5737) in docs and tests.
EOF

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 17:36:45 +08:00
35e7bb4667 Preserve WebCRT connect errors instead of masking them as websocket 4502.
EOF

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 16:59:44 +08:00
b6a579ec02 Skip CLI startup when device credentials are incomplete.
Reject non-interactive CLI work early across exec, LLDP, config sync, collection, traffic, and connect-test flows so tasks record a clear reason instead of launching a doomed session.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 15:11:59 +08:00
dcdf4147a6 Add LLDP collect retry for failed and weak-evidence NEs.
Mirror config-sync retry_failed so operators can re-collect hard failures and empty/stub LLDP results without re-running the full scope.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 11:25:57 +08:00
527472976a Fix topology sync failing when ume_topo_link ifname columns are missing.
Ensure startup safety-net adds a_ifname/z_ifname on brownfield DBs, and normalize ADD COLUMN IF NOT EXISTS for SQLite tests.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 09:34:07 +08:00
9ba4d051dc Add concurrent multi-NE CLI exec batch for field sweeps.
execManagedNe can take ne_ids/ume_ne_ids/targets and POST /v1/managed-ne/exec-batch so many show commands run in parallel instead of serial one-NE MCP loops.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 23:34:19 +08:00
8a07baa018 Restore getUmeNe required-id unit test coverage.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 22:42:46 +08:00
dd008c1919 Clarify getManagedNe vs UME ids and humanize insufficient_scope errors.
Agents often passed UME UUIDs into getManagedNe and hit SQL without scope; aliases, richer hints, and scope error text reduce these dead ends.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 22:42:38 +08:00
84f16fcb3c Default execManagedNe read_timeout_sec to 60 seconds.
Align MCP CLI calls with the API default so slow show commands are less likely to fail before the device responds.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 22:40:19 +08:00
9457ac9353 Accept group_by on aggregateUmeAlarms and clarify CLI tool guidance.
Agents frequently passed group_by to the fixed aggregate tool; route those calls to raw aggregation and discourage list/exec retry loops.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 22:32:45 +08:00
78d174232d Improve UME ops triage APIs and slim fabric path payloads.
Add severity/time filters, exclude missing hosts from aggregates, and default topology paths to compact summary fields for MCP-friendly alarm triage.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 22:17:45 +08:00
753740d64e Speed up fabric path BFS with lazy edge loads and score orbit total by verdict weights.
Only expand adjacency for visited nodes, and rank objective=total with crossing 0.18 + clearance 0.08 (fallback to crossings when clearance is skipped).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 21:35:16 +08:00
e4a135ec16 Fix fabric path search, read scope, orbit total ranking, and edge menu clamp.
Prefer BFS shortest paths, allow ne:read on path find, honor objective=total clearance trades, and keep context menus on-screen without a11y clock spam.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 21:31:50 +08:00
298859e608 add topology tool 2026-08-10 20:29:05 +08:00
99a262e348 Update topology tool skill 2026-08-10 16:44:09 +08:00
37dd43923f Restore workbench clock, offline world map, and keep edge menus on-screen.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 00:39:06 +08:00
99d180c501 Drop workbench card blurbs and let API key secrets dismiss after copy.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 00:22:31 +08:00
52cd4d1298 Polish topology chrome for denser dark UI and canvas-aware overlays.
Flatten nested toolbar boxes, add a resizable sidebar and selective off-map NE add, and make fullscreen floats/minimap follow canvas background.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 00:02:44 +08:00
75d03f5f9b Raise physical canvas capacity and keep region==canvas rules consistent.
Pass view kind into membership so metro maps are not capped at core=80, add region-scoped neighbor projection, and align UI/tests with one physical canvas per region.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-09 23:23:09 +08:00
a9a45d39d4 Ignore local MCP/layout probe scripts and staging dumps.
Keep one-off _btm/_knd probes and scripts/_* out of git status.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-09 23:21:54 +08:00
79f929de0c Converge netx-topology MCP to dual-unit drain + orbit/polish mainline.
Trim public tools to 14, expose only kept layout actions/recipes, merge Fabric queries, drop createTopologyView/listTopologyViews, and align skill/docs with the live catalog.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-09 23:18:53 +08:00
9bcb8ee0e3 Improve frontend load performance and fix UME/login UX.
Defer topology xyflow and WebCRT xterm until needed, calm idle polling, bake login earth brightness, and let AI alert rules scroll as one natural panel.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 22:54:42 +08:00
a0170907e4 Show full NE canvas labels and use dark green for selected links.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 22:03:56 +08:00
4b7d13d62b Unify directory NE badges as distinct fabric ids across membership and home.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 18:16:21 +08:00
3d86bc7594 Count manual canvas NE badges from view membership, not only fabric region ownership.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 18:01:53 +08:00
1373eff4ab Stop applying UME inventory totals to empty manual root maps.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 17:57:33 +08:00
104de449cf Count directory NE badges from fabric inventory, with shared whole-network totals.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 17:53:53 +08:00
617ab469ae Restore NE count badges as real subtree totals instead of map-count P labels.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 17:40:39 +08:00