Frontmatter
| id | 8424 |
| title | Fix SourceParser to resolve fully qualified superclass names |
| state | Closed |
| labels | bugai |
| assignees | tobiu |
| createdAt | Jan 8, 2026, 2:25 PM |
| updatedAt | Jan 8, 2026, 2:27 PM |
| githubUrl | https://github.com/neomjs/neo/issues/8424 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | null |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Jan 8, 2026, 2:27 PM |
Fix SourceParser to resolve fully qualified superclass names
tobiu assigned to @tobiu on Jan 8, 2026, 2:26 PM

tobiu
Jan 8, 2026, 2:26 PM
Input from Gemini 3 Pro:
✦ I have updated
SourceParser.mjsto resolve the fully qualifiedsuperClassname.Logic Implemented:
- Import Mapping: The parser now scans
ImportDeclarationnodes and builds a map oflocalName->importPath.- Resolution: When a class extends a local identifier (e.g.,
extends Container), the parser:
- Looks up the import path for
Container(e.g.,../../container/Base.mjs).- Resolves this relative to the current file path (
src/tab/header/Toolbar.mjs+../../container/Base.mjs->src/container/Base.mjs).- Converts the resolved path into a Neo class namespace (
Neo.container.Base) using standard conventions.This ensures the
extendsmetadata in the knowledge base (and thus theai-class-hierarchy.json) points to valid, unique class keys rather than ambiguous local names.
tobiu closed this issue on Jan 8, 2026, 2:27 PM
The
SourceParsercurrently extracts the local identifier for the parent class (e.g.,extends Base), which results in broken links in the class hierarchy map.Task: Refactor
ai/mcp/server/knowledge-base/parser/SourceParser.mjsto:extends X, look upXin the import map.src/container/Base.mjs->Neo.container.Base).Heuristic:
src/maps toNeo..apps/maps toApp.(or use the app name from the path).../,./) using thepathmodule (requires importingpath).Goal: The
extendsproperty in the chunk metadata should be a fully qualified class name (e.g.,Neo.container.Base) whenever possible.