SyteLine Dev Hub
The code-layer hub for SyteLine middle-tier development, and the connective tissue between the
sibling extensions across the whole SyteLine lifecycle:
| Layer |
Extension |
| REST / IDO request testing |
MG REST Client (jeking.mg-rest-client) |
| IDO metadata (XML) |
MG IDO Pro Editor (jeking.mg-ido-pro-editor) |
| IDS forms (JSON) |
SL IDS Form Designer (jeking.sl-ids-form-designer) |
| C# ExtensionClasses (code) |
SyteLine Dev Hub (this extension) |
It indexes the C# ExtensionClasses tree and gives a perspective the generic editors can't: the
dependency relationship graph, navigable both ways —
- Look Down — for an interface / class / IDO method, the tree of implementations and
constructor-injected dependencies, resolved through
CompositionRoot.cs and *ModuleRegistrar.cs.
- Look Up — who injects / consumes a given service, including the IDO entry points that reach it.
From any IDO entry point you can jump straight into the sibling tools: Open IDO (IDO Editor),
Test in MG REST Client, and Open Form (IDS Form Designer).
Features
- Dependencies view (activity bar) with an up/down toggle.
- Trace an interface/class from the palette, or the symbol under the cursor in a
.cs file.
- Flat, de-duplicated file list for any trace (copy paths / export a Markdown report).
- Cross-extension jumps to IDO Editor, REST Client, and Form Designer (shown when installed).
- Bundled MCP server exposing the same engine to Kiro (
trace_down, trace_up, trace_ido,
list_files, find_registration, index_status).
Settings
| Setting |
Purpose |
slDevHub.extensionClassesRoots |
ExtensionClasses root folder(s) to index (may live outside the workspace). |
slDevHub.referenceScope |
Resolve references within the current module or across all roots. |
slDevHub.mcpNodePath |
Optional Node path for the MCP server (blank = self-contained launcher). |
MCP
Run “SyteLine: Register MCP Server with Kiro” to add the bundled server to
~/.kiro/settings/mcp.json, then reload Kiro. The server reads SL_HUB_ROOTS and reuses the exact
same engine as the UI, so agents and humans see one source of truth.
Build
npm install
npm run build # esbuild → dist/extension.js + dist/mcp/server.js
npm run typecheck # tsc --noEmit
npm test # node --test on the pure engine
npm run package # vsce package
How it works
A pure, vscode-free engine (src/model/) does a syntax/regex parse of the tree (no compiler):
DI registrations, [IDOExtensionClass] entry points, GetService<T> calls, and constructor
dependencies. The extension wraps it with a tree view and cross-extension commands; the MCP server
wraps the same engine for Kiro. Lambda-factory registrations are resolved by reading a new X( in
the registration statement.