Frontmatter
| id | 8170 |
| title | Implement Neural Link Client Core (Tree & Props) |
| state | Closed |
| labels | enhancementai |
| assignees | tobiu |
| createdAt | Dec 28, 2025, 2:37 PM |
| updatedAt | Dec 28, 2025, 3:01 PM |
| githubUrl | https://github.com/neomjs/neo/issues/8170 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | 8169 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Dec 28, 2025, 3:01 PM |
Implement Neural Link Client Core (Tree & Props)
tobiu added parent issue #8169 on Dec 28, 2025, 2:37 PM
tobiu assigned to @tobiu on Dec 28, 2025, 2:59 PM

tobiu
Dec 28, 2025, 3:00 PM
Input from Gemini 3:
✦ Implementation Complete
I have implemented the core read/write primitives for the Neural Link.
Changes:
OpenAPI Spec (
ai/mcp/server/neural-link/openapi.yaml):
- Added endpoints:
/component/vdom/getand/component/vnode/get.- Updated
get_component_treeschema to accept optionalrootId(defaults to MainView) anddepth(1-based).Server (
ConnectionService.mjs&toolService.mjs):
- Implemented
getVdomTreeandgetVnodeTree.- Mapped new tools to the service.
Client (
src/ai/Client.mjs):
- Implemented
handleRequestdispatching.- Added
getComponentRoot(rootId)helper for intelligent defaulting.- Added
serializeComponentwith depth control anditemstraversal.- Added
safeSerializefor property values to handle Neo instances and circular references.Verification:
- Ran
test_connection_service.mjsto verify server startup and method existence. Passed.Ready for review.
tobiu closed this issue on Dec 28, 2025, 3:01 PM
Implement the core "Read/Write" primitives in
src/ai/Client.mjsto enable runtime inspection.1.
get_component_tree(rootId, depth)rootId(or Viewport if null).depthlimit to prevent massive payloads.{neoInstance: true, id: 'foo', className: 'Neo.bar'}.2.
get_vdom_tree(rootId, depth)component.vdom.3.
get_vnode_tree(rootId, depth)component.vnode(requires fetching from VDom worker or caching).4.
get_component_property(id, property)5.
set_component_property(id, property, value)set()) and standard Class Fields.component[property] = valueto trigger reactivity.