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/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,49 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 2.
|
|
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
|
|
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
|
-
-
|
|
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
|
|
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.
|
|
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`;
|
|
77
|
-
|
|
78
|
-
|
|
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.
|
|
130
|
-
`127.0.0.1`, limits messages to one MiB, rate-limits sockets, times out
|
|
131
|
-
handshakes, and authenticates both Studio plugins and
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
`loadstring`
|
|
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
|