devrites 7.2.2 → 7.2.3
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
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to DevRites are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and DevRites adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Releases are generated automatically by [semantic-release](https://semantic-release.gitbook.io/) from Conventional Commits on `main`.
|
|
4
4
|
|
|
5
|
+
## [7.2.3](https://github.com/ViktorsBaikers/DevRites/compare/v7.2.2...v7.2.3) (2026-10-29)
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
* **agents:** honor DSH orchestrator permission selection ([#187](https://github.com/ViktorsBaikers/DevRites/issues/187)) ([1030093](https://github.com/ViktorsBaikers/DevRites/commit/10300933ac688c0e06217026c89c3ed657b58ec0))
|
|
10
|
+
|
|
5
11
|
## [7.2.2](https://github.com/ViktorsBaikers/DevRites/compare/v7.2.1...v7.2.2) (2026-10-29)
|
|
6
12
|
|
|
7
13
|
### Fixed
|
package/README.md
CHANGED
|
@@ -31,7 +31,7 @@ history can't lose it. After you clear the conversation, switch hosts, or hand
|
|
|
31
31
|
the feature to another engineer, the next session reads the same plan,
|
|
32
32
|
decisions, and evidence before it continues.
|
|
33
33
|
|
|
34
|
-
**Status:** [`v7.2.
|
|
34
|
+
**Status:** [`v7.2.3`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v7.2.3): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
|
|
35
35
|
|
|
36
36
|
This is the latest published release; `main` may contain unreleased work.
|
|
37
37
|
|
package/docs/dsh.md
CHANGED
|
@@ -32,10 +32,16 @@ settlement notice. A returned child id means dispatch was admitted; `inactive`
|
|
|
32
32
|
activity alone does not prove successful completion. The orchestrator collects
|
|
33
33
|
and reconciles every terminal result, including failures, before dependent work.
|
|
34
34
|
|
|
35
|
+
The DevRites orchestrator honors DSH's selected permission mode, including
|
|
36
|
+
**Full access**, without changing approval settings or enabling Full access
|
|
37
|
+
automatically. After updating an older installation and restarting DSH, select
|
|
38
|
+
your desired permission preset again if the session already shows **Custom**.
|
|
39
|
+
|
|
35
40
|
Read-only roles retain only their mapped tools and run shell commands under the
|
|
36
41
|
read-only sandbox. Shell-capable roles also receive native job tools to collect
|
|
37
|
-
background command output and stop their jobs.
|
|
38
|
-
|
|
42
|
+
background command output and stop their jobs. Specialist writers have a
|
|
43
|
+
workspace-write ceiling. For specialists, the guard narrows DSH's inherited
|
|
44
|
+
parent override before each allowed call, preserves an existing
|
|
39
45
|
read-only parent boundary, and denies explicit sandbox escalation. Confining
|
|
40
46
|
shell and filesystem providers are required; an unconfined composition fails
|
|
41
47
|
closed. Tool access derives from canonical agent frontmatter; unsupported
|
|
@@ -22,7 +22,8 @@ export async function apply(ctx, config) {
|
|
|
22
22
|
}
|
|
23
23
|
const { role, permission, allowedTools, instructions } = config;
|
|
24
24
|
if (typeof role !== 'string' || !role || typeof instructions !== 'string'
|
|
25
|
-
|| !['read-only', 'workspace-write'].includes(permission)
|
|
25
|
+
|| (!['read-only', 'workspace-write'].includes(permission)
|
|
26
|
+
&& !(role === 'devrites-orchestrator' && permission === 'inherit'))
|
|
26
27
|
|| !Array.isArray(allowedTools) || allowedTools.some(tool => typeof tool !== 'string')) {
|
|
27
28
|
throw new Error('DSH DevRites role requires identity, instructions, tools, and a supported permission ceiling');
|
|
28
29
|
}
|
|
@@ -33,6 +34,7 @@ export async function apply(ctx, config) {
|
|
|
33
34
|
if (!['read-only', 'workspace-write', 'danger-full-access'].includes(mode)) {
|
|
34
35
|
throw new Error(`${role}: unknown sandbox permission`);
|
|
35
36
|
}
|
|
37
|
+
if (permission === 'inherit') return;
|
|
36
38
|
// Native spawn inherits the parent's override; preserve a narrower parent.
|
|
37
39
|
if (mode === 'danger-full-access' || (mode === 'workspace-write' && permission === 'read-only')) {
|
|
38
40
|
session.append('sandbox/mode', { mode: permission });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "devrites",
|
|
3
|
-
"version": "7.2.
|
|
3
|
+
"version": "7.2.3",
|
|
4
4
|
"description": "DevRites: a disciplined senior-engineer workflow pack for Claude Code, Codex, omp, pi, and Devin CLI",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"homepage": "https://github.com/ViktorsBaikers/DevRites#readme",
|
package/scripts/dsh-generate.py
CHANGED
|
@@ -144,7 +144,7 @@ def generate(source, target):
|
|
|
144
144
|
presets.insert(0, {"id": "devrites-orchestrator", "name": "DevRites", "description": "DevRites workflow orchestrator with named fresh specialists.",
|
|
145
145
|
"plugins": tool_plugins(root_tools) + [
|
|
146
146
|
{"id": "devrites-role", "name": "devrites:role", "config": {
|
|
147
|
-
"role": "devrites-orchestrator", "permission": "
|
|
147
|
+
"role": "devrites-orchestrator", "permission": "inherit",
|
|
148
148
|
"allowedTools": root_tools, "allowedAgentPresets": roles,
|
|
149
149
|
"indexTool": MCP_INDEX_TOOL, "instructions": BRIDGE}},
|
|
150
150
|
{"id": "devrites-subagent", "name": "@deepseek-ai/dsh-tool-subagent", "config": {
|
|
@@ -22,7 +22,8 @@ export async function apply(ctx, config) {
|
|
|
22
22
|
}
|
|
23
23
|
const { role, permission, allowedTools, instructions } = config;
|
|
24
24
|
if (typeof role !== 'string' || !role || typeof instructions !== 'string'
|
|
25
|
-
|| !['read-only', 'workspace-write'].includes(permission)
|
|
25
|
+
|| (!['read-only', 'workspace-write'].includes(permission)
|
|
26
|
+
&& !(role === 'devrites-orchestrator' && permission === 'inherit'))
|
|
26
27
|
|| !Array.isArray(allowedTools) || allowedTools.some(tool => typeof tool !== 'string')) {
|
|
27
28
|
throw new Error('DSH DevRites role requires identity, instructions, tools, and a supported permission ceiling');
|
|
28
29
|
}
|
|
@@ -33,6 +34,7 @@ export async function apply(ctx, config) {
|
|
|
33
34
|
if (!['read-only', 'workspace-write', 'danger-full-access'].includes(mode)) {
|
|
34
35
|
throw new Error(`${role}: unknown sandbox permission`);
|
|
35
36
|
}
|
|
37
|
+
if (permission === 'inherit') return;
|
|
36
38
|
// Native spawn inherits the parent's override; preserve a narrower parent.
|
|
37
39
|
if (mode === 'danger-full-access' || (mode === 'workspace-write' && permission === 'read-only')) {
|
|
38
40
|
session.append('sandbox/mode', { mode: permission });
|