Frontmatter
| id | 8171 |
| title | Implement Neural Link Window Topology Discovery |
| state | Closed |
| labels | enhancementai |
| assignees | tobiu |
| createdAt | Dec 28, 2025, 2:37 PM |
| updatedAt | Dec 28, 2025, 4:31 PM |
| githubUrl | https://github.com/neomjs/neo/issues/8171 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | 8169 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Dec 28, 2025, 4:31 PM |
Implement Neural Link Window Topology Discovery
tobiu added parent issue #8169 on Dec 28, 2025, 2:37 PM

tobiu
Dec 28, 2025, 4:29 PM
Input from Gemini 3:
✦ Implementation Complete
I have implemented the Window Topology discovery mechanism, leveraging the
Neo.manager.Window"God View" in the App Worker.Changes:
- Server (
ConnectionService.mjs):
- Implemented
getWindowTopology.- Logic: Iterates all connected App Worker sessions, calls
get_window_infoon each, and aggregates the results.- Deduplication: Filters results by
window.id(Application Window ID) to ensure a clean list even if multiple workers report the same window (e.g. SharedWorkers).- Client (
src/ai/Client.mjs):
- Implemented
get_window_infohandler.- Logic: Queries
Neo.manager.Window.itemsto retrieve the geometric state (innerRect,outerRect,chrome) of all windows managed by that worker.- OpenAPI & Tools:
- Added
/window/topologyendpoint with full schema (includingchromemetrics).- Mapped
get_window_topologyintoolService.mjs.Result: The AI Agent can now discover the full multi-window layout of the application, including popup windows and their exact screen coordinates, which is critical for debugging drag-and-drop.
Ready for review.
tobiu assigned to @tobiu on Dec 28, 2025, 4:30 PM
tobiu closed this issue on Dec 28, 2025, 4:31 PM
Create a tool to discover and describe the multi-window topology of the running application.
Tool:
get_window_topology()windowId(The Neo.mjs internal ID)appName(The running App name)url(Full URL including query parameters)screenPosition({top, left, width, height} - vital for debugging drag offsets)role(Main vs Popup - inferred from URL or app state)