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.csand*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
.csfile. - 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).
- Validate IDO Methods — reconcile a C# entry class's
[IDOMethod]surface against the IDO's metadata methods (via the IDO Editor) and flag code-only / dangling / kind mismatches. - List VB Entry Points — static scan for VB
<IDOExtensionClass>classes (not covered by the C#-driven tree), reported by module with IDO and[IDOMethod]counts. - Bundled MCP server exposing the same engine to Kiro:
trace_down,trace_up,trace_ido,list_files,find_registration,index_status, pluslist_entry_points,entry_point_for_ido,di_health,list_methods,list_types, and the Forms↔IDO toolsforms_using_ido/idos_for_form/trace_backend_for_form.
Settings
| Setting | Purpose |
|---|---|
slDevHub.extensionClassesRoots |
ExtensionClasses root folder(s) to index (may live outside the workspace). |
slDevHub.formRoots |
Folder(s) to scan for IDS/IV2 forms (Forms↔IDO + MCP forms tools); blank = scan the open workspace, plus the folder of any form you point a command at. |
slDevHub.referenceScope |
Resolve references within the current module or across all roots. |
slDevHub.reportFormat |
Output format for generated reports: markdown (default) opens a Markdown document, html opens a rendered HTML webview. |
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.