Commit graph

356 commits

Author SHA1 Message Date
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
bbbc5a9f25 Show folder breadcrumb hierarchy with one-level back, and drop unused P/N badges.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 17:32:54 +08:00
f1058f5581 Default topology canvas tool to pan instead of select.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 17:15:59 +08:00
fe754229d3 Show full region names on root map instead of CSS ellipsis.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 17:11:09 +08:00
137597cd25 Harden UME/LLDP link ports and canvas styles around UME authority.
Resolve ports from EQ+PTP first, enrich from LLDP when compatible, miss only on valid LLDP evidence, and paint UME solid blue / LLDP dashed / missing red. Also localize new root maps as Root map in English.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 16:33:25 +08:00
77832b271d Align folder permissions: roots deletable, root maps rename-only, world map locked.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 14:48:22 +08:00
1b592490a5 Protect root maps and auto world map; only sub-regions are deletable.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 14:41:06 +08:00
8fa4b2e4ea Allow deleting UME-synced sub-regions like manual regions.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 14:31:09 +08:00
467079d6ca Fix world-map zoom-out starfield, tree search canvas hits, and sidebar scroll.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 14:23:21 +08:00
fdab188cc1 Render world map overview as a screen-space starfield and rename it to 世界地图.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 11:02:23 +08:00
8444d85005 Heal UME dock-to-Fabric gaps: partial jobs, startup apply, and one-click UI.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 10:33:25 +08:00
74672b733f Ensure topo_folder.external_ref exists on API startup.
Alembic stamp-without-upgrade left brownfield DBs missing the column; always apply a small topology schema safety net before bootstrap.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 10:09:02 +08:00
961d523479 Harden topology tree against bad view filters and allow deleting UME World.
Coerce non-dict filter JSON so /tree no longer 500s, surface API failure details, and let users remove the UME World container for local resets.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 09:58:20 +08:00
35a3980dc0 Heal legacy single-map roots into 根/根图 on tree bootstrap.
Old installs hung the canvas on the top-level region; migrate those views under a system root map so tree load and create-root keep working.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 09:31:23 +08:00
990798987b Fix empty topology create-root and cut navigation loading flash.
Keep the hidden system root built-in; speed tree bootstrap, unblock new-root UI, and soften query/Suspense refetch jank.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 09:18:13 +08:00
c4911b6ddc Add Google-Earth style world-map LOD with 1:1 coords and sticky tiles.
Keep visited regions when panning, prefetch detail on search locate with a gold flashing target highlight, and shrink default NE icons so dense UME layouts stay readable.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 03:57:24 +08:00
af331e92ca Fix empty world map by auto-fitting after load and sampling NEs across the extent.
World coords sit far outside the default viewport, so opening the flat map looked blank; also lower minZoom and stride-sample so the overview is visible without a truncate banner.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 02:35:26 +08:00
48b10656d2 Unify manual topology roots with UME World: auto root map, and fix empty UME canvas.
Top-level folders are nav-only with a unique system root map; UI drops custom/extra L2 creates. Batched dock-to-Fabric apply avoids PG lock OOM so World NEs can render, with subtree region counts restored.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 02:22:58 +08:00
edfa3f8756 Move topology display, align, and find into one panel that works in fullscreen.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 01:03:37 +08:00
1ef43fdcd4 Unify UME World as hex nav with conditional flat world map.
Seed a unique L2 World canvas under the UME World container, show the flat map only when nested regions have NEs, pack blocks without overlap, allow drag overrides on the world map while forbidding direct NE adds, and hide the world-map truncation banner.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 00:51:08 +08:00
5d705fa7bb Parse onsite UME TopoNode FDN names when nodeId is missing.
Live TopoNodes use MD=...;ME=<uuid> / SBN=<uuid> without nodeId; extract those uuids as stable PKs and parent refs so reconcile drops old name:hash rows.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 19:33:16 +08:00
cd7d1fc6e7 Wait indefinitely for UME topology dumps while the connection stays up.
Default topology read timeout to 0 (no deadline) and extend stale-running reap to 24h so long TopoNodes/TopologicalLinks pulls are not killed mid-stream.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 19:04:13 +08:00
6622d4ce7a Clarify topology schedule: next run is 24h after last real sync end.
Resume still skips the wait and runs immediately; after that job writes ended_at, the following cycle waits a full interval from that completion (ignoring stale_running cleanup rows).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 18:59:52 +08:00
3088136aae Fix topology resume so it actually interrupts wait and starts a sync.
Stop clearing the wake event at sleep entry, keep force-sync skip until consumed, and make pause loops wait on the resume event so UI start kicks topology immediately.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 18:54:38 +08:00
4bb1df8299 Make topology resume kick sync immediately and keep schedule across restarts.
Wire topology_auto_sync into resume/pause force-sync hints, ignore stale_running cleanup rows when computing the interval clock, and wait a full interval instead of pulling topology on every cold start.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 18:51:44 +08:00
4fcec36514 Fix UME topology sync stuck running and unique-key flush failures.
Use savepoint upserts with payload dedupe, finalize jobs on a fresh sibling session, serialize concurrent topology syncs, and reap stale running rows so the scheduler does not keep spawning orphans.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 18:42:02 +08:00
fe483f51cc Add UME TopoNodes/TopologicalLinks daily sync into local tables.
Phase-1 docks both topology APIs without writing Fabric; expose a 24h topology_auto_sync task and domain=topology manual sync for later LLDP alignment.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 18:17:45 +08:00
db8c77a2e5 Treat UME stream handshake 500 as a lost subscription.
Stop infinite reconnect loops when ZTE returns HTML 500 for a dead stream id and surface re-establish in the UI.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 16:19:14 +08:00
c91d1571a2 Fix more UME split regressions for sync and alarm WSS.
Restore sql_text and alarm-apply imports, slim WSS handshake headers to accessToken only, and treat 404/503 handshakes as lost subscriptions.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 15:59:02 +08:00
4054f55988 Map OClaw bridge connect failures to readable fwd status codes.
Replace cryptic WinError 10061 flashes with i18n hints when the gateway is down or auth fails.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 15:34:43 +08:00
e356dffc86 Fix missing imports after UME router split.
Restore sqlalchemy.func and runtime helpers so alarms_current upsert and pause/resume no longer raise NameError 500s.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 15:29:36 +08:00
6eeaa457b8 Default UME TLS verify off for lab self-signed certs.
Restore ume_verify_tls=false so onsite UME login works without a .env override; production should set NETX_UME_VERIFY_TLS=true or pin a CA.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 15:15:48 +08:00
0ebf137776 Clarify lab UME TLS verify after default flipped to true.
Point .env.example at NETX_UME_VERIFY_TLS=false for self-signed UME and surface the same hint on certificate verify login failures.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 15:11:21 +08:00