0xray 4.0.0 → 4.0.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/.mcp.json +15 -55
- package/.xray/features.json +2 -2
- package/AGENTS-consumer.md +3 -3
- package/AGENTS.md +9 -9
- package/README.md +19 -19
- package/SKILLS.md +2 -2
- package/dist/AGENTS.md +9 -9
- package/dist/CHANGELOG.md +18 -2
- package/dist/README.md +19 -19
- package/dist/SKILLS.md +2 -2
- package/dist/cli/index.js +10 -1
- package/dist/integrations/hermes-agent/bridge.mjs +7 -0
- package/dist/integrations/openclaw/plugin/xray-pre-tool/package.json +4 -2
- package/opencode.json +0 -8
- package/package.json +2 -2
- package/scripts/node/consumer-install-smoke.mjs +55 -2
- package/scripts/node/reconcile-version.mjs +0 -4
- package/scripts/node/universal-version-manager.js +1 -1
- package/scripts/node/version-manager.mjs +38 -8
- package/src/integrations/openclaw/plugin/xray-pre-tool/package.json +4 -2
- package/xray/features.json +2 -2
package/.mcp.json
CHANGED
|
@@ -1,79 +1,39 @@
|
|
|
1
1
|
{
|
|
2
2
|
"mcpServers": {
|
|
3
3
|
"xray-governance": {
|
|
4
|
-
"command": "
|
|
5
|
-
"args": [
|
|
6
|
-
"-y",
|
|
7
|
-
"0xray",
|
|
8
|
-
"mcp",
|
|
9
|
-
"governance"
|
|
10
|
-
],
|
|
4
|
+
"command": "node",
|
|
5
|
+
"args": ["dist/cli/index.js", "mcp", "governance"],
|
|
11
6
|
"env": {
|
|
12
7
|
"XRAY_FORCE_MCP_GOVERNANCE": "true"
|
|
13
8
|
}
|
|
14
9
|
},
|
|
15
10
|
"xray-skills": {
|
|
16
|
-
"command": "
|
|
17
|
-
"args": [
|
|
18
|
-
"-y",
|
|
19
|
-
"0xray",
|
|
20
|
-
"mcp",
|
|
21
|
-
"skills"
|
|
22
|
-
]
|
|
11
|
+
"command": "node",
|
|
12
|
+
"args": ["dist/cli/index.js", "mcp", "skills"]
|
|
23
13
|
},
|
|
24
14
|
"xray-enforcer": {
|
|
25
|
-
"command": "
|
|
26
|
-
"args": [
|
|
27
|
-
"-y",
|
|
28
|
-
"0xray",
|
|
29
|
-
"mcp",
|
|
30
|
-
"enforcer"
|
|
31
|
-
]
|
|
15
|
+
"command": "node",
|
|
16
|
+
"args": ["dist/cli/index.js", "mcp", "enforcer"]
|
|
32
17
|
},
|
|
33
18
|
"xray-orchestrator": {
|
|
34
|
-
"command": "
|
|
35
|
-
"args": [
|
|
36
|
-
"-y",
|
|
37
|
-
"0xray",
|
|
38
|
-
"mcp",
|
|
39
|
-
"orchestrator"
|
|
40
|
-
]
|
|
19
|
+
"command": "node",
|
|
20
|
+
"args": ["dist/cli/index.js", "mcp", "orchestrator"]
|
|
41
21
|
},
|
|
42
22
|
"xray-researcher": {
|
|
43
|
-
"command": "
|
|
44
|
-
"args": [
|
|
45
|
-
"-y",
|
|
46
|
-
"0xray",
|
|
47
|
-
"mcp",
|
|
48
|
-
"researcher"
|
|
49
|
-
]
|
|
23
|
+
"command": "node",
|
|
24
|
+
"args": ["dist/cli/index.js", "mcp", "researcher"]
|
|
50
25
|
},
|
|
51
26
|
"xray-code-review": {
|
|
52
|
-
"command": "
|
|
53
|
-
"args": [
|
|
54
|
-
"-y",
|
|
55
|
-
"0xray",
|
|
56
|
-
"mcp",
|
|
57
|
-
"code-review"
|
|
58
|
-
]
|
|
27
|
+
"command": "node",
|
|
28
|
+
"args": ["dist/cli/index.js", "mcp", "code-review"]
|
|
59
29
|
},
|
|
60
30
|
"xray-architect-tools": {
|
|
61
|
-
"command": "
|
|
62
|
-
"args": [
|
|
63
|
-
"-y",
|
|
64
|
-
"0xray",
|
|
65
|
-
"mcp",
|
|
66
|
-
"architect-tools"
|
|
67
|
-
]
|
|
31
|
+
"command": "node",
|
|
32
|
+
"args": ["dist/cli/index.js", "mcp", "architect-tools"]
|
|
68
33
|
},
|
|
69
34
|
"repertoire": {
|
|
70
35
|
"command": "node",
|
|
71
|
-
"args": [
|
|
72
|
-
"/tmp/xray-v4-validate/node_modules/@0xray/repertoire/dist/mcp/server.js"
|
|
73
|
-
],
|
|
74
|
-
"env": {
|
|
75
|
-
"XRAY_ROOT": "/tmp/xray-v4-validate"
|
|
76
|
-
}
|
|
36
|
+
"args": ["scripts/mjs/run-repertoire-mcp.mjs"]
|
|
77
37
|
}
|
|
78
38
|
}
|
|
79
39
|
}
|
package/.xray/features.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./features.schema.json",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.1",
|
|
4
4
|
"description": "0xRay Framework - Unified Feature Configuration",
|
|
5
5
|
"suit_temperament": {
|
|
6
6
|
"profile": "auto",
|
|
@@ -182,4 +182,4 @@
|
|
|
182
182
|
"onChain": false
|
|
183
183
|
}
|
|
184
184
|
}
|
|
185
|
-
}
|
|
185
|
+
}
|
package/AGENTS-consumer.md
CHANGED
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
Quick reference for the 0xRay AI orchestration framework (shipped to your project on `npm install 0xray`).
|
|
6
6
|
|
|
7
|
-
**v4.0.
|
|
7
|
+
**v4.0.1** — a suit that survives the context window
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Same **three-subsystem OS** as v2 (Inference · External Governance · Autonomous Engine). Constitution always on. Temperament scales ceremony. Four platform bridges. Repertoire organ ships **on** (vendored 0.2); opt out with `"enabled": false, "provider": "repertoire"`. Trim fat, do not gut the design.
|
|
10
10
|
|
|
11
11
|
**Governance always on** (Codex PreToolUse, no new surface, no `eval`). **Engine ceremony** (analyze-complexity before spawn, confer) is **guided** by default so free-model OpenCode/Hermes stay in check. Frontier hosts (Grok 4.6 class) with `suit_temperament.profile: auto` **warn** on spawn-without-plan instead of deny — the engine is still there. Existing `.xray/features.json` without `suit_temperament` stays **guided**. Docs: v3 from v2 · Suit temperament.
|
|
12
12
|
|
|
@@ -63,7 +63,7 @@ Governance deliberation uses **code-review**, **security-audit** (via enforcer/s
|
|
|
63
63
|
|
|
64
64
|
xray operates under the three-subsystem model: **Inference** + **External Governance** (Dynamo Solar SSOT) + **Autonomous Engine** (thinDispatch 7-flow in MCP orchestrator). All actions are validated against the Universal Development Codex before execution.
|
|
65
65
|
|
|
66
|
-
**Codex**: `.xray/codex.json` — **
|
|
66
|
+
**Codex**: `.xray/codex.json` — **69 terms** across all agent interactions.
|
|
67
67
|
|
|
68
68
|
## thinDispatch Routing
|
|
69
69
|
|
package/AGENTS.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# xray Agents
|
|
2
2
|
|
|
3
|
-
Quick reference for the xray AI orchestration framework (**v4.0.
|
|
3
|
+
Quick reference for the xray AI orchestration framework (**v4.0.1**).
|
|
4
4
|
|
|
5
|
-
**v4.0.
|
|
5
|
+
**v4.0.1** — a suit that survives the context window.
|
|
6
6
|
|
|
7
7
|
**Exo, not catalog.** Three-subsystem OS (Inference · External Governance · Autonomous Engine) · constitution always on · temperament by host · 4 floors · Repertoire when it resolves.
|
|
8
8
|
|
|
@@ -16,7 +16,7 @@ Before other work, Read `.xray/state/STATION.md`. Compaction and host change are
|
|
|
16
16
|
|
|
17
17
|
xray provides intelligent multi-agent orchestration with automatic delegation and Codex compliance validation under the pure v2 three-subsystem model:
|
|
18
18
|
|
|
19
|
-
- **Inference** — proposals, reflection, memory routing (
|
|
19
|
+
- **Inference** — proposals, reflection, memory routing (Repertoire organ on in 4.0)
|
|
20
20
|
- **External Governance** — Dynamo Solar SSOT, 69-term Codex
|
|
21
21
|
- **Autonomous Engine** — thinDispatch 7-flow, AsideContext, confidence gate
|
|
22
22
|
|
|
@@ -38,12 +38,12 @@ Registered in `.mcp.json`, invoked via `npx -y 0xray mcp <cmd>`:
|
|
|
38
38
|
|
|
39
39
|
Governance deliberation: **code-review**, **security-audit**, **researcher** within the 7-server set.
|
|
40
40
|
|
|
41
|
-
## Postinstall (
|
|
41
|
+
## Postinstall (v4.0.1)
|
|
42
42
|
|
|
43
43
|
`postinstall.cjs` → `installAllBridges()`:
|
|
44
44
|
|
|
45
45
|
1. `AGENTS-consumer.md` → `AGENTS.md`
|
|
46
|
-
2. `SKILLS.md` +
|
|
46
|
+
2. `SKILLS.md` + 45 skills → platform skill directories
|
|
47
47
|
3. `.gitignore.default` → `.gitignore` (if absent)
|
|
48
48
|
4. `.xray/` config (`codex.json`, `features.json`, `config.json`)
|
|
49
49
|
5. `.mcp.json` (7 servers)
|
|
@@ -58,11 +58,11 @@ Governance deliberation: **code-review**, **security-audit**, **researcher** wit
|
|
|
58
58
|
"memory_routing": {
|
|
59
59
|
"enabled": true,
|
|
60
60
|
"provider": "repertoire",
|
|
61
|
-
"module_path": "
|
|
61
|
+
"module_path": "node_modules/@0xray/repertoire/dist/provider/memory-routing-provider.js",
|
|
62
62
|
"config": {
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"
|
|
63
|
+
"signalsPath": "node_modules/@0xray/repertoire/data/curated_signals.json",
|
|
64
|
+
"statePath": ".xray/state/repertoire/inference-state.json",
|
|
65
|
+
"feedbackDir": ".xray/state/repertoire/feedback"
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
```
|
package/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# xray — exo for coding agents
|
|
2
2
|
|
|
3
|
-
**v4.0.
|
|
3
|
+
**v4.0.1** — a suit that survives the context window
|
|
4
|
+
|
|
5
|
+

|
|
4
6
|
|
|
5
7
|
Not a catalog of agents. The product is the **skeleton you wear**.
|
|
6
8
|
|
|
@@ -48,7 +50,7 @@ Docs: [guides/autonomy-command](docs-site/docs/guides/autonomy-command.md) · Sk
|
|
|
48
50
|
|
|
49
51
|
| Version | Highlights |
|
|
50
52
|
|---------|------------|
|
|
51
|
-
| **4.0.0** | Exo + temperament. Constitution always on; ceremony by host. Repertoire
|
|
53
|
+
| **4.0.0** | Exo + temperament. Constitution always on; ceremony by host. Repertoire organ on (vendored 0.2). Station card survives compact/host-swap. **On npm.** [vision](docs-site/docs/architecture/v4-vision.md) · [now](docs-site/docs/architecture/v4-now.md) |
|
|
52
54
|
| **3.4.1** | Unified `install-bridges.cjs` on postinstall — OpenCode, Grok, Hermes, OpenClaw in one pass. All 7 MCPs servers via `npx -y 0xray mcp <cmd>` (no `dist/` paths). Canonical `release.mjs` pipeline. |
|
|
53
55
|
| **3.3.1** | Orchestrator confidence gate wired into execution planning. |
|
|
54
56
|
| **3.3.0** | Pluggable **Memory Routing** (`features.json` → `memory_routing`). Repertoire is the default provider in the framework repo. |
|
|
@@ -149,11 +151,11 @@ Pluggable `memory_routing` block in `features.json` (validated by `features.sche
|
|
|
149
151
|
"memory_routing": {
|
|
150
152
|
"enabled": true,
|
|
151
153
|
"provider": "repertoire",
|
|
152
|
-
"module_path": "
|
|
154
|
+
"module_path": "node_modules/@0xray/repertoire/dist/provider/memory-routing-provider.js",
|
|
153
155
|
"config": {
|
|
154
|
-
"
|
|
155
|
-
"
|
|
156
|
-
"
|
|
156
|
+
"signalsPath": "node_modules/@0xray/repertoire/data/curated_signals.json",
|
|
157
|
+
"statePath": ".xray/state/repertoire/inference-state.json",
|
|
158
|
+
"feedbackDir": ".xray/state/repertoire/feedback"
|
|
157
159
|
}
|
|
158
160
|
}
|
|
159
161
|
```
|
|
@@ -183,7 +185,7 @@ Docs: [memory routing](docs-site/docs/guides/memory-routing.md) · [Repertoire](
|
|
|
183
185
|
|
|
184
186
|
## Governance & Codex
|
|
185
187
|
|
|
186
|
-
- **
|
|
188
|
+
- **69 terms** in `.xray/codex.json` — core, architecture, testing, performance, security, operations, governance (Codex 69: no new MCP/skill/handler surface)
|
|
187
189
|
- CodexPolicyService — Governance-owned SSOT for codex loading
|
|
188
190
|
- Pre-governance gate blocks non-compliant proposals
|
|
189
191
|
- Active codex snapshot via `get_active_codex` MCP tool
|
|
@@ -191,27 +193,25 @@ Docs: [memory routing](docs-site/docs/guides/memory-routing.md) · [Repertoire](
|
|
|
191
193
|
|
|
192
194
|
## Testing
|
|
193
195
|
|
|
194
|
-
| Suite | Status (
|
|
196
|
+
| Suite | Status (v4.0.1) |
|
|
195
197
|
|-------|-----------------|
|
|
196
|
-
|
|
|
197
|
-
|
|
|
198
|
-
| Grok CLI E2E | 62/0 failures (v3.2.0 verified) |
|
|
199
|
-
| OpenClaw E2E | 9/9 (v3.2.0 verified) |
|
|
200
|
-
| Hermes E2E | 44/0/0 (v3.2.0 verified) |
|
|
201
|
-
| Consumer smoke | `npm run release:gate` — pack → clean install → 7 MCPs + 4 bridges |
|
|
198
|
+
| Four-floor consumer e2e | OpenCode 34/0 · Grok 63/0 · Hermes 39/0/2 · OpenClaw 96/0/1 (npm 4.0.0 pack) |
|
|
199
|
+
| Consumer smoke | `npm run release:gate` — pack → clean install → 7 MCPs + 4 bridges + organ on |
|
|
202
200
|
|
|
203
201
|
```bash
|
|
204
202
|
npm test
|
|
205
|
-
npm run release:gate # full release gate
|
|
203
|
+
npm run release:gate # full release gate (before upload)
|
|
204
|
+
npm run release:npm # gate + prepare + npm publish --access public
|
|
206
205
|
```
|
|
207
206
|
|
|
208
207
|
## Release
|
|
209
208
|
|
|
209
|
+
Product **4.0.0** is on npm. Do **not** run `release:major` to ship a 4.x fix (that becomes 5.0.0). Do **not** put a `scripts.publish` lifecycle that re-runs the gate after the registry PUT.
|
|
210
|
+
|
|
210
211
|
```bash
|
|
211
|
-
npm run release:
|
|
212
|
-
npm run release:
|
|
213
|
-
npm run release:
|
|
214
|
-
npm run release:patch -- --dry-run
|
|
212
|
+
npm run release:gate
|
|
213
|
+
npm run release:npm # after gate is green; uses npm publish --access public
|
|
214
|
+
npm run release:patch # version bump pipeline (not for a already-bumped 4.0.0)
|
|
215
215
|
```
|
|
216
216
|
|
|
217
217
|
Pipeline: reconcile-version → release-gate (build + test + consumer smoke) → CHANGELOG/README/AGENTS artifacts → commit → tag → npm publish.
|
package/SKILLS.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 0xray Skills
|
|
2
2
|
|
|
3
|
-
**v4.0.
|
|
3
|
+
**v4.0.1** — **45 skills** · invoked via `xray-skills` MCP · synced on postinstall
|
|
4
4
|
|
|
5
5
|
xray ships 45 knowledge skills (`src/skills/<name>/SKILL.md`) across the full software lifecycle. Lead-dev operating model lives in **`orchestrator`** skill + `multi_agent_orchestration.lead_dev_mode` in features.json. Skills load on demand via the **xray-skills** MCP server (`npx -y 0xray mcp skills`), agent `@mentions`, or platform skill directories after postinstall.
|
|
6
6
|
|
|
@@ -157,7 +157,7 @@ npx 0xray skill:install <source>
|
|
|
157
157
|
|---------|------------------|
|
|
158
158
|
| **Memory routing** (v3.3) | Researcher uses Repertoire signals; optional `@0xray/repertoire` MCP |
|
|
159
159
|
| **AsideContext** (v3.2) | Orchestrator subcontexts during skill dispatch |
|
|
160
|
-
| **7 MCP servers** (
|
|
160
|
+
| **7 MCP servers** (v4.0.1) | `xray-skills` is the primary skill invocation surface |
|
|
161
161
|
|
|
162
162
|
Docs: [AGENTS.md](AGENTS.md) · [README.md](README.md) · [Docusaurus guides](docs-site/docs/guides/)
|
|
163
163
|
|
package/dist/AGENTS.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# xray Agents
|
|
2
2
|
|
|
3
|
-
Quick reference for the xray AI orchestration framework (**v4.0.
|
|
3
|
+
Quick reference for the xray AI orchestration framework (**v4.0.1**).
|
|
4
4
|
|
|
5
|
-
**v4.0.
|
|
5
|
+
**v4.0.1** — a suit that survives the context window.
|
|
6
6
|
|
|
7
7
|
**Exo, not catalog.** Three-subsystem OS (Inference · External Governance · Autonomous Engine) · constitution always on · temperament by host · 4 floors · Repertoire when it resolves.
|
|
8
8
|
|
|
@@ -16,7 +16,7 @@ Before other work, Read `.xray/state/STATION.md`. Compaction and host change are
|
|
|
16
16
|
|
|
17
17
|
xray provides intelligent multi-agent orchestration with automatic delegation and Codex compliance validation under the pure v2 three-subsystem model:
|
|
18
18
|
|
|
19
|
-
- **Inference** — proposals, reflection, memory routing (
|
|
19
|
+
- **Inference** — proposals, reflection, memory routing (Repertoire organ on in 4.0)
|
|
20
20
|
- **External Governance** — Dynamo Solar SSOT, 69-term Codex
|
|
21
21
|
- **Autonomous Engine** — thinDispatch 7-flow, AsideContext, confidence gate
|
|
22
22
|
|
|
@@ -38,12 +38,12 @@ Registered in `.mcp.json`, invoked via `npx -y 0xray mcp <cmd>`:
|
|
|
38
38
|
|
|
39
39
|
Governance deliberation: **code-review**, **security-audit**, **researcher** within the 7-server set.
|
|
40
40
|
|
|
41
|
-
## Postinstall (
|
|
41
|
+
## Postinstall (v4.0.1)
|
|
42
42
|
|
|
43
43
|
`postinstall.cjs` → `installAllBridges()`:
|
|
44
44
|
|
|
45
45
|
1. `AGENTS-consumer.md` → `AGENTS.md`
|
|
46
|
-
2. `SKILLS.md` +
|
|
46
|
+
2. `SKILLS.md` + 45 skills → platform skill directories
|
|
47
47
|
3. `.gitignore.default` → `.gitignore` (if absent)
|
|
48
48
|
4. `.xray/` config (`codex.json`, `features.json`, `config.json`)
|
|
49
49
|
5. `.mcp.json` (7 servers)
|
|
@@ -58,11 +58,11 @@ Governance deliberation: **code-review**, **security-audit**, **researcher** wit
|
|
|
58
58
|
"memory_routing": {
|
|
59
59
|
"enabled": true,
|
|
60
60
|
"provider": "repertoire",
|
|
61
|
-
"module_path": "
|
|
61
|
+
"module_path": "node_modules/@0xray/repertoire/dist/provider/memory-routing-provider.js",
|
|
62
62
|
"config": {
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"
|
|
63
|
+
"signalsPath": "node_modules/@0xray/repertoire/data/curated_signals.json",
|
|
64
|
+
"statePath": ".xray/state/repertoire/inference-state.json",
|
|
65
|
+
"feedbackDir": ".xray/state/repertoire/feedback"
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
```
|
package/dist/CHANGELOG.md
CHANGED
|
@@ -4,9 +4,25 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The format is based on [Conventional Commits](https://www.conventionalcommits.org/).
|
|
6
6
|
|
|
7
|
-
## [4.0.
|
|
7
|
+
## [4.0.1] - 2026-09-02
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Patch on the 4.0 temperament line. npm **4.0.0** stays latest until this tag publishes.
|
|
10
|
+
|
|
11
|
+
### 🐛 Bug Fixes
|
|
12
|
+
- CLI `-V` / `--version` no longer dumps a Commander stack after `exitOverride`
|
|
13
|
+
- Hermes: post-processor logs `[nudge]`; e2e calls `session-start`
|
|
14
|
+
- OpenClaw e2e reads `plugins.entries` (OpenClaw 2026.8.2)
|
|
15
|
+
- Release gate: consumer smoke expects organ **on**; no `scripts.publish` after the registry PUT; reconcile allows tagged-but-unpublished
|
|
16
|
+
|
|
17
|
+
### 📚 Documentation
|
|
18
|
+
- Archive catalog / enterprise Docusaurus boiler; live site is exo wear
|
|
19
|
+
- Version-manager stamps live Docusaurus kernel headers (no archived `docs-site/docs/README.md`)
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## [4.0.0] - 2026-09-02
|
|
24
|
+
|
|
25
|
+
First ship of the **temperament** line on the **v2 three-subsystem OS** (Inference · External Governance · Autonomous Engine). npm **4.0.0**. Tag `v4.0.0` on `0xRayAI/xray` `main` (`f80b42c`).
|
|
10
26
|
|
|
11
27
|
### ✨ Features
|
|
12
28
|
- **Factory memory organ** — `@0xray/repertoire@0.2.0` vendored as a runtime dependency. Shipped `memory_routing` is **on** (8 factory primitives). Extra host MCP stays `repertoire`, not an 8th `xray-*` server. Compact ingest writes `.xray/state/repertoire/`. Explicit opt-out: `enabled: false` + `provider: "repertoire"`.
|
package/dist/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# xray — exo for coding agents
|
|
2
2
|
|
|
3
|
-
**v4.0.
|
|
3
|
+
**v4.0.1** — a suit that survives the context window
|
|
4
|
+
|
|
5
|
+

|
|
4
6
|
|
|
5
7
|
Not a catalog of agents. The product is the **skeleton you wear**.
|
|
6
8
|
|
|
@@ -48,7 +50,7 @@ Docs: [guides/autonomy-command](docs-site/docs/guides/autonomy-command.md) · Sk
|
|
|
48
50
|
|
|
49
51
|
| Version | Highlights |
|
|
50
52
|
|---------|------------|
|
|
51
|
-
| **4.0.0** | Exo + temperament. Constitution always on; ceremony by host. Repertoire
|
|
53
|
+
| **4.0.0** | Exo + temperament. Constitution always on; ceremony by host. Repertoire organ on (vendored 0.2). Station card survives compact/host-swap. **On npm.** [vision](docs-site/docs/architecture/v4-vision.md) · [now](docs-site/docs/architecture/v4-now.md) |
|
|
52
54
|
| **3.4.1** | Unified `install-bridges.cjs` on postinstall — OpenCode, Grok, Hermes, OpenClaw in one pass. All 7 MCPs servers via `npx -y 0xray mcp <cmd>` (no `dist/` paths). Canonical `release.mjs` pipeline. |
|
|
53
55
|
| **3.3.1** | Orchestrator confidence gate wired into execution planning. |
|
|
54
56
|
| **3.3.0** | Pluggable **Memory Routing** (`features.json` → `memory_routing`). Repertoire is the default provider in the framework repo. |
|
|
@@ -149,11 +151,11 @@ Pluggable `memory_routing` block in `features.json` (validated by `features.sche
|
|
|
149
151
|
"memory_routing": {
|
|
150
152
|
"enabled": true,
|
|
151
153
|
"provider": "repertoire",
|
|
152
|
-
"module_path": "
|
|
154
|
+
"module_path": "node_modules/@0xray/repertoire/dist/provider/memory-routing-provider.js",
|
|
153
155
|
"config": {
|
|
154
|
-
"
|
|
155
|
-
"
|
|
156
|
-
"
|
|
156
|
+
"signalsPath": "node_modules/@0xray/repertoire/data/curated_signals.json",
|
|
157
|
+
"statePath": ".xray/state/repertoire/inference-state.json",
|
|
158
|
+
"feedbackDir": ".xray/state/repertoire/feedback"
|
|
157
159
|
}
|
|
158
160
|
}
|
|
159
161
|
```
|
|
@@ -183,7 +185,7 @@ Docs: [memory routing](docs-site/docs/guides/memory-routing.md) · [Repertoire](
|
|
|
183
185
|
|
|
184
186
|
## Governance & Codex
|
|
185
187
|
|
|
186
|
-
- **
|
|
188
|
+
- **69 terms** in `.xray/codex.json` — core, architecture, testing, performance, security, operations, governance (Codex 69: no new MCP/skill/handler surface)
|
|
187
189
|
- CodexPolicyService — Governance-owned SSOT for codex loading
|
|
188
190
|
- Pre-governance gate blocks non-compliant proposals
|
|
189
191
|
- Active codex snapshot via `get_active_codex` MCP tool
|
|
@@ -191,27 +193,25 @@ Docs: [memory routing](docs-site/docs/guides/memory-routing.md) · [Repertoire](
|
|
|
191
193
|
|
|
192
194
|
## Testing
|
|
193
195
|
|
|
194
|
-
| Suite | Status (
|
|
196
|
+
| Suite | Status (v4.0.1) |
|
|
195
197
|
|-------|-----------------|
|
|
196
|
-
|
|
|
197
|
-
|
|
|
198
|
-
| Grok CLI E2E | 62/0 failures (v3.2.0 verified) |
|
|
199
|
-
| OpenClaw E2E | 9/9 (v3.2.0 verified) |
|
|
200
|
-
| Hermes E2E | 44/0/0 (v3.2.0 verified) |
|
|
201
|
-
| Consumer smoke | `npm run release:gate` — pack → clean install → 7 MCPs + 4 bridges |
|
|
198
|
+
| Four-floor consumer e2e | OpenCode 34/0 · Grok 63/0 · Hermes 39/0/2 · OpenClaw 96/0/1 (npm 4.0.0 pack) |
|
|
199
|
+
| Consumer smoke | `npm run release:gate` — pack → clean install → 7 MCPs + 4 bridges + organ on |
|
|
202
200
|
|
|
203
201
|
```bash
|
|
204
202
|
npm test
|
|
205
|
-
npm run release:gate # full release gate
|
|
203
|
+
npm run release:gate # full release gate (before upload)
|
|
204
|
+
npm run release:npm # gate + prepare + npm publish --access public
|
|
206
205
|
```
|
|
207
206
|
|
|
208
207
|
## Release
|
|
209
208
|
|
|
209
|
+
Product **4.0.0** is on npm. Do **not** run `release:major` to ship a 4.x fix (that becomes 5.0.0). Do **not** put a `scripts.publish` lifecycle that re-runs the gate after the registry PUT.
|
|
210
|
+
|
|
210
211
|
```bash
|
|
211
|
-
npm run release:
|
|
212
|
-
npm run release:
|
|
213
|
-
npm run release:
|
|
214
|
-
npm run release:patch -- --dry-run
|
|
212
|
+
npm run release:gate
|
|
213
|
+
npm run release:npm # after gate is green; uses npm publish --access public
|
|
214
|
+
npm run release:patch # version bump pipeline (not for a already-bumped 4.0.0)
|
|
215
215
|
```
|
|
216
216
|
|
|
217
217
|
Pipeline: reconcile-version → release-gate (build + test + consumer smoke) → CHANGELOG/README/AGENTS artifacts → commit → tag → npm publish.
|
package/dist/SKILLS.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 0xray Skills
|
|
2
2
|
|
|
3
|
-
**v4.0.
|
|
3
|
+
**v4.0.1** — **45 skills** · invoked via `xray-skills` MCP · synced on postinstall
|
|
4
4
|
|
|
5
5
|
xray ships 45 knowledge skills (`src/skills/<name>/SKILL.md`) across the full software lifecycle. Lead-dev operating model lives in **`orchestrator`** skill + `multi_agent_orchestration.lead_dev_mode` in features.json. Skills load on demand via the **xray-skills** MCP server (`npx -y 0xray mcp skills`), agent `@mentions`, or platform skill directories after postinstall.
|
|
6
6
|
|
|
@@ -157,7 +157,7 @@ npx 0xray skill:install <source>
|
|
|
157
157
|
|---------|------------------|
|
|
158
158
|
| **Memory routing** (v3.3) | Researcher uses Repertoire signals; optional `@0xray/repertoire` MCP |
|
|
159
159
|
| **AsideContext** (v3.2) | Orchestrator subcontexts during skill dispatch |
|
|
160
|
-
| **7 MCP servers** (
|
|
160
|
+
| **7 MCP servers** (v4.0.1) | `xray-skills` is the primary skill invocation surface |
|
|
161
161
|
|
|
162
162
|
Docs: [AGENTS.md](AGENTS.md) · [README.md](README.md) · [Docusaurus guides](docs-site/docs/guides/)
|
|
163
163
|
|
package/dist/cli/index.js
CHANGED
|
@@ -984,4 +984,13 @@ For more information, visit: https://github.com/0xRayAI/xray
|
|
|
984
984
|
`);
|
|
985
985
|
// Parse command line arguments
|
|
986
986
|
program.exitOverride();
|
|
987
|
-
|
|
987
|
+
try {
|
|
988
|
+
program.parse();
|
|
989
|
+
}
|
|
990
|
+
catch (err) {
|
|
991
|
+
const code = err && typeof err === 'object' && 'code' in err ? String(err.code) : '';
|
|
992
|
+
if (code === 'commander.helpDisplayed' || code === 'commander.help' || code === 'commander.version') {
|
|
993
|
+
process.exit(0);
|
|
994
|
+
}
|
|
995
|
+
throw err;
|
|
996
|
+
}
|
|
@@ -332,6 +332,12 @@ async function runProcessors(tool, args, phase, projectRoot, logDir) {
|
|
|
332
332
|
priority: 30,
|
|
333
333
|
enabled: true,
|
|
334
334
|
});
|
|
335
|
+
processorManager.registerProcessor({
|
|
336
|
+
name: "nudge",
|
|
337
|
+
type: "post",
|
|
338
|
+
priority: 78,
|
|
339
|
+
enabled: true,
|
|
340
|
+
});
|
|
335
341
|
}
|
|
336
342
|
|
|
337
343
|
let results;
|
|
@@ -512,6 +518,7 @@ async function handlePostProcess(input, projectRoot, logDir) {
|
|
|
512
518
|
});
|
|
513
519
|
|
|
514
520
|
logToActivity(logDir, `post-process: complete duration=${duration}ms processors=${processorResult.success}`);
|
|
521
|
+
logToActivity(logDir, `[nudge] post-process tool=${tool}`);
|
|
515
522
|
|
|
516
523
|
// Log routing outcome for test verification
|
|
517
524
|
logRoutingOutcome(logDir, {
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xray-pre-tool",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.1",
|
|
4
4
|
"private": true,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "0xRay constitution + temperament PreToolUse for OpenClaw",
|
|
7
7
|
"openclaw": {
|
|
8
|
-
"extensions": [
|
|
8
|
+
"extensions": [
|
|
9
|
+
"./index.js"
|
|
10
|
+
]
|
|
9
11
|
}
|
|
10
12
|
}
|
package/opencode.json
CHANGED
|
@@ -96,14 +96,6 @@
|
|
|
96
96
|
"architect-tools"
|
|
97
97
|
],
|
|
98
98
|
"enabled": true
|
|
99
|
-
},
|
|
100
|
-
"repertoire": {
|
|
101
|
-
"type": "local",
|
|
102
|
-
"command": [
|
|
103
|
-
"node",
|
|
104
|
-
"/tmp/xray-v4-validate/node_modules/@0xray/repertoire/dist/mcp/server.js"
|
|
105
|
-
],
|
|
106
|
-
"enabled": true
|
|
107
99
|
}
|
|
108
100
|
},
|
|
109
101
|
"agent": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "0xray",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.1",
|
|
4
4
|
"description": "Multi-agent orchestration and Codex governance for OpenCode, Hermes, Grok Build, and OpenClaw",
|
|
5
5
|
"readme": "README.md",
|
|
6
6
|
"license": "MIT",
|
|
@@ -124,7 +124,7 @@
|
|
|
124
124
|
"release:docs-check": "node scripts/node/validate-release-docs.mjs",
|
|
125
125
|
"pre-publish-guard": "node scripts/node/pre-publish-guard.js",
|
|
126
126
|
"safe-publish": "npm run prepare-consumer && npm run build",
|
|
127
|
-
"
|
|
127
|
+
"release:npm": "npm run release:gate && npm run safe-publish && npm publish --access public",
|
|
128
128
|
"release:patch": "node scripts/node/release.mjs patch",
|
|
129
129
|
"verify:orchestrator-behavior": "npm run build && node scripts/mjs/verify-orchestrator-behavior.mjs",
|
|
130
130
|
"verify:grok-delegation-gate": "npm run build && node scripts/mjs/verify-grok-delegation-gate.mjs && node scripts/mjs/verify-grok-synthesis-gate.mjs",
|
|
@@ -48,9 +48,14 @@ function assertFreshInstallDefaults(tmpRoot, version) {
|
|
|
48
48
|
if (!features.memory_routing) {
|
|
49
49
|
throw new Error("Deployed features.json missing memory_routing block");
|
|
50
50
|
}
|
|
51
|
-
if (features.memory_routing.enabled !==
|
|
51
|
+
if (features.memory_routing.enabled !== true) {
|
|
52
52
|
throw new Error(
|
|
53
|
-
`Fresh install must
|
|
53
|
+
`Fresh 4.0 install must ship memory_routing.enabled=true with the vendored organ (got ${features.memory_routing.enabled})`,
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
if (features.memory_routing.provider !== "repertoire") {
|
|
57
|
+
throw new Error(
|
|
58
|
+
`Fresh install memory_routing.provider must be repertoire (got ${features.memory_routing.provider})`,
|
|
54
59
|
);
|
|
55
60
|
}
|
|
56
61
|
if (!features.inference_governance) {
|
|
@@ -59,6 +64,33 @@ function assertFreshInstallDefaults(tmpRoot, version) {
|
|
|
59
64
|
if (features.inference_governance.enabled !== false) {
|
|
60
65
|
throw new Error("Fresh install must default inference_governance.enabled=false");
|
|
61
66
|
}
|
|
67
|
+
const organHoisted = path.join(tmpRoot, "node_modules", "@0xray", "repertoire", "package.json");
|
|
68
|
+
const organNested = path.join(
|
|
69
|
+
tmpRoot,
|
|
70
|
+
"node_modules",
|
|
71
|
+
"0xray",
|
|
72
|
+
"node_modules",
|
|
73
|
+
"@0xray",
|
|
74
|
+
"repertoire",
|
|
75
|
+
"package.json",
|
|
76
|
+
);
|
|
77
|
+
const organVendor = path.join(
|
|
78
|
+
tmpRoot,
|
|
79
|
+
"node_modules",
|
|
80
|
+
"0xray",
|
|
81
|
+
"vendor",
|
|
82
|
+
"@0xray",
|
|
83
|
+
"repertoire",
|
|
84
|
+
"package.json",
|
|
85
|
+
);
|
|
86
|
+
const organPkg = [organNested, organHoisted, organVendor].find((p) => fs.existsSync(p));
|
|
87
|
+
if (!organPkg) {
|
|
88
|
+
throw new Error("vendored @0xray/repertoire missing from fresh tarball install");
|
|
89
|
+
}
|
|
90
|
+
const organ = JSON.parse(fs.readFileSync(organPkg, "utf-8"));
|
|
91
|
+
if (organ.version !== "0.2.0") {
|
|
92
|
+
throw new Error(`expected organ 0.2.0, got ${organ.version}`);
|
|
93
|
+
}
|
|
62
94
|
console.log(" ✅ .xray/features.json fresh-install defaults (opt-in off)");
|
|
63
95
|
return { consumerFeaturesPath, features };
|
|
64
96
|
}
|
|
@@ -114,6 +146,27 @@ function runUpgradeMergeSmoke(tmpRoot, nmRoot, version) {
|
|
|
114
146
|
if (shippedMarker && !merged[shippedMarker]) {
|
|
115
147
|
throw new Error(`Upgrade merge missing shipped template key: ${shippedMarker}`);
|
|
116
148
|
}
|
|
149
|
+
fs.writeFileSync(
|
|
150
|
+
consumerFeaturesPath,
|
|
151
|
+
`${JSON.stringify(
|
|
152
|
+
{
|
|
153
|
+
version: "3.5.5",
|
|
154
|
+
memory_routing: { enabled: false, provider: "repertoire" },
|
|
155
|
+
},
|
|
156
|
+
null,
|
|
157
|
+
2,
|
|
158
|
+
)}\n`,
|
|
159
|
+
);
|
|
160
|
+
deployXrayConfig(tmpRoot, nmRoot, () => {});
|
|
161
|
+
const optedOut = JSON.parse(fs.readFileSync(consumerFeaturesPath, "utf-8"));
|
|
162
|
+
if (optedOut.memory_routing?.enabled !== false) {
|
|
163
|
+
throw new Error(
|
|
164
|
+
`Upgrade merge must keep explicit memory_routing opt-out (got ${optedOut.memory_routing?.enabled})`,
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
if (optedOut.memory_routing?.provider !== "repertoire") {
|
|
168
|
+
throw new Error("Upgrade merge dropped memory_routing.provider on opt-out");
|
|
169
|
+
}
|
|
117
170
|
|
|
118
171
|
console.log(" ✅ upgrade merge preserves opt-ins + bumps features.version");
|
|
119
172
|
}
|
|
@@ -131,10 +131,6 @@ function main() {
|
|
|
131
131
|
fail(`package.json (${local}) is behind latest tag v${tag}`);
|
|
132
132
|
}
|
|
133
133
|
|
|
134
|
-
if (tag && compare(local, tag) === 0 && compare(npm, local) < 0) {
|
|
135
|
-
fail(`tag v${tag} exists but npm is only ${npm} — publish or retag`);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
134
|
if (tag && compare(local, tag) > 0 && compare(npm, tag) === 0) {
|
|
139
135
|
console.log(`✅ Ready to tag v${local} (npm at ${npm})`);
|
|
140
136
|
} else if (compare(local, npm) > 0) {
|
|
@@ -152,7 +152,7 @@ const OFFICIAL_VERSIONS = {
|
|
|
152
152
|
framework: {
|
|
153
153
|
version: PACKAGE_VERSION,
|
|
154
154
|
displayName: "xray: Self-Healing AI Governance OS",
|
|
155
|
-
lastUpdated: "2026-
|
|
155
|
+
lastUpdated: "2026-09-02",
|
|
156
156
|
// Counts (auto-calculated, but can be overridden)
|
|
157
157
|
...CALCULATED_COUNTS,
|
|
158
158
|
},
|
|
@@ -320,11 +320,13 @@ function updateReadme(counts, newVersion) {
|
|
|
320
320
|
}
|
|
321
321
|
|
|
322
322
|
export const DOCS_SITE_HEADER_FILES = [
|
|
323
|
-
'docs-site/docs/README.md',
|
|
324
323
|
'docs-site/docs/index.md',
|
|
325
324
|
'docs-site/docs/introduction.md',
|
|
326
325
|
'docs-site/docs/guides/getting-started.md',
|
|
327
326
|
'docs-site/docs/full-reference.md',
|
|
327
|
+
'docs-site/docs/architecture/GROK_GUIDE.md',
|
|
328
|
+
'docs-site/docs/mcp/README.md',
|
|
329
|
+
'docs-site/docs/agents/README.md',
|
|
328
330
|
];
|
|
329
331
|
|
|
330
332
|
export function buildDocsHeader(_counts, newVersion) {
|
|
@@ -356,6 +358,22 @@ function updatePluginJsonVersion(newVersion) {
|
|
|
356
358
|
console.log(`✅ Updated .grok-plugin/plugin.json (version: ${newVersion})`);
|
|
357
359
|
}
|
|
358
360
|
|
|
361
|
+
function updateJsonVersionField(relPath, newVersion) {
|
|
362
|
+
const full = path.join(rootDir, relPath);
|
|
363
|
+
if (!fs.existsSync(full)) return;
|
|
364
|
+
const data = JSON.parse(fs.readFileSync(full, 'utf-8'));
|
|
365
|
+
data.version = newVersion;
|
|
366
|
+
fs.writeFileSync(full, JSON.stringify(data, null, 2) + '\n');
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
function updateFeaturesJsonVersion(newVersion) {
|
|
370
|
+
updateJsonVersionField('xray/features.json', newVersion);
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
function updateOpenclawPluginVersion(newVersion) {
|
|
374
|
+
updateJsonVersionField('src/integrations/openclaw/plugin/xray-pre-tool/package.json', newVersion);
|
|
375
|
+
}
|
|
376
|
+
|
|
359
377
|
function updateConsumerAgentsHeader(newVersion, counts) {
|
|
360
378
|
const consumerPath = path.join(rootDir, 'AGENTS-consumer.md');
|
|
361
379
|
if (!fs.existsSync(consumerPath)) return;
|
|
@@ -401,15 +419,20 @@ function applyAgentCountUpdates(content, counts) {
|
|
|
401
419
|
/**
|
|
402
420
|
* Update AGENTS.md with actual framework counts
|
|
403
421
|
*/
|
|
404
|
-
function updateAgentsMd(counts) {
|
|
422
|
+
function updateAgentsMd(counts, newVersion = getCurrentVersion()) {
|
|
405
423
|
const agentsPath = path.join(rootDir, 'AGENTS.md');
|
|
406
424
|
if (!fs.existsSync(agentsPath)) {
|
|
407
|
-
console.log(`⚠️ AGENTS.md not found, skipping`);
|
|
408
425
|
return;
|
|
409
426
|
}
|
|
410
427
|
|
|
411
|
-
|
|
412
|
-
|
|
428
|
+
let agentsMd = applyAgentCountUpdates(fs.readFileSync(agentsPath, 'utf-8'), counts);
|
|
429
|
+
agentsMd = agentsMd.replace(/\(\*\*v[\d.]+\*\*\)/, `(**v${newVersion}**)`);
|
|
430
|
+
agentsMd = agentsMd.replace(
|
|
431
|
+
/^\*\*v[\d.]+\*\* — a suit that survives the context window\.?$/m,
|
|
432
|
+
buildDocsHeader(counts, newVersion),
|
|
433
|
+
);
|
|
434
|
+
agentsMd = agentsMd.replace(/^## Postinstall \(v[\d.]+\)$/m, `## Postinstall (v${newVersion})`);
|
|
435
|
+
fs.writeFileSync(agentsPath, agentsMd);
|
|
413
436
|
}
|
|
414
437
|
|
|
415
438
|
function updateAgentsConsumerMd(counts) {
|
|
@@ -516,8 +539,10 @@ function updateVersion(newVersion, changeDescription = '') {
|
|
|
516
539
|
updateReadme(counts, newVersion);
|
|
517
540
|
syncDocsSiteHeaders(counts, newVersion);
|
|
518
541
|
updatePluginJsonVersion(newVersion);
|
|
542
|
+
updateFeaturesJsonVersion(newVersion);
|
|
543
|
+
updateOpenclawPluginVersion(newVersion);
|
|
519
544
|
updateConsumerAgentsHeader(newVersion, counts);
|
|
520
|
-
updateAgentsMd(counts);
|
|
545
|
+
updateAgentsMd(counts, newVersion);
|
|
521
546
|
updateAgentsConsumerMd(counts);
|
|
522
547
|
updateSkillsMd(counts, newVersion);
|
|
523
548
|
|
|
@@ -555,7 +580,6 @@ export function getReleaseArtifactPaths() {
|
|
|
555
580
|
'SKILLS.md',
|
|
556
581
|
'.grok-plugin/plugin.json',
|
|
557
582
|
'docs/README.md',
|
|
558
|
-
'docs-site/docs/README.md',
|
|
559
583
|
'docs-site/docs/index.md',
|
|
560
584
|
'docs-site/docs/introduction.md',
|
|
561
585
|
'docs-site/docs/guides/getting-started.md',
|
|
@@ -569,7 +593,9 @@ export function getReleaseArtifactPaths() {
|
|
|
569
593
|
'docs-site/docs/guides/consumer-migration.md',
|
|
570
594
|
'docs-site/docs/mcp/README.md',
|
|
571
595
|
'docs-site/docs/agents/README.md',
|
|
596
|
+
'docs-site/docs/architecture/GROK_GUIDE.md',
|
|
572
597
|
'docs-site/sidebars.ts',
|
|
598
|
+
'xray/features.json',
|
|
573
599
|
];
|
|
574
600
|
return candidates.filter((rel) => fs.existsSync(path.join(rootDir, rel)));
|
|
575
601
|
}
|
|
@@ -584,9 +610,11 @@ function updateReleaseArtifactsOnly(changeDescription = '') {
|
|
|
584
610
|
updateReadme(counts, current);
|
|
585
611
|
syncDocsSiteHeaders(counts, current);
|
|
586
612
|
updatePluginJsonVersion(current);
|
|
613
|
+
updateFeaturesJsonVersion(current);
|
|
614
|
+
updateOpenclawPluginVersion(current);
|
|
587
615
|
updateConsumerAgentsHeader(current, counts);
|
|
588
616
|
updateDocsReadme(current);
|
|
589
|
-
updateAgentsMd(counts);
|
|
617
|
+
updateAgentsMd(counts, current);
|
|
590
618
|
updateAgentsConsumerMd(counts);
|
|
591
619
|
updateSkillsMd(counts, current);
|
|
592
620
|
runReleaseDocsValidation();
|
|
@@ -648,6 +676,8 @@ function main() {
|
|
|
648
676
|
updateReadme(counts, current);
|
|
649
677
|
syncDocsSiteHeaders(counts, current);
|
|
650
678
|
updatePluginJsonVersion(current);
|
|
679
|
+
updateFeaturesJsonVersion(current);
|
|
680
|
+
updateOpenclawPluginVersion(current);
|
|
651
681
|
updateConsumerAgentsHeader(current, counts);
|
|
652
682
|
updateDocsReadme(current);
|
|
653
683
|
updateAgentsMd(counts);
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xray-pre-tool",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.1",
|
|
4
4
|
"private": true,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "0xRay constitution + temperament PreToolUse for OpenClaw",
|
|
7
7
|
"openclaw": {
|
|
8
|
-
"extensions": [
|
|
8
|
+
"extensions": [
|
|
9
|
+
"./index.js"
|
|
10
|
+
]
|
|
9
11
|
}
|
|
10
12
|
}
|
package/xray/features.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./features.schema.json",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.1",
|
|
4
4
|
"description": "0xRay Framework - Unified Feature Configuration",
|
|
5
5
|
"suit_temperament": {
|
|
6
6
|
"profile": "auto",
|
|
@@ -182,4 +182,4 @@
|
|
|
182
182
|
"onChain": false
|
|
183
183
|
}
|
|
184
184
|
}
|
|
185
|
-
}
|
|
185
|
+
}
|