dominus-cli 2.1.1 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,6 +1,49 @@
1
1
  # Changelog
2
2
 
3
- ## 2.1.1 (2026-07-13)
3
+ ## 2.2.1 (2026-07-13)
4
+
5
+ ### Stable Studio bridge architecture
6
+
7
+ - Moved WebSocket ownership out of individual MCP stdio processes and into one
8
+ detached local bridge daemon. MCP hosts now act as controllers, so closing or
9
+ restarting one agent no longer disconnects Studio or other agents.
10
+ - Added race-safe bridge startup and reuse. Concurrent MCP launches converge on
11
+ the same loopback bridge instead of creating separate connection state.
12
+ - The plugin installer now starts the bridge automatically and provisions the
13
+ user-specific 256-bit credential into the local plugin. Manual connection IDs
14
+ and six-digit pairing codes are no longer part of setup or recovery.
15
+ - Built the plugin root with `RunContext.Plugin` and added an entry-point guard.
16
+ Starting a Play test can no longer launch duplicate Client and Server Dominus
17
+ sessions from one Studio window.
18
+ - Added regressions for plugin run context, seamless credential provisioning,
19
+ unauthorized plugin rejection, and bridge survival across MCP controller exits.
20
+
21
+ ## 2.2.0 (2026-07-13)
22
+
23
+ ### MCP-native multi-agent coordinator
24
+
25
+ - Added `run_parallel_task` to the published MCP server. It uses the MCP client's
26
+ model through standard Sampling, so Dominus still requires no AI provider key.
27
+ - Added deterministic path-based task partitioning. UI and generic roots are split
28
+ by immediate child branches and distributed across one to five workers.
29
+ - Workers run concurrently and receive bounded hierarchy plus live typed property
30
+ evidence for only their owned scopes. Workers are proposal-only and never receive
31
+ Studio mutation tools.
32
+ - Added strict worker proposal and coordinator decision schemas. Existing instance
33
+ refs must exactly match supplied ID/path pairs, and every mutation must remain
34
+ inside the worker's owned branches.
35
+ - Added ancestor/descendant conflict detection and coordinator-only operation
36
+ ordering. The coordinator may select complete validated proposals but cannot
37
+ invent, rewrite, or partially accept worker operations.
38
+ - Final writes use one atomic `studio_apply` batch. Dominus then reads the root and
39
+ affected properties back, checks creates and moves, and performs at most one
40
+ bounded repair pass before reporting verification evidence.
41
+ - Parallel planning refuses truncated hierarchy evidence, and generic property
42
+ mutations can no longer bypass revision checks by writing script `Source`.
43
+ - Added summary-level MCP logging events for worker starts/completions, proposal
44
+ decisions, application, and verification without exposing full model traces.
45
+ - Clients without Sampling receive a clear capability response and keep the normal
46
+ single-agent inspect-plan-apply-verify workflow.
4
47
 
5
48
  ### Studio connection reliability
6
49
 
@@ -16,8 +59,8 @@
16
59
  rejected by resolving names against the live Enum type's items.
17
60
  - Removed the stale binary `.rbxm` build artifact. The package and installer now
18
61
  use the single canonical `.rbxmx` plugin build.
19
- - Corrected documentation to describe the 16-tool MCP catalog and optional Studio
20
- restart behavior.
62
+ - Corrected documentation for the 17-tool MCP catalog, canonical plugin format,
63
+ and optional Studio restart behavior.
21
64
 
22
65
  ## 2.1.0 (2026-07-12)
23
66
 
@@ -101,95 +144,95 @@ Dominus has been rewritten as an MCP-first Roblox Studio engineering server.
101
144
  `instanceId` and/or `pathSegments`.
102
145
  - Script updates require `expectedRevision` from `studio_read_script`.
103
146
  - Existing UI is not replaced unless `replaceExisting: true` is supplied.
104
-
105
- ## 0.5.5 (2026-04-23)
106
-
107
- ### New MCP Tools (30 total, up from 24)
108
-
109
- - **`move_instance`** — Reparent an instance preserving all descendants. Sets ChangeHistoryService waypoint.
110
- - **`bulk_set_properties`** — Set properties on multiple instances in one call. Explicit paths or className filter mode.
111
- - **`find_replace_scripts`** — Find and replace across all scripts with optional Lua pattern matching and dry run preview.
112
- - **`undo`** — Undo last action (ChangeHistoryService). Like Ctrl+Z.
113
- - **`redo`** — Redo last undone action. Like Ctrl+Y.
114
-
115
- ### Improvements
116
-
117
- - **`get_properties` now supports compact mode** — Same filtering as `get_descendants_properties`. Strips read-only, nil, deprecated, and default-valued properties by default. The previous version returned all ~50 properties per instance even though most were noise.
118
- - **Fixed code injection in `clone_instance`, `group_instances`, `build_multiple`** — Instance names and paths with special characters (quotes, backslashes) no longer break generated Luau code.
119
- - **`build_multiple` now supports `rgb()` colors and `canCollide`** — Previously only handled `#hex` and BrickColor names; `rgb(255,0,0)` would silently fail.
120
- - **Better tool descriptions** — More specific descriptions help AI models pick the right tool. `get_properties` disambiguates vs `serialize_ui` and `get_descendants_properties`.
121
- - **Shared `luaStr()` and `resolvePath()` helpers** — Centralized safe string generation for all code-gen tools.
122
-
123
- ## 0.5.4 (2026-04-23)
124
-
125
- ### Fixes
126
-
127
- - **Rebuilt plugin** — 0.5.3 shipped a stale `Dominus.rbxm` missing the compact property filtering and protocol changes. This release includes the correctly built plugin.
128
-
129
- ## 0.5.3 (2026-04-23)
130
-
131
- ### Improvements
132
-
133
- - **Compact `get_descendants_properties`** — Now strips read-only, nil, deprecated, and default-valued properties by default, reducing response size by ~80%. Pass `compact: false` for the full dump.
134
- - **`serialize_ui` exposed as MCP tool** — Was previously only in the internal tool registry. Now available to all MCP clients (Copilot, Cursor, Claude, etc.) for converting existing Roblox UI into clean JSON trees.
135
- - **UI → Roact/React conversion guidance** — System prompt and internal memory now teach the agent the full workflow: `serialize_ui` → JSON tree → Roact/React component with correct type mappings (UDim2, Color3, Vector2, enums, FontFace).
136
- - **Smarter tool selection** — Agent now prefers `serialize_ui` over `get_descendants_properties` for UI conversion tasks, avoiding context bloat.
137
-
138
- ## 0.2.1 (2026-02-24)
139
-
140
- ### New
141
-
142
- - **Auto-update checker** — On startup, Dominus checks npm for newer versions
143
- and prints an upgrade notice. Cached for 4 hours, non-blocking, never throws.
144
-
145
- ### Bug Fixes
146
-
147
- - **MCP server crashes on EADDRINUSE** — `dominus mcp` would crash if port 18088
148
- was already held by a running `dominus start` (or another MCP instance). The MCP
149
- server now checks for an existing listener and connects as a relay client instead
150
- of trying to bind the same port.
151
-
152
- ### New MCP Tools (22 total, up from 14)
153
-
154
- - **`get_class_info`** — Look up the full schema of any Roblox class via
155
- ReflectionService (properties, methods, events with types).
156
- - **`create_ui`** — Create an entire UI tree in one call with a declarative JSON
157
- spec. Auto-coerces UDim2, Color3, Font, and enums. ~10x faster than `run_code`.
158
- - **`create_part`** — One-call Part creation with position, size, color, material,
159
- shape, transparency, anchored, and collision settings.
160
- - **`clone_instance`** — Clone an instance with optional rename, reparent, and
161
- position offset.
162
- - **`group_instances`** — Group multiple instances into a Model or Folder.
163
- - **`build_multiple`** — Batch-create many parts/instances in a single round-trip.
164
- - **`execute_run_test`** — Enter Run mode via `StudioTestService:ExecuteRunModeAsync()`
165
- with pass-through args and result capture.
166
- - **`execute_play_test`** — Enter Play mode via `StudioTestService:ExecutePlayModeAsync()`
167
- for full client-server simulation tests.
168
-
169
- ### New CLI Features
170
-
171
- - **`dominus mcp-install`** — Auto-install MCP config into Cursor, VS Code,
172
- Claude Desktop, Windsurf, and Claude Code with one command.
173
- - **`dominus mcp-setup`** — Print manual MCP configuration instructions.
174
- - **Relay client architecture** — `dominus start` can now connect as a relay
175
- client to an existing MCP-owned WebSocket server, allowing the TUI and MCP
176
- to coexist on the same port.
177
-
178
- ### Plugin Improvements
179
-
180
- - Enhanced `Properties.lua` with broader property type support.
181
- - Improved `Reflection.lua` for richer class metadata.
182
- - Updated `TestRunner.lua` with Run/Play mode test support.
183
- - New `UIBuilder.lua` module for server-side declarative UI construction.
184
-
185
- ### Other Changes
186
-
187
- - Multi-provider AI config improvements (OpenRouter, xAI, Gemini, custom).
188
- - TUI setup wizard for first-run API key and provider configuration.
189
- - Improved system prompt with builder-tool awareness.
190
- - WebSocket server now supports controller relay connections.
191
-
192
- ## 0.1.0 (2026-02-23)
193
-
194
- - Initial release — 14 MCP tools, TUI agent, persistent memory, Roblox Studio
195
- WebSocket bridge.
147
+
148
+ ## 0.5.5 (2026-04-23)
149
+
150
+ ### New MCP Tools (30 total, up from 24)
151
+
152
+ - **`move_instance`** — Reparent an instance preserving all descendants. Sets ChangeHistoryService waypoint.
153
+ - **`bulk_set_properties`** — Set properties on multiple instances in one call. Explicit paths or className filter mode.
154
+ - **`find_replace_scripts`** — Find and replace across all scripts with optional Lua pattern matching and dry run preview.
155
+ - **`undo`** — Undo last action (ChangeHistoryService). Like Ctrl+Z.
156
+ - **`redo`** — Redo last undone action. Like Ctrl+Y.
157
+
158
+ ### Improvements
159
+
160
+ - **`get_properties` now supports compact mode** — Same filtering as `get_descendants_properties`. Strips read-only, nil, deprecated, and default-valued properties by default. The previous version returned all ~50 properties per instance even though most were noise.
161
+ - **Fixed code injection in `clone_instance`, `group_instances`, `build_multiple`** — Instance names and paths with special characters (quotes, backslashes) no longer break generated Luau code.
162
+ - **`build_multiple` now supports `rgb()` colors and `canCollide`** — Previously only handled `#hex` and BrickColor names; `rgb(255,0,0)` would silently fail.
163
+ - **Better tool descriptions** — More specific descriptions help AI models pick the right tool. `get_properties` disambiguates vs `serialize_ui` and `get_descendants_properties`.
164
+ - **Shared `luaStr()` and `resolvePath()` helpers** — Centralized safe string generation for all code-gen tools.
165
+
166
+ ## 0.5.4 (2026-04-23)
167
+
168
+ ### Fixes
169
+
170
+ - **Rebuilt plugin** — 0.5.3 shipped a stale `Dominus.rbxm` missing the compact property filtering and protocol changes. This release includes the correctly built plugin.
171
+
172
+ ## 0.5.3 (2026-04-23)
173
+
174
+ ### Improvements
175
+
176
+ - **Compact `get_descendants_properties`** — Now strips read-only, nil, deprecated, and default-valued properties by default, reducing response size by ~80%. Pass `compact: false` for the full dump.
177
+ - **`serialize_ui` exposed as MCP tool** — Was previously only in the internal tool registry. Now available to all MCP clients (Copilot, Cursor, Claude, etc.) for converting existing Roblox UI into clean JSON trees.
178
+ - **UI → Roact/React conversion guidance** — System prompt and internal memory now teach the agent the full workflow: `serialize_ui` → JSON tree → Roact/React component with correct type mappings (UDim2, Color3, Vector2, enums, FontFace).
179
+ - **Smarter tool selection** — Agent now prefers `serialize_ui` over `get_descendants_properties` for UI conversion tasks, avoiding context bloat.
180
+
181
+ ## 0.2.1 (2026-02-24)
182
+
183
+ ### New
184
+
185
+ - **Auto-update checker** — On startup, Dominus checks npm for newer versions
186
+ and prints an upgrade notice. Cached for 4 hours, non-blocking, never throws.
187
+
188
+ ### Bug Fixes
189
+
190
+ - **MCP server crashes on EADDRINUSE** — `dominus mcp` would crash if port 18088
191
+ was already held by a running `dominus start` (or another MCP instance). The MCP
192
+ server now checks for an existing listener and connects as a relay client instead
193
+ of trying to bind the same port.
194
+
195
+ ### New MCP Tools (22 total, up from 14)
196
+
197
+ - **`get_class_info`** — Look up the full schema of any Roblox class via
198
+ ReflectionService (properties, methods, events with types).
199
+ - **`create_ui`** — Create an entire UI tree in one call with a declarative JSON
200
+ spec. Auto-coerces UDim2, Color3, Font, and enums. ~10x faster than `run_code`.
201
+ - **`create_part`** — One-call Part creation with position, size, color, material,
202
+ shape, transparency, anchored, and collision settings.
203
+ - **`clone_instance`** — Clone an instance with optional rename, reparent, and
204
+ position offset.
205
+ - **`group_instances`** — Group multiple instances into a Model or Folder.
206
+ - **`build_multiple`** — Batch-create many parts/instances in a single round-trip.
207
+ - **`execute_run_test`** — Enter Run mode via `StudioTestService:ExecuteRunModeAsync()`
208
+ with pass-through args and result capture.
209
+ - **`execute_play_test`** — Enter Play mode via `StudioTestService:ExecutePlayModeAsync()`
210
+ for full client-server simulation tests.
211
+
212
+ ### New CLI Features
213
+
214
+ - **`dominus mcp-install`** — Auto-install MCP config into Cursor, VS Code,
215
+ Claude Desktop, Windsurf, and Claude Code with one command.
216
+ - **`dominus mcp-setup`** — Print manual MCP configuration instructions.
217
+ - **Relay client architecture** — `dominus start` can now connect as a relay
218
+ client to an existing MCP-owned WebSocket server, allowing the TUI and MCP
219
+ to coexist on the same port.
220
+
221
+ ### Plugin Improvements
222
+
223
+ - Enhanced `Properties.lua` with broader property type support.
224
+ - Improved `Reflection.lua` for richer class metadata.
225
+ - Updated `TestRunner.lua` with Run/Play mode test support.
226
+ - New `UIBuilder.lua` module for server-side declarative UI construction.
227
+
228
+ ### Other Changes
229
+
230
+ - Multi-provider AI config improvements (OpenRouter, xAI, Gemini, custom).
231
+ - TUI setup wizard for first-run API key and provider configuration.
232
+ - Improved system prompt with builder-tool awareness.
233
+ - WebSocket server now supports controller relay connections.
234
+
235
+ ## 0.1.0 (2026-02-23)
236
+
237
+ - Initial release — 14 MCP tools, TUI agent, persistent memory, Roblox Studio
238
+ WebSocket bridge.
package/README.md CHANGED
@@ -8,12 +8,17 @@ Luau execution.
8
8
  ## What changed
9
9
 
10
10
  - MCP-only product: the old Ink chat CLI is no longer published.
11
- - 16 focused tools with input/output schemas, structured results, and risk hints.
11
+ - 17 focused tools with input/output schemas, structured results, and risk hints.
12
+ - MCP-native parallel coordination uses the host's model through Sampling, with
13
+ proposal-only workers and coordinator-owned Studio writes.
12
14
  - Stable instance refs survive dots in names, renames, reparenting, and duplicate
13
15
  sibling names for the life of the Studio session.
14
16
  - Script writes require a revision from `studio_read_script`.
15
17
  - Mutation batches and UI replacement are undoable and roll back on failure.
16
- - The installer provisions a private bridge token into the local Studio plugin.
18
+ - The installer provisions a local bridge credential automatically; users never
19
+ copy connection IDs or pairing codes.
20
+ - A single background bridge keeps Studio connected while MCP hosts and agents
21
+ start, stop, or run in parallel.
17
22
  - Multiple Studio windows are selected by unique connection ID, not place ID.
18
23
  - Roblox Creator Docs API lookup is built in.
19
24
 
@@ -63,7 +68,7 @@ For a version-pinned configuration that does not require a global install:
63
68
  "mcpServers": {
64
69
  "dominus": {
65
70
  "command": "npx",
66
- "args": ["-y", "-p", "dominus-cli@2.1.1", "dominus-mcp"]
71
+ "args": ["-y", "-p", "dominus-cli@2.2.1", "dominus-mcp"]
67
72
  }
68
73
  }
69
74
  }
@@ -73,9 +78,13 @@ Restart the MCP client after changing its configuration.
73
78
 
74
79
  ## First connection
75
80
 
76
- 1. Run `dominus-install-plugin`; restart Roblox Studio only if it does not reload.
77
- 2. Start the MCP client so `dominus-mcp` is running.
78
- 3. Open Roblox Studio. The plugin connects and authenticates automatically.
81
+ 1. Run `dominus-install-plugin`; it installs the personalized plugin and starts
82
+ the local Studio bridge in the background.
83
+ 2. Open Roblox Studio and start the MCP client. Dominus authenticates
84
+ automatically with no connection ID or pairing code.
85
+
86
+ If the local credential is replaced or lost, run `dominus-install-plugin` again.
87
+ Studio normally reloads it without a restart.
79
88
 
80
89
  If several Studio windows are open, call `dominus_select_studio` with the exact
81
90
  connection ID before editing. Two windows on the same place ID remain distinct.
@@ -94,6 +103,13 @@ For UI fidelity work, use `studio_snapshot_ui` after `studio_build_ui` and compa
94
103
  fonts, UDim2 values, colors, strokes, and hierarchy rather than relying on a
95
104
  successful write response alone.
96
105
 
106
+ For broad tasks with independent branches, use `run_parallel_task`. Dominus
107
+ partitions immediate child scopes, supplies each worker with hierarchy and typed
108
+ property evidence, runs up to five Sampling workers concurrently, validates their
109
+ proposals, and applies only the coordinator-approved atomic plan. Workers never
110
+ receive direct write access. Clients without Sampling continue to use the normal
111
+ single-agent workflow.
112
+
97
113
  ## Tool catalog
98
114
 
99
115
  Connection tools:
@@ -101,6 +117,10 @@ Connection tools:
101
117
  - `dominus_status`
102
118
  - `dominus_select_studio`
103
119
 
120
+ Parallel coordination:
121
+
122
+ - `run_parallel_task`
123
+
104
124
  Studio inspection:
105
125
 
106
126
  - `studio_get_tree`
@@ -126,12 +146,13 @@ Roblox documentation:
126
146
 
127
147
  ## Security model
128
148
 
129
- The MCP transport is stdio. The separate Studio WebSocket bridge binds only to
130
- `127.0.0.1`, limits messages to one MiB, rate-limits sockets, times out incomplete
131
- handshakes, and authenticates both Studio plugins and relay controllers. The local
132
- installer injects a user-specific token into the plugin, so no manual pairing flow
133
- is needed. The plugin only accepts an explicit command allowlist and contains no
134
- `loadstring` executor.
149
+ The MCP transport is stdio. A single background Studio WebSocket bridge binds
150
+ only to `127.0.0.1`, limits messages to one MiB, rate-limits sockets, times out
151
+ incomplete handshakes, and authenticates both Studio plugins and MCP controllers.
152
+ The distributed plugin contains only a credential placeholder;
153
+ `dominus-install-plugin` writes the user-specific token into the local copy. The
154
+ plugin only accepts an explicit command allowlist and contains no `loadstring`
155
+ executor.
135
156
 
136
157
  The bridge token protects against accidental or opportunistic access by unrelated
137
158
  local processes. Like other user-level credentials, it cannot protect against a