Magic Suite
The official Visual Studio Code extension for Panoramic Data Magic Suite. Write, run, and debug RMScript files directly from VS Code with real-time execution monitoring.

Features
RMScript Language Support
- Syntax highlighting for
.rm and .rmscript files with a full TextMate grammar
- Dark and light themes optimised for RMScript — select Magic Suite RMScript Dark or Magic Suite RMScript Light from the colour theme picker
- Bracket matching and auto-closing for
[], {}, (), quotes, and backticks
- Comment toggling with
Ctrl+/ (line comments with //)
Script Execution
- Run RMScript files against any Magic Suite environment with a single click or
Ctrl+Shift+R
- Real-time progress monitoring via SignalR with automatic polling fallback
- Cancel a running script at any time
ReportMagic Panel
The Magic Suite panel contains four top-level tabs: ReportMagic, Docs, NCalc 101, and Settings.
The ReportMagic tab has three sub-tabs:
- Progress — colour-coded macro status blocks matching Report Studio's colour scheme
- Macros — clickable list of all macros with type icons, durations, and status badges; click any macro to view its input text, output text, messages, duration, and execution result; large output values are shown truncated in the inline preview
- Variables — inspect all variables during and after execution; toggle between raw JSON and tabular view for JObject and JArray values
Each sub-tab has its own independently resizable detail pane.
Documentation Browser
- Article search — search Magic Suite documentation articles from within VS Code
- Macro reference — look up macro specifications, categories, summaries, and usage examples
- In-panel reading — view article and macro documentation content without leaving VS Code
NCalc 101
- Expression evaluator — type and evaluate any NCalc expression interactively
- Variable inspection — import variables from the last execution or define your own
- Result display — shows the evaluated result value and type, or a detailed error message on failure
- File picker — select a
.ncalc file to load variables from
Merlin Chat
- Merlin in the editor: open the Magic Suite icon in the activity bar, or run Magic Suite: Open Merlin Chat, to talk to Merlin, the Magic Suite assistant, against your active profile
- Live progress: the steps Merlin takes, what it is thinking about and the answer so far appear while it works
- Editor context: Merlin can ask VS Code for the active file and selection, a workspace file, a file list, the Problems list or the Git status. These are read-only and confined to your workspace; a tool that could change anything always asks you first
- Conversations persist across VS Code restarts, per profile; Magic Suite: New Merlin Chat starts afresh
Profile & Tenant Management
- Multiple profiles — configure connections to different Magic Suite environments (production, staging, test, etc.)
- CLI integration — automatically detects profiles created with the Magic Suite CLI (documentation)
- Tenant switching — SuperAdmin users can switch between tenants; regular users see their assigned tenant
- Batch variables — load variables from a JSON file before execution
Getting Started
Prerequisites
- A Magic Suite environment with API access
- An API token (token name + token key) — contact your Magic Suite administrator
Step 1: Install the Extension
Install Magic Suite from the VS Code Extensions Marketplace, or install from a .vsix file:
code --install-extension magicsuite-0.1.0.vsix
The simplest way to get started is to create a profile using the command palette.
- Open the Command Palette (
Ctrl+Shift+P)
- Run Magic Suite: Manage Profiles
- Select Add Profile
- Enter:
- Profile name — a friendly name (e.g.
production)
- API URL — your Magic Suite API endpoint (e.g.
https://api.magicsuite.net)
- Token Name — your API token name
- Token Key — your API token key
Alternative: Set Up via PowerShell
If you prefer to configure profiles from the command line (useful for scripting or sharing configurations), you can create the CLI configuration file directly. This is the same file used by the Magic Suite CLI tool.
For a single environment (most users):
# Set your connection details
$ProfileName = "production"
$ApiUrl = "https://api.magicsuite.net"
$TokenName = "your-token-name"
$TokenKey = "your-token-key"
# Create the configuration directory
$configDir = Join-Path $env:APPDATA "Panoramic Data\MagicSuite"
New-Item -ItemType Directory -Path $configDir -Force | Out-Null
# Write the configuration file
$config = @{
ActiveProfile = $ProfileName
DefaultOutputFormat = "Json"
VerboseLogging = $false
Profiles = @{
$ProfileName = @{
ApiUrl = $ApiUrl
TokenName = $TokenName
TokenKey = $TokenKey
}
}
} | ConvertTo-Json -Depth 4
Set-Content -Path (Join-Path $configDir "cli-config.json") -Value $config -Encoding UTF8
Write-Host "Magic Suite profile '$ProfileName' configured successfully." -ForegroundColor Green
Write-Host "Configuration saved to: $(Join-Path $configDir 'cli-config.json')"
For multiple environments:
$configDir = Join-Path $env:APPDATA "Panoramic Data\MagicSuite"
New-Item -ItemType Directory -Path $configDir -Force | Out-Null
$config = @{
ActiveProfile = "production"
DefaultOutputFormat = "Json"
VerboseLogging = $false
Profiles = @{
production = @{
ApiUrl = "https://api.magicsuite.net"
TokenName = "prod-token-name"
TokenKey = "prod-token-key"
}
staging = @{
ApiUrl = "https://api-staging.magicsuite.net"
TokenName = "staging-token-name"
TokenKey = "staging-token-key"
}
test = @{
ApiUrl = "https://api-test.magicsuite.net"
TokenName = "test-token-name"
TokenKey = "test-token-key"
}
}
} | ConvertTo-Json -Depth 4
Set-Content -Path (Join-Path $configDir "cli-config.json") -Value $config -Encoding UTF8
Write-Host "Magic Suite profiles configured successfully." -ForegroundColor Green
Note: The configuration file is stored at %APPDATA%\Panoramic Data\MagicSuite\cli-config.json. This is the same location used by the Magic Suite CLI, so profiles are shared between both tools.
Step 3: Select a Tenant
- Open the Command Palette (
Ctrl+Shift+P)
- Run Magic Suite: Select Tenant
- SuperAdmin users will see a list of all available tenants; regular users will see their assigned tenant
Step 4: Run an RMScript
- Open a
.rm or .rmscript file
- Click the ▶ Play button in the editor title bar, or press
Ctrl+Shift+R
- The progress panel opens to the side showing real-time execution status
Commands
All commands are available via the Command Palette (Ctrl+Shift+P) under the Magic Suite category.
| Command |
Description |
Shortcut |
| Run RMScript |
Execute the current RMScript file |
Ctrl+Shift+R |
| Stop Execution |
Cancel a running script |
— |
| Select Profile |
Switch between API profiles |
— |
| Select Tenant |
Switch the active tenant |
— |
| Manage Profiles |
Add, edit, or remove profiles |
— |
| Set Batch Variables File |
Select a JSON file with variables |
— |
| Open Progress Panel |
Show the execution progress panel |
— |
| Evaluate NCalc Expression |
Evaluate the current .ncalc file |
Ctrl+Shift+N |
| Open Merlin Chat |
Show the Merlin chat view |
None |
| New Merlin Chat |
Start a new conversation |
None |
Commands marked (Internal) are for Panoramic Data developers and appear only when the active profile's user is a Magic Suite SuperAdmin. Hiding them is a convenience, not a control: the API enforces who may use what.
Settings
| Setting |
Description |
Default |
magicsuite.activeProfile |
The currently active profile name |
"" |
magicsuite.activeTenant |
The currently active tenant name |
"" |
magicsuite.batchVariablesFile |
Path to a JSON file with batch variables |
"" |
Batch Variables
To set variables before execution:
- Create a JSON file with your variables:
{
"CustomerName": "Acme Corp",
"ReportDate": "2026-01-01",
"OutputFormat": "PDF"
}
- Run Magic Suite: Set Batch Variables File and select the file
- The variables will be included with every subsequent script execution
Colour Themes
The extension includes two colour themes designed for RMScript:
- Magic Suite RMScript Dark — optimised for dark editor backgrounds
- Magic Suite RMScript Light — optimised for light editor backgrounds
To activate: Ctrl+K Ctrl+T → search for "Magic Suite"
Managing Profiles In-Panel
Profile management is also available directly within the Settings tab of the Magic Suite panel — no need to use the Command Palette. From the Settings tab you can add, edit, and remove profiles without leaving the panel.
Troubleshooting
Run Magic Suite: Manage Profiles to create a profile, or set up the CLI configuration file using the PowerShell script above.
"Connection failed" or timeout errors
- Verify your API URL is correct and accessible from your network
- Check that your API token has not expired
- Ensure you are connected to the correct VPN if your environment requires one
Syntax highlighting not working
- Ensure the file has a
.rm or .rmscript extension
- Try selecting the language mode manually: click the language indicator in the status bar and select RMScript
- If using a custom theme, switch to Magic Suite RMScript Dark or Light for best results
SignalR connection warnings
SignalR provides live progress updates. If the connection fails—for example, due to firewall rules—the extension falls back to polling automatically. You may see a warning in the output channel, but execution is not affected.
Requirements
- Visual Studio Code 1.100.0 or later
- Network access to a Magic Suite API endpoint
- A valid API token
About
Magic Suite is developed by Panoramic Data Ltd.
For support, feature requests, or bug reports, please visit the GitHub repository.