Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>SL IDS Form DesignerNew to Visual Studio Code? Get it now.
SL IDS Form Designer

SL IDS Form Designer

Jeking

|
1 install
| (0) | Free
Visual form builder for SyteLine IDS forms (*.ids.json, *.iv2.json): layout tree, preview canvas, properties, events, variables and script.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

SL IDS Form Designer

A VS Code custom editor that opens SyteLine IDS form JSON files (*.ids.json) in a visual designer instead of raw text.

Features

  • Custom editor on **/*.ids.json — opens forms visually, with an "Open as JSON" button to fall back to text.
  • Form tab — edit form metadata (name, caption, template, primary IDO, datasource, initial command, filter form spec) and toggle primary_standardoperations.
  • Layout tab with three views — Tree, Preview, and Split:
    • Container tree reassembled from the flat layout.notebooks / sections / components arrays (containment is by container name reference). Grid columns nest under their grid; template panes (##…) and no-container items collapse into a single (root).
    • Add / duplicate / delete on every node; a toolbar to add components (any of 35 types), groups/sections, and notebooks.
    • Drag-drop to reparent (onto a container) or reorder (onto a sibling).
    • Visual preview canvas rendering containers as boxes and components on a CSS grid by position.row/column; add per box, delete per cell, and drag-drop in/out of containers.
    • Properties panel for the selected component / section / notebook, including component_class { name, parameters }, enabled_when / visible_when / required_when, and component events.
  • Events tab — searchable, inline-editable table with add/delete.
  • Variables tab — searchable, inline-editable table with add/delete.
  • Script tab — read-only view of the embedded form_script.
  • Validation — dangling container references, duplicate names, empty Property bindings, unknown component types, and events without a response are surfaced in an issues panel (click to navigate) and a footer badge.

Every edit mutates the parsed JSON and re-serializes with the exact SyteLine convention — JSON.stringify(obj, null, 2) with CRLF, no BOM, no trailing newline — so diffs stay clean. Verified byte-for-byte against real forms up to 2.1 MB / 1,724 components.

Performance

The webview skips a full rebuild when a state push changes nothing visible (a structural render signature gates re-renders), builds the container tree once per render, and preserves scroll positions. On a 1,724-component form: tree build ≈ 0.6 ms, signature check ≈ 0.6 ms.

Architecture

Area Files
JSON round-trip src/model/idsJson.ts
Model + container tree src/model/idsFormModel.ts
Enums (mined from 2,466 forms) src/model/enums.ts
Edit operations + factory src/model/editOps.ts, src/model/itemFactory.ts
Validation src/model/validate.ts
Custom editor host src/editor/formEditorProvider.ts
Webview shell + state src/webview/main.ts, appContext.ts, signature.ts
Views src/webview/views/{formTab,layoutTab,tree,preview,props,eventsTab,variablesTab,scriptTab,issuesPanel}.ts
Schema tooling scripts/mine-schema.js → docs/ids-form-structure.md

MCP server (sl-ids-forms)

The extension ships a dependency-free MCP server so an MCP-capable agent (e.g. Kiro) can read and edit IDS/IV2 forms with the same engine the visual designer uses. It reuses the pure model modules, so edit semantics never diverge between the UI and the agent.

Enable it

  1. Run the command “IDS Form: Register MCP Server with Kiro” (choose User or Workspace scope). This writes an entry into .kiro/settings/mcp.json and, on Windows, a resilient mcp-sl-ids.cmd launcher next to it.
  2. Set slIds.idsRoots to the folder(s) that contain your *.ids.json / *.iv2.json forms (passed to the server as MG_IDS_ROOTS). Re-run the register command after changing it.
  3. Reload Kiro to pick up the server. Use “IDS Form: Unregister MCP Server from Kiro” to remove it.

Settings

Setting Purpose
slIds.idsRoots Folders searched for forms (MG_IDS_ROOTS).
slIds.mcpNodePath Optional explicit Node executable (instead of the Windows .cmd / Electron-as-Node launcher).

Tools (41) — 10 read-only (form_list, form_get_model, form_validate, form_get_component, form_get_variable, form_get_section, form_get_notebook, form_get_tree, form_list_events, form_list_missing_variables) plus a dedicated, self-describing tool for every one of the designer’s 31 edit operations (add/rename/delete/move/reparent components, sections, notebooks, cards, tabs, variables, events, form fields), and form_apply_edit as a raw escape hatch.

Safety model

  • All mutating tools are dry-run by default and require apply:true to write; they re-validate after every change and preserve the exact byte conventions (CRLF/BOM/indent).
  • Only the read-only tools are in the registration’s autoApprove list; every write requires approval.
  • Path scope: the server reads/writes any absolute path it is given (there is no workspace sandbox). This is intentional for a local developer agent — point slIds.idsRoots at trusted form folders and be aware that apply:true calls modify files on disk.

Develop

npm install
npm run build            # bundle extension + webview
npm test                 # 79 unit + integration tests
npm run watch            # rebuild on change
npm run mine-schema <dir>            # profile a folder of *.ids.json
npm run mine-schema <dir> -- --doc docs/ids-form-structure.md

Press F5 to launch an Extension Development Host, then open any *.ids.json.

Not yet implemented

Template (form.template) resolution to show template-provided panes by real name; add/delete of cards & tabs from the UI; expression autocomplete for the when rules; multi-select drag.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft