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 +138 -95
- package/README.md +33 -12
- package/dist/bridge-daemon.js +581 -0
- package/dist/bridge-daemon.js.map +1 -0
- package/dist/install-plugin.js +499 -27
- package/dist/install-plugin.js.map +1 -1
- package/dist/mcp.js +1298 -690
- package/dist/mcp.js.map +1 -1
- package/docs/DOMINUS_2_PLAN.md +8 -2
- package/package.json +1 -1
- package/plugin/Dominus.rbxmx +8 -4
- package/plugin/default.project.json +4 -1
- package/plugin/src/ValueCodec.lua +1 -1
- package/plugin/src/init.server.lua +5 -1
package/docs/DOMINUS_2_PLAN.md
CHANGED
|
@@ -13,8 +13,8 @@ set of Studio inspection, mutation, documentation, and verification tools.
|
|
|
13
13
|
text fallbacks, `isError`, and accurate tool risk annotations.
|
|
14
14
|
- Keep stdio as the MCP transport. It limits the MCP server itself to the process
|
|
15
15
|
that launched it and avoids exposing another localhost HTTP endpoint.
|
|
16
|
-
-
|
|
17
|
-
|
|
16
|
+
- Use optional MCP Sampling only for the explicit parallel coordinator. Detect the
|
|
17
|
+
client capability first and keep every normal Studio tool independent of it.
|
|
18
18
|
- Do not adopt the legacy experimental Tasks API. Long Studio calls remain normal
|
|
19
19
|
cancellable tool calls until the July Tasks extension is final and broadly
|
|
20
20
|
supported by clients and the TypeScript SDK.
|
|
@@ -40,6 +40,9 @@ Official references:
|
|
|
40
40
|
Failed batches are cancelled and automatically undone.
|
|
41
41
|
7. Script writes require the revision hash returned by the read operation.
|
|
42
42
|
8. There is no arbitrary Luau execution tool.
|
|
43
|
+
9. Broad tasks can opt into an MCP-native coordinator. It partitions immediate
|
|
44
|
+
child branches, sends bounded read-only evidence to concurrent Sampling workers,
|
|
45
|
+
validates scoped proposals, and owns the only atomic Studio write.
|
|
43
46
|
|
|
44
47
|
## MCP tool surface
|
|
45
48
|
|
|
@@ -50,6 +53,7 @@ Official references:
|
|
|
50
53
|
- `studio_build_ui`, `studio_snapshot_ui`
|
|
51
54
|
- `studio_run_test`, `studio_get_output`
|
|
52
55
|
- `roblox_search_api`, `roblox_get_api`
|
|
56
|
+
- `run_parallel_task` for Sampling-capable MCP clients
|
|
53
57
|
|
|
54
58
|
The intended agent loop is inspect, plan, apply, read back, test. Tool descriptions
|
|
55
59
|
and the server prompt make that workflow explicit without embedding another LLM
|
|
@@ -62,6 +66,8 @@ inside the MCP server.
|
|
|
62
66
|
tool arrays/depth/source lengths.
|
|
63
67
|
- Dedicated mutation tools only; no `loadstring` or generic `run_code` path.
|
|
64
68
|
- Explicit destructive tool for deletion.
|
|
69
|
+
- Parallel workers are proposal-only; stable refs must match supplied evidence,
|
|
70
|
+
writes must remain in owned scopes, and overlapping proposals are rejected.
|
|
65
71
|
- Atomic UI replacement: build and validate off-tree before replacing the live UI.
|
|
66
72
|
- Output watcher filters every Dominus-prefixed message to prevent feedback loops.
|
|
67
73
|
|
package/package.json
CHANGED
package/plugin/Dominus.rbxmx
CHANGED
|
@@ -2,8 +2,12 @@
|
|
|
2
2
|
<Item class="Script" referent="0">
|
|
3
3
|
<Properties>
|
|
4
4
|
<string name="Name">Dominus</string>
|
|
5
|
-
<token name="RunContext">
|
|
6
|
-
<string name="Source"><![CDATA[
|
|
5
|
+
<token name="RunContext">3</token>
|
|
6
|
+
<string name="Source"><![CDATA[if script.RunContext ~= Enum.RunContext.Plugin then
|
|
7
|
+
return
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
local HttpService = game:GetService("HttpService")
|
|
7
11
|
|
|
8
12
|
local EmbeddedBridgeToken = require(script.BridgeConfig)
|
|
9
13
|
local CommandRouter = require(script.CommandRouter)
|
|
@@ -121,7 +125,7 @@ local function handleMessage(rawMessage)
|
|
|
121
125
|
end
|
|
122
126
|
|
|
123
127
|
if message.type == "server:auth_rejected" then
|
|
124
|
-
warn("[Dominus 2] Authentication failed. Run dominus-install-plugin
|
|
128
|
+
warn("[Dominus 2] Authentication failed. Run dominus-install-plugin to refresh the local plugin.")
|
|
125
129
|
WsClient.disconnect()
|
|
126
130
|
return
|
|
127
131
|
end
|
|
@@ -3384,7 +3388,7 @@ function ValueCodec.encode(value)
|
|
|
3384
3388
|
end
|
|
3385
3389
|
|
|
3386
3390
|
function ValueCodec.setProperty(instance, propertyName, value)
|
|
3387
|
-
if propertyName == "Parent" or propertyName == "ClassName" then
|
|
3391
|
+
if propertyName == "Parent" or propertyName == "ClassName" or propertyName == "Source" then
|
|
3388
3392
|
error("Property cannot be changed through setProperties: " .. propertyName)
|
|
3389
3393
|
end
|
|
3390
3394
|
local readOk, current = pcall(function()
|
|
@@ -209,7 +209,7 @@ function ValueCodec.encode(value)
|
|
|
209
209
|
end
|
|
210
210
|
|
|
211
211
|
function ValueCodec.setProperty(instance, propertyName, value)
|
|
212
|
-
if propertyName == "Parent" or propertyName == "ClassName" then
|
|
212
|
+
if propertyName == "Parent" or propertyName == "ClassName" or propertyName == "Source" then
|
|
213
213
|
error("Property cannot be changed through setProperties: " .. propertyName)
|
|
214
214
|
end
|
|
215
215
|
local readOk, current = pcall(function()
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
if script.RunContext ~= Enum.RunContext.Plugin then
|
|
2
|
+
return
|
|
3
|
+
end
|
|
4
|
+
|
|
1
5
|
local HttpService = game:GetService("HttpService")
|
|
2
6
|
|
|
3
7
|
local EmbeddedBridgeToken = require(script.BridgeConfig)
|
|
@@ -116,7 +120,7 @@ local function handleMessage(rawMessage)
|
|
|
116
120
|
end
|
|
117
121
|
|
|
118
122
|
if message.type == "server:auth_rejected" then
|
|
119
|
-
warn("[Dominus 2] Authentication failed. Run dominus-install-plugin
|
|
123
|
+
warn("[Dominus 2] Authentication failed. Run dominus-install-plugin to refresh the local plugin.")
|
|
120
124
|
WsClient.disconnect()
|
|
121
125
|
return
|
|
122
126
|
end
|