0xray 4.0.9 → 4.0.11
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/.grok-plugin/plugin.json +20 -0
- package/.xray/features.json +1 -1
- package/AGENTS-consumer.md +1 -0
- package/AGENTS.md +10 -6
- package/README.md +15 -8
- package/SKILLS.md +3 -3
- package/dist/AGENTS.md +10 -6
- package/dist/CHANGELOG.md +26 -0
- package/dist/README.md +15 -8
- package/dist/SKILLS.md +3 -3
- package/dist/governance/llm-governance-provider.js +20 -4
- package/dist/integrations/openclaw/plugin/xray-pre-tool/package.json +1 -1
- package/dist/memory-routing/provider-loader.js +4 -0
- package/llms.txt +59 -0
- package/package.json +5 -3
- package/scripts/foundry/CHANGELOG.md +4 -0
- package/scripts/foundry/README.md +2 -0
- package/scripts/foundry/inspect.mjs +3 -0
- package/scripts/foundry/mint-suit.cjs +60 -2
- package/scripts/foundry/plant/skills/inspect/SKILL.md +1 -1
- package/scripts/foundry/validate-release-docs.mjs +69 -2
- package/scripts/foundry/version-manager.mjs +4 -0
- package/scripts/node/bridge-mcp-wiring.cjs +23 -0
- package/scripts/node/consumer-install-smoke.mjs +82 -14
- package/scripts/node/install-bridges.cjs +4 -0
- package/scripts/node/pack-tmp-suit-proof.mjs +242 -0
- package/scripts/node/wear-vendored-repertoire.cjs +120 -0
- package/src/integrations/openclaw/plugin/xray-pre-tool/package.json +1 -1
- package/xray/features.json +1 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "0xray",
|
|
3
|
+
"version": "4.0.11",
|
|
4
|
+
"description": "0xRay suit for Grok, Hermes, OpenClaw, OpenCode: mill+inspect, Codex, 7 MCP servers. Costume 45/42 is opt-in foundry, not the default wear.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "0xRay AI",
|
|
7
|
+
"url": "https://0xray.ai"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://github.com/0xRayAI/xray",
|
|
10
|
+
"repository": "https://github.com/0xRayAI/xray",
|
|
11
|
+
"keywords": [
|
|
12
|
+
"0xray",
|
|
13
|
+
"mill",
|
|
14
|
+
"inspect",
|
|
15
|
+
"codex",
|
|
16
|
+
"mcp",
|
|
17
|
+
"suit"
|
|
18
|
+
],
|
|
19
|
+
"mcpServers": ".mcp.json"
|
|
20
|
+
}
|
package/.xray/features.json
CHANGED
package/AGENTS-consumer.md
CHANGED
|
@@ -20,6 +20,7 @@ Before other work, Read `.xray/state/STATION.md`. Compaction and host change are
|
|
|
20
20
|
|
|
21
21
|
- Copies this file → **`AGENTS.md`** in your project root
|
|
22
22
|
- Fastens mill plant (`mill` + `inspect`) then overlays **your** `src/skills` (same name wins). `npx @0xray/foundry inspect` runs the mill checks (chat is not a receipt). Does **not** dump 45/42 costume unless `foundry.json` `"costume": true`. Does **not** write root **`SKILLS.md`**
|
|
23
|
+
- Factory shop plant (`shop-extract`, `shop-witness`, `shop-pin` from groover-hangar) is first-class with mill plant. Extra shops: `foundry.json` `"shopPlant"`. Not costume.
|
|
23
24
|
- Seeds **`.gitignore`** (from template, if absent)
|
|
24
25
|
- Deploys **`.xray/`** (`codex.json`, `features.json`, `config.json`) then overlays **your** mill SSOT (`xray/codex.json`, `xray/features.json`, `src/skills`, `src/opencode/agents`; remap with `foundry.json`)
|
|
25
26
|
- Writes **`.mcp.json`** with 7 MCPs servers (`npx -y 0xray mcp …`)
|
package/AGENTS.md
CHANGED
|
@@ -20,7 +20,7 @@ xray provides intelligent multi-agent orchestration with automatic delegation an
|
|
|
20
20
|
- **External Governance** — Dynamo Solar SSOT, 69-term Codex
|
|
21
21
|
- **Autonomous Engine** — thinDispatch 7-flow, AsideContext, confidence gate
|
|
22
22
|
|
|
23
|
-
Agents are declared in `src/opencode/agents/*.yml` — the YML SSOT. Skills live in `src/skills/*/SKILL.md` — see [SKILLS.md](SKILLS.md). Consumer
|
|
23
|
+
Agents are declared in `src/opencode/agents/*.yml` — the YML SSOT. Skills live in `src/skills/*/SKILL.md` — see [SKILLS.md](SKILLS.md) for the exo catalog. Consumer default plant is **mill + inspect**, not a 45-skill sync (`AGENTS-consumer.md` → `AGENTS.md`). Factory hangar shops coexist via shop plant. See [llms.txt](llms.txt).
|
|
24
24
|
|
|
25
25
|
## Consumer MCP surface (7 servers)
|
|
26
26
|
|
|
@@ -42,14 +42,16 @@ Governance deliberation: **code-review**, **security-audit**, **researcher** wit
|
|
|
42
42
|
|
|
43
43
|
`postinstall.cjs` → `installAllBridges()`:
|
|
44
44
|
|
|
45
|
-
1. `AGENTS-consumer.md` → `AGENTS.md`
|
|
46
|
-
2. `
|
|
45
|
+
1. `AGENTS-consumer.md` → `AGENTS.md` (does **not** write consumer-root `SKILLS.md`)
|
|
46
|
+
2. Fasten mill plant (`mill` + `inspect`). Not a 45-skill costume dump unless `foundry.json` `"costume": true`
|
|
47
47
|
3. `.gitignore.default` → `.gitignore` (if absent)
|
|
48
|
-
4. `.xray/` config (`codex.json`, `features.json`, `config.json`)
|
|
48
|
+
4. `.xray/` config (`codex.json`, `features.json`, `config.json`) then overlay their plant
|
|
49
49
|
5. `.mcp.json` (7 servers)
|
|
50
50
|
6. Four bridges: OpenCode, Grok, Hermes, OpenClaw
|
|
51
51
|
7. Optional git hooks
|
|
52
52
|
|
|
53
|
+
**Shop plant:** `shop-extract`, `shop-witness`, `shop-pin` (groover-hangar) are first-class with mill plant. Extra shops: `foundry.json` `shopPlant`. Not `"costume": true`. `npx @0xray/foundry inspect --skip-live` is the receipt.
|
|
54
|
+
|
|
53
55
|
## Memory routing + Repertoire (v3.3+)
|
|
54
56
|
|
|
55
57
|
`xray/features.json` → `memory_routing` (schema: `features.schema.json`):
|
|
@@ -141,7 +143,7 @@ Docs: [guides/autonomy-command](docs-site/docs/guides/autonomy-command.md) · Sk
|
|
|
141
143
|
| Source | `src/` |
|
|
142
144
|
| Config | `.xray/` or `config/` |
|
|
143
145
|
|
|
144
|
-
**Root essentials only:** `README.md`, `CHANGELOG.md`, `package.json`, `AGENTS.md`, `SKILLS.md`, `tsconfig.json`.
|
|
146
|
+
**Root essentials only:** `README.md`, `CHANGELOG.md`, `package.json`, `AGENTS.md`, `SKILLS.md`, `llms.txt`, `tsconfig.json`.
|
|
145
147
|
|
|
146
148
|
## Available agents (42 YML surfaces)
|
|
147
149
|
|
|
@@ -207,6 +209,8 @@ Full skill mapping: [SKILLS.md](SKILLS.md).
|
|
|
207
209
|
|
|
208
210
|
| Topic | Path |
|
|
209
211
|
|-------|------|
|
|
212
|
+
| Agent map (`llms.txt`) | `llms.txt` |
|
|
213
|
+
| Foundry / mill plant | `docs-site/docs/architecture/v4-foundry.md` |
|
|
210
214
|
| Features since 3.1 | `docs-site/docs/guides/features-since-3.1.md` |
|
|
211
215
|
| features.json | `docs-site/docs/guides/features-json.md` |
|
|
212
216
|
| Platform integrations | `docs-site/docs/guides/integrations.md` |
|
|
@@ -218,4 +222,4 @@ Full skill mapping: [SKILLS.md](SKILLS.md).
|
|
|
218
222
|
|
|
219
223
|
## Release artifacts
|
|
220
224
|
|
|
221
|
-
`npm run release:patch` updates: `package.json`, `CHANGELOG.md`, `README.md`, `AGENTS.md`, `AGENTS-consumer.md`, `SKILLS.md`, Docusaurus guides.
|
|
225
|
+
`npm run release:patch` updates: `package.json`, `CHANGELOG.md`, `README.md`, `AGENTS.md`, `AGENTS-consumer.md`, `SKILLS.md`, `llms.txt`, Docusaurus guides.
|
package/README.md
CHANGED
|
@@ -25,9 +25,10 @@ Consumer `npm install 0xray` auto-wires four platform bridges and seven MCP serv
|
|
|
25
25
|
## Quick Start
|
|
26
26
|
|
|
27
27
|
```bash
|
|
28
|
-
npm install 0xray # postinstall: 4 bridges + 7 MCPs + AGENTS.md +
|
|
28
|
+
npm install 0xray # postinstall: mill+inspect plant + 4 bridges + 7 MCPs + AGENTS.md + .mcp.json
|
|
29
29
|
npx 0xray status # verify install
|
|
30
30
|
npx 0xray setup # optional: symlinks, hook extras
|
|
31
|
+
npx @0xray/foundry inspect --skip-live # mill receipt (chat is not a receipt)
|
|
31
32
|
```
|
|
32
33
|
|
|
33
34
|
Manual per-platform install (idempotent, same result as postinstall):
|
|
@@ -50,6 +51,7 @@ Docs: [guides/autonomy-command](docs-site/docs/guides/autonomy-command.md) · Sk
|
|
|
50
51
|
|
|
51
52
|
| Version | Highlights |
|
|
52
53
|
|---------|------------|
|
|
54
|
+
| **Unreleased** | Shop plant first-class (`shop-extract`, `shop-witness`, `shop-pin` + `foundry.json` `shopPlant`). Not `"costume": true`. Root `llms.txt`. Pack→tmp fasten proof. |
|
|
53
55
|
| **4.0.9** | Mill target: postinstall does not mill npm global prefix or `_npx` as a consumer. Isolated HOME skips machine `~/.grok`. |
|
|
54
56
|
| **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) |
|
|
55
57
|
| **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. |
|
|
@@ -100,13 +102,16 @@ Docs: [guides/autonomy-command](docs-site/docs/guides/autonomy-command.md) · Sk
|
|
|
100
102
|
|
|
101
103
|
On `npm install 0xray` in a consumer project, postinstall automatically:
|
|
102
104
|
|
|
103
|
-
1. Copies **`AGENTS-consumer.md` → `AGENTS.md
|
|
104
|
-
2.
|
|
105
|
-
3.
|
|
106
|
-
4.
|
|
107
|
-
5.
|
|
108
|
-
6.
|
|
109
|
-
7.
|
|
105
|
+
1. Copies **`AGENTS-consumer.md` → `AGENTS.md`**. Does **not** write consumer-root **`SKILLS.md`**.
|
|
106
|
+
2. Fastens **mill plant** (`mill` + `inspect`). Not a 45-skill / 42-agent costume dump. `foundry.json` `"costume": true` is the opt-in dump.
|
|
107
|
+
3. Seeds **`.gitignore`** from `.gitignore.default` (if absent)
|
|
108
|
+
4. Deploys **`.xray/`** config (`codex.json`, `features.json`, `config.json`) then overlays **their** plant
|
|
109
|
+
5. Writes project **`.mcp.json`** with 7 MCPs servers (`npx -y 0xray mcp …`)
|
|
110
|
+
6. Installs **4 bridges**: OpenCode, Grok, Hermes, OpenClaw (PPE + wiring; mill plant, not costume)
|
|
111
|
+
7. Factory shop plant (`shop-extract`, `shop-witness`, `shop-pin` from groover-hangar) may coexist when worn. Extra shops: `foundry.json` `shopPlant`. Not costume.
|
|
112
|
+
8. Installs git pre-commit hook (non-blocking if not a git repo)
|
|
113
|
+
|
|
114
|
+
See [llms.txt](llms.txt) for the agent map. Catalog of 45 skills lives in [SKILLS.md](SKILLS.md) — that is the exo catalog, not default consumer wear.
|
|
110
115
|
|
|
111
116
|
## Seven MCP Servers (consumer)
|
|
112
117
|
|
|
@@ -198,9 +203,11 @@ Docs: [memory routing](docs-site/docs/guides/memory-routing.md) · [Repertoire](
|
|
|
198
203
|
|-------|-----------------|
|
|
199
204
|
| Four-floor consumer e2e | OpenCode 34/0 · Grok 63/0 · Hermes 39/0/2 · OpenClaw 96/0/1 (npm 4.0.0 pack) |
|
|
200
205
|
| Consumer smoke | `npm run release:gate` — pack → clean install → 7 MCPs + 4 bridges + organ on |
|
|
206
|
+
| Pack → tmp proof | `npm run pack:tmp-proof` — tgz install + `foundry mint --skip-live` + hangar shops + inspect (no costume dump). Playwright n/a (CLI). |
|
|
201
207
|
|
|
202
208
|
```bash
|
|
203
209
|
npm test
|
|
210
|
+
npm run pack:tmp-proof # pack → tmp fasten + hangar inspect
|
|
204
211
|
npm run release:gate # full release gate (before upload)
|
|
205
212
|
npm run release:npm # gate + prepare + npm publish --access public
|
|
206
213
|
```
|
package/SKILLS.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# 0xray Skills
|
|
2
2
|
|
|
3
|
-
**4.0** —
|
|
3
|
+
**4.0** — a suit that survives the context window
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
**45 skills** in this exo catalog. Default consumer plant is **`mill` + `inspect`**, not this dump. `npm install 0xray` does **not** sync 45 skills unless `foundry.json` `"costume": true`. Factory shop plant (`shop-extract`, `shop-witness`, `shop-pin`) coexists with mill plant when a hangar wears those shops. Extra shops: `foundry.json` `shopPlant`. Agent map: [llms.txt](llms.txt).
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
xray ships 45 knowledge skills (`src/skills/<name>/SKILL.md`) as the **costume / self-plant catalog**. 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`) or when you plant them. This file is the exo catalog — mill does **not** write it to the consumer root.
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
package/dist/AGENTS.md
CHANGED
|
@@ -20,7 +20,7 @@ xray provides intelligent multi-agent orchestration with automatic delegation an
|
|
|
20
20
|
- **External Governance** — Dynamo Solar SSOT, 69-term Codex
|
|
21
21
|
- **Autonomous Engine** — thinDispatch 7-flow, AsideContext, confidence gate
|
|
22
22
|
|
|
23
|
-
Agents are declared in `src/opencode/agents/*.yml` — the YML SSOT. Skills live in `src/skills/*/SKILL.md` — see [SKILLS.md](SKILLS.md). Consumer
|
|
23
|
+
Agents are declared in `src/opencode/agents/*.yml` — the YML SSOT. Skills live in `src/skills/*/SKILL.md` — see [SKILLS.md](SKILLS.md) for the exo catalog. Consumer default plant is **mill + inspect**, not a 45-skill sync (`AGENTS-consumer.md` → `AGENTS.md`). Factory hangar shops coexist via shop plant. See [llms.txt](llms.txt).
|
|
24
24
|
|
|
25
25
|
## Consumer MCP surface (7 servers)
|
|
26
26
|
|
|
@@ -42,14 +42,16 @@ Governance deliberation: **code-review**, **security-audit**, **researcher** wit
|
|
|
42
42
|
|
|
43
43
|
`postinstall.cjs` → `installAllBridges()`:
|
|
44
44
|
|
|
45
|
-
1. `AGENTS-consumer.md` → `AGENTS.md`
|
|
46
|
-
2. `
|
|
45
|
+
1. `AGENTS-consumer.md` → `AGENTS.md` (does **not** write consumer-root `SKILLS.md`)
|
|
46
|
+
2. Fasten mill plant (`mill` + `inspect`). Not a 45-skill costume dump unless `foundry.json` `"costume": true`
|
|
47
47
|
3. `.gitignore.default` → `.gitignore` (if absent)
|
|
48
|
-
4. `.xray/` config (`codex.json`, `features.json`, `config.json`)
|
|
48
|
+
4. `.xray/` config (`codex.json`, `features.json`, `config.json`) then overlay their plant
|
|
49
49
|
5. `.mcp.json` (7 servers)
|
|
50
50
|
6. Four bridges: OpenCode, Grok, Hermes, OpenClaw
|
|
51
51
|
7. Optional git hooks
|
|
52
52
|
|
|
53
|
+
**Shop plant:** `shop-extract`, `shop-witness`, `shop-pin` (groover-hangar) are first-class with mill plant. Extra shops: `foundry.json` `shopPlant`. Not `"costume": true`. `npx @0xray/foundry inspect --skip-live` is the receipt.
|
|
54
|
+
|
|
53
55
|
## Memory routing + Repertoire (v3.3+)
|
|
54
56
|
|
|
55
57
|
`xray/features.json` → `memory_routing` (schema: `features.schema.json`):
|
|
@@ -141,7 +143,7 @@ Docs: [guides/autonomy-command](docs-site/docs/guides/autonomy-command.md) · Sk
|
|
|
141
143
|
| Source | `src/` |
|
|
142
144
|
| Config | `.xray/` or `config/` |
|
|
143
145
|
|
|
144
|
-
**Root essentials only:** `README.md`, `CHANGELOG.md`, `package.json`, `AGENTS.md`, `SKILLS.md`, `tsconfig.json`.
|
|
146
|
+
**Root essentials only:** `README.md`, `CHANGELOG.md`, `package.json`, `AGENTS.md`, `SKILLS.md`, `llms.txt`, `tsconfig.json`.
|
|
145
147
|
|
|
146
148
|
## Available agents (42 YML surfaces)
|
|
147
149
|
|
|
@@ -207,6 +209,8 @@ Full skill mapping: [SKILLS.md](SKILLS.md).
|
|
|
207
209
|
|
|
208
210
|
| Topic | Path |
|
|
209
211
|
|-------|------|
|
|
212
|
+
| Agent map (`llms.txt`) | `llms.txt` |
|
|
213
|
+
| Foundry / mill plant | `docs-site/docs/architecture/v4-foundry.md` |
|
|
210
214
|
| Features since 3.1 | `docs-site/docs/guides/features-since-3.1.md` |
|
|
211
215
|
| features.json | `docs-site/docs/guides/features-json.md` |
|
|
212
216
|
| Platform integrations | `docs-site/docs/guides/integrations.md` |
|
|
@@ -218,4 +222,4 @@ Full skill mapping: [SKILLS.md](SKILLS.md).
|
|
|
218
222
|
|
|
219
223
|
## Release artifacts
|
|
220
224
|
|
|
221
|
-
`npm run release:patch` updates: `package.json`, `CHANGELOG.md`, `README.md`, `AGENTS.md`, `AGENTS-consumer.md`, `SKILLS.md`, Docusaurus guides.
|
|
225
|
+
`npm run release:patch` updates: `package.json`, `CHANGELOG.md`, `README.md`, `AGENTS.md`, `AGENTS-consumer.md`, `SKILLS.md`, `llms.txt`, Docusaurus guides.
|
package/dist/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,16 @@ The format is based on [Conventional Commits](https://www.conventionalcommits.or
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
### ✨ Features
|
|
10
|
+
- Mill inspect treats factory shop plant (`shop-extract`, `shop-witness`, `shop-pin`) as first-class with mill plant. `foundry.json` `shopPlant` names more shops. Not `"costume": true`. Nested mill stays **0.1.9**.
|
|
11
|
+
- Exo agent map: root `llms.txt` (mill+inspect plant, 7 MCPs, hangar/`shopPlant` coexistence, Codex 69, no costume dump). README / AGENTS / SKILLS / Docusaurus no longer claim default 45-skill sync.
|
|
12
|
+
- Pack → tmp suit proof: `npm run pack:tmp-proof` (and consumer smoke) installs the packed tgz, runs `foundry mint --skip-live`, plants factory hangar shops, and inspects without costume dump. Playwright n/a (mill CLI).
|
|
13
|
+
|
|
14
|
+
### 🐛 Bug Fixes
|
|
15
|
+
- **Grok marketplace pack** — `package.json` `files` includes `.grok-plugin/` so `npm pack` ships the mill-default Grok manifest (`package/.grok-plugin/plugin.json`). Consumers no longer receive only stale `.plugin/plugin.json`.
|
|
16
|
+
- **Grok marketplace manifest** — `.grok-plugin/plugin.json` matches `4.0.10`: `author` is an object, `mcpServers` is a flat path (not `components.mcpServers`), description is mill+inspect default wear (not a 45 knowledge-skills claim). Fixes `grok plugin validate`.
|
|
17
|
+
- **Consumer install of packed `0xray`** — stop shipping `@0xray/repertoire` as `file:./vendor/@0xray/repertoire`. npm `--install-links`, pnpm, and yarn resolve that path from the **consumer** root (`ENOENT .../vendor/@0xray/repertoire/package.json`), not from `node_modules/0xray`. The organ stays in the tarball at `vendor/@0xray/repertoire/`; postinstall wears it into `node_modules/@0xray/repertoire`. Fresh `npm install 0xray` / `npm install 0xray-*.tgz` no longer needs a consumer-root `vendor/` tree. Mill plant (`mill`+`inspect`) unchanged.
|
|
18
|
+
|
|
9
19
|
### 🔧 Maintenance
|
|
10
20
|
- Foundry mill: one bumper (`reconcile-version.mjs`); `version-manager.mjs` is `--artifacts-only` (JSON + CHANGELOG). Bump and `--tag` are refused.
|
|
11
21
|
- Docs mill verifies era kernel headers (`4.0`) and skill counts; it does not rewrite markdown prose.
|
|
@@ -34,6 +44,22 @@ The format is based on [Conventional Commits](https://www.conventionalcommits.or
|
|
|
34
44
|
|
|
35
45
|
---
|
|
36
46
|
|
|
47
|
+
## [4.0.11] - 2026-09-12
|
|
48
|
+
|
|
49
|
+
npm pack now includes `.grok-plugin/` so the mill-default Grok marketplace manifest ships in the tarball (`package/.grok-plugin/plugin.json`). Published `0xray@4.0.10` omitted it — the `files` whitelist landed in #27 after that PUT. Not 5.0.0. This PR does not publish.
|
|
50
|
+
|
|
51
|
+
- fix(pack): ship .grok-plugin in npm files whitelist (5a65851cb)
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## [4.0.10] - 2026-09-12
|
|
56
|
+
|
|
57
|
+
### 🔄 Changes
|
|
58
|
+
|
|
59
|
+
- Version bump
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
37
63
|
## [4.0.9] - 2026-09-11
|
|
38
64
|
|
|
39
65
|
Postinstall does **not** mill npm global prefix or npx cache as a consumer. `resolveConsumerTargetDir` treats `_npx` and a prefix without `package.json` as an install prefix: mill `INIT_CWD` if it is a real project, else mill the 0xray package (dogfood skip). Isolated HOME still skips machine `~/.grok`. Mill plant stays `mill` + `inspect`. Not 45/42 costume. Nested mill stays **0.1.9**. Not 5.0.0.
|
package/dist/README.md
CHANGED
|
@@ -25,9 +25,10 @@ Consumer `npm install 0xray` auto-wires four platform bridges and seven MCP serv
|
|
|
25
25
|
## Quick Start
|
|
26
26
|
|
|
27
27
|
```bash
|
|
28
|
-
npm install 0xray # postinstall: 4 bridges + 7 MCPs + AGENTS.md +
|
|
28
|
+
npm install 0xray # postinstall: mill+inspect plant + 4 bridges + 7 MCPs + AGENTS.md + .mcp.json
|
|
29
29
|
npx 0xray status # verify install
|
|
30
30
|
npx 0xray setup # optional: symlinks, hook extras
|
|
31
|
+
npx @0xray/foundry inspect --skip-live # mill receipt (chat is not a receipt)
|
|
31
32
|
```
|
|
32
33
|
|
|
33
34
|
Manual per-platform install (idempotent, same result as postinstall):
|
|
@@ -50,6 +51,7 @@ Docs: [guides/autonomy-command](docs-site/docs/guides/autonomy-command.md) · Sk
|
|
|
50
51
|
|
|
51
52
|
| Version | Highlights |
|
|
52
53
|
|---------|------------|
|
|
54
|
+
| **Unreleased** | Shop plant first-class (`shop-extract`, `shop-witness`, `shop-pin` + `foundry.json` `shopPlant`). Not `"costume": true`. Root `llms.txt`. Pack→tmp fasten proof. |
|
|
53
55
|
| **4.0.9** | Mill target: postinstall does not mill npm global prefix or `_npx` as a consumer. Isolated HOME skips machine `~/.grok`. |
|
|
54
56
|
| **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) |
|
|
55
57
|
| **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. |
|
|
@@ -100,13 +102,16 @@ Docs: [guides/autonomy-command](docs-site/docs/guides/autonomy-command.md) · Sk
|
|
|
100
102
|
|
|
101
103
|
On `npm install 0xray` in a consumer project, postinstall automatically:
|
|
102
104
|
|
|
103
|
-
1. Copies **`AGENTS-consumer.md` → `AGENTS.md
|
|
104
|
-
2.
|
|
105
|
-
3.
|
|
106
|
-
4.
|
|
107
|
-
5.
|
|
108
|
-
6.
|
|
109
|
-
7.
|
|
105
|
+
1. Copies **`AGENTS-consumer.md` → `AGENTS.md`**. Does **not** write consumer-root **`SKILLS.md`**.
|
|
106
|
+
2. Fastens **mill plant** (`mill` + `inspect`). Not a 45-skill / 42-agent costume dump. `foundry.json` `"costume": true` is the opt-in dump.
|
|
107
|
+
3. Seeds **`.gitignore`** from `.gitignore.default` (if absent)
|
|
108
|
+
4. Deploys **`.xray/`** config (`codex.json`, `features.json`, `config.json`) then overlays **their** plant
|
|
109
|
+
5. Writes project **`.mcp.json`** with 7 MCPs servers (`npx -y 0xray mcp …`)
|
|
110
|
+
6. Installs **4 bridges**: OpenCode, Grok, Hermes, OpenClaw (PPE + wiring; mill plant, not costume)
|
|
111
|
+
7. Factory shop plant (`shop-extract`, `shop-witness`, `shop-pin` from groover-hangar) may coexist when worn. Extra shops: `foundry.json` `shopPlant`. Not costume.
|
|
112
|
+
8. Installs git pre-commit hook (non-blocking if not a git repo)
|
|
113
|
+
|
|
114
|
+
See [llms.txt](llms.txt) for the agent map. Catalog of 45 skills lives in [SKILLS.md](SKILLS.md) — that is the exo catalog, not default consumer wear.
|
|
110
115
|
|
|
111
116
|
## Seven MCP Servers (consumer)
|
|
112
117
|
|
|
@@ -198,9 +203,11 @@ Docs: [memory routing](docs-site/docs/guides/memory-routing.md) · [Repertoire](
|
|
|
198
203
|
|-------|-----------------|
|
|
199
204
|
| Four-floor consumer e2e | OpenCode 34/0 · Grok 63/0 · Hermes 39/0/2 · OpenClaw 96/0/1 (npm 4.0.0 pack) |
|
|
200
205
|
| Consumer smoke | `npm run release:gate` — pack → clean install → 7 MCPs + 4 bridges + organ on |
|
|
206
|
+
| Pack → tmp proof | `npm run pack:tmp-proof` — tgz install + `foundry mint --skip-live` + hangar shops + inspect (no costume dump). Playwright n/a (CLI). |
|
|
201
207
|
|
|
202
208
|
```bash
|
|
203
209
|
npm test
|
|
210
|
+
npm run pack:tmp-proof # pack → tmp fasten + hangar inspect
|
|
204
211
|
npm run release:gate # full release gate (before upload)
|
|
205
212
|
npm run release:npm # gate + prepare + npm publish --access public
|
|
206
213
|
```
|
package/dist/SKILLS.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# 0xray Skills
|
|
2
2
|
|
|
3
|
-
**4.0** —
|
|
3
|
+
**4.0** — a suit that survives the context window
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
**45 skills** in this exo catalog. Default consumer plant is **`mill` + `inspect`**, not this dump. `npm install 0xray` does **not** sync 45 skills unless `foundry.json` `"costume": true`. Factory shop plant (`shop-extract`, `shop-witness`, `shop-pin`) coexists with mill plant when a hangar wears those shops. Extra shops: `foundry.json` `shopPlant`. Agent map: [llms.txt](llms.txt).
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
xray ships 45 knowledge skills (`src/skills/<name>/SKILL.md`) as the **costume / self-plant catalog**. 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`) or when you plant them. This file is the exo catalog — mill does **not** write it to the consumer root.
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -3,6 +3,7 @@ import { frameworkLogger } from "../core/framework-logger.js";
|
|
|
3
3
|
const DEFAULT_HERMES_PROVIDER = "xai-oauth";
|
|
4
4
|
const DEFAULT_HERMES_MODEL = "grok-4.3";
|
|
5
5
|
const DEFAULT_HERMES_TIMEOUT_MS = 120_000;
|
|
6
|
+
const UNIT_TEST_HERMES_TIMEOUT_MS = 2_000;
|
|
6
7
|
const ROLE_PROMPTS = {
|
|
7
8
|
"code-review": `You are a senior code reviewer on a governance committee for a software project. Analyze the following proposal from a code quality, maintainability, readability, and engineering best practices perspective.
|
|
8
9
|
|
|
@@ -47,12 +48,25 @@ function resolveHermesProvider() {
|
|
|
47
48
|
function resolveHermesModel() {
|
|
48
49
|
return process.env.HERMES_MODEL?.trim() || DEFAULT_HERMES_MODEL;
|
|
49
50
|
}
|
|
51
|
+
function inUnitTestContext() {
|
|
52
|
+
return process.env.NODE_ENV === "test" || Boolean(process.env.VITEST);
|
|
53
|
+
}
|
|
54
|
+
/** Dead xai-oauth (invalid_grant) hangs hermes -z until DEFAULT_HERMES_TIMEOUT_MS. Unit/Vitest must not wait. */
|
|
55
|
+
function unitTestBlocksLiveHermes() {
|
|
56
|
+
if (process.env.XRAY_GOVERNANCE_ALLOW_HERMES === "true")
|
|
57
|
+
return false;
|
|
58
|
+
return inUnitTestContext();
|
|
59
|
+
}
|
|
50
60
|
function resolveHermesTimeoutMs() {
|
|
51
61
|
const raw = process.env.HERMES_TIMEOUT_MS?.trim();
|
|
52
|
-
if (
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
62
|
+
if (raw) {
|
|
63
|
+
const parsed = Number(raw);
|
|
64
|
+
if (Number.isFinite(parsed) && parsed > 0)
|
|
65
|
+
return parsed;
|
|
66
|
+
}
|
|
67
|
+
if (inUnitTestContext())
|
|
68
|
+
return UNIT_TEST_HERMES_TIMEOUT_MS;
|
|
69
|
+
return DEFAULT_HERMES_TIMEOUT_MS;
|
|
56
70
|
}
|
|
57
71
|
export function resolveHermesBin() {
|
|
58
72
|
const explicit = process.env.HERMES_BIN?.trim();
|
|
@@ -84,6 +98,8 @@ function getConfig() {
|
|
|
84
98
|
const direct = getDirectLlmConfig();
|
|
85
99
|
if (direct)
|
|
86
100
|
return direct;
|
|
101
|
+
if (unitTestBlocksLiveHermes())
|
|
102
|
+
return null;
|
|
87
103
|
if (hermesCliAvailable()) {
|
|
88
104
|
return {
|
|
89
105
|
mode: "hermes",
|
|
@@ -22,6 +22,7 @@ function resolveUnavailableReason(provider) {
|
|
|
22
22
|
const REPERTOIRE_CANDIDATE_PATHS = [
|
|
23
23
|
'node_modules/@0xray/repertoire/dist/provider/memory-routing-provider.js',
|
|
24
24
|
'vendor/@0xray/repertoire/dist/provider/memory-routing-provider.js',
|
|
25
|
+
'node_modules/0xray/vendor/@0xray/repertoire/dist/provider/memory-routing-provider.js',
|
|
25
26
|
'../repertoire/dist/provider/memory-routing-provider.js',
|
|
26
27
|
'../../repertoire/dist/provider/memory-routing-provider.js',
|
|
27
28
|
'../../../repertoire/dist/provider/memory-routing-provider.js',
|
|
@@ -73,6 +74,9 @@ function leftoverRepertoireModulePath(cwd) {
|
|
|
73
74
|
const vendor = join(cwd, 'vendor', '@0xray', 'repertoire', 'dist', 'provider', 'memory-routing-provider.js');
|
|
74
75
|
if (existsSync(vendor))
|
|
75
76
|
return vendor;
|
|
77
|
+
const packedVendor = join(cwd, 'node_modules', '0xray', 'vendor', '@0xray', 'repertoire', 'dist', 'provider', 'memory-routing-provider.js');
|
|
78
|
+
if (existsSync(packedVendor))
|
|
79
|
+
return packedVendor;
|
|
76
80
|
const sibling = resolve(cwd, '../repertoire/dist/provider/memory-routing-provider.js');
|
|
77
81
|
if (existsSync(sibling))
|
|
78
82
|
return sibling;
|
package/llms.txt
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# 0xray
|
|
2
|
+
|
|
3
|
+
> Exo for coding agents. A suit that survives the context window. Not a catalog of 45 skills.
|
|
4
|
+
|
|
5
|
+
**4.0** — mill+inspect plant, 7 MCPs, Codex 69. Constitution always on.
|
|
6
|
+
|
|
7
|
+
Default consumer wear is **mill plant** (`mill` + `inspect`), not a 45-skill / 42-agent costume dump. `foundry.json` `"costume": true` is the opt-in dump. Do not use costume to land hangar shops.
|
|
8
|
+
|
|
9
|
+
## Wear (what a stranger gets)
|
|
10
|
+
|
|
11
|
+
- `npm install 0xray` — postinstall fastens mill+inspect, writes 7 MCP `.mcp.json`, four host bridges (OpenCode, Grok, Hermes, OpenClaw), overlays their plant. Does **not** write consumer-root `SKILLS.md`.
|
|
12
|
+
- `npx @0xray/foundry mint --skip-live` — re-fasten mill plant, then inspect.
|
|
13
|
+
- `npx @0xray/foundry inspect --skip-live` — plant-vs-worn, receipt, CI. Chat is not a receipt.
|
|
14
|
+
|
|
15
|
+
## Shop plant (hangar coexistence)
|
|
16
|
+
|
|
17
|
+
Factory shop plant is first-class with mill plant: `shop-extract`, `shop-witness`, `shop-pin` (groover-hangar). Worn shops are **not** a costume dump.
|
|
18
|
+
|
|
19
|
+
- Extra shop names: `foundry.json` `"shopPlant"` (string[] / plant dir / `{ skills, dir }`).
|
|
20
|
+
- Field is `shopPlant`, not `hangarPlant` (mill plant copy cannot say hangar).
|
|
21
|
+
- Undeclared leftovers (including undeclared `shop-*`, leftover `enforcer`) still fail plant-vs-worn.
|
|
22
|
+
|
|
23
|
+
## Seven MCP servers
|
|
24
|
+
|
|
25
|
+
Registered in `.mcp.json` as `npx -y 0xray mcp <cmd>`:
|
|
26
|
+
|
|
27
|
+
| Server | Role |
|
|
28
|
+
|--------|------|
|
|
29
|
+
| `xray-governance` | Proposal governance, Codex snapshot |
|
|
30
|
+
| `xray-skills` | Skill invoke (catalog exists; default plant is still mill+inspect) |
|
|
31
|
+
| `xray-orchestrator` | thinDispatch, AsideContext, confidence gate |
|
|
32
|
+
| `xray-enforcer` | Codex compliance |
|
|
33
|
+
| `xray-researcher` | Codebase exploration |
|
|
34
|
+
| `xray-code-review` | Proposal quality |
|
|
35
|
+
| `xray-architect-tools` | System design |
|
|
36
|
+
|
|
37
|
+
Not an 8th `xray-*` server. Repertoire is a vendored organ (`npx @0xray/repertoire mcp`), enable-when-resolves.
|
|
38
|
+
|
|
39
|
+
## Codex 69 (always on)
|
|
40
|
+
|
|
41
|
+
`.xray/codex.json` — 69 terms. PPE (`evaluatePreToolGate`) denies Codex 11 / 29 / 69. No new MCP / skill / handler surface. No `any`. No `eval`. Temperament scales ceremony (guided vs frontier), not whether governance exists.
|
|
42
|
+
|
|
43
|
+
## Agent map (exo, not dump)
|
|
44
|
+
|
|
45
|
+
- **Mill** — fasten their plant; factory discipline. Nested mill `@0xray/foundry` 0.1.9.
|
|
46
|
+
- **Inspect** — diffs, plant-vs-worn, mill receipt, CI, live tarball GET.
|
|
47
|
+
- **Hangar** — plants factory shops on the four floors. Coexists with mill plant via shop plant allowlist.
|
|
48
|
+
- **42 YML / 45 SKILL.md** — exo catalog in this repo. Not default consumer wear.
|
|
49
|
+
|
|
50
|
+
## Docs
|
|
51
|
+
|
|
52
|
+
- [README.md](README.md) — exo landing
|
|
53
|
+
- [AGENTS.md](AGENTS.md) — framework card
|
|
54
|
+
- [AGENTS-consumer.md](AGENTS-consumer.md) — consumer card (copied to `AGENTS.md` on install)
|
|
55
|
+
- [SKILLS.md](SKILLS.md) — catalog (costume / self-plant, not default sync)
|
|
56
|
+
- [Foundry](docs-site/docs/architecture/v4-foundry.md) — mill vs exo, shopPlant
|
|
57
|
+
- [Features since 3.1](docs-site/docs/guides/features-since-3.1.md)
|
|
58
|
+
|
|
59
|
+
Playwright / UI: n/a. This mill is CLI.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "0xray",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.11",
|
|
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",
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
"test:processors": "npm test -- src/__tests__/unit/processor-activation.test.ts src/__tests__/unit/typescript-compilation-processor.test.ts",
|
|
80
80
|
"test:miscellaneous": "npm test -- src/__tests__/unit/blocked-test.test.ts",
|
|
81
81
|
"test:quick": "npm test -- src/__tests__/integration/boot-orchestrator.integration.test.ts src/__tests__/unit/config-loader.test.ts src/__tests__/unit/state-manager.test.ts",
|
|
82
|
-
"test:comprehensive": "npm run typecheck && npm run test:unit && npm run test:core-framework && npm run test:security && npm run test:performance && npm run test:session-management && npm run test:code-analysis && npm run test:processors && npm run test:miscellaneous",
|
|
82
|
+
"test:comprehensive": "npm run typecheck && npm run test:unit && npm run test:core-framework && npm run test:security && npm run test:performance && npm run test:session-management && npm run test:code-analysis && npm run test:processors && npm run test:miscellaneous && npm test -- src/__tests__/unit/llm-governance-provider.test.ts src/__tests__/unit/mcp-server-smoke.test.ts",
|
|
83
83
|
"test:integration-all": "npm test -- src/__tests__/integration/",
|
|
84
84
|
"test:performance-all": "npm test -- src/__tests__/performance/ src/__tests__/unit/performance-system.test.ts src/__tests__/unit/benchmark.test.ts src/__tests__/unit/analytics.test.ts",
|
|
85
85
|
"test:agents-all": "echo 'Legacy agents test entry retired'",
|
|
@@ -120,6 +120,7 @@
|
|
|
120
120
|
"release:dry": "node scripts/foundry/release.mjs patch --dry-run",
|
|
121
121
|
"version:reconcile": "node scripts/foundry/reconcile-version.mjs",
|
|
122
122
|
"consumer:smoke": "node scripts/node/consumer-install-smoke.mjs",
|
|
123
|
+
"pack:tmp-proof": "node scripts/node/pack-tmp-suit-proof.mjs",
|
|
123
124
|
"release:gate": "node scripts/foundry/release-gate.mjs",
|
|
124
125
|
"release:docs-check": "node scripts/foundry/validate-release-docs.mjs",
|
|
125
126
|
"pre-publish-guard": "node scripts/node/pre-publish-guard.js",
|
|
@@ -179,6 +180,7 @@
|
|
|
179
180
|
"src/skills/",
|
|
180
181
|
"src/mcps/",
|
|
181
182
|
".plugin/",
|
|
183
|
+
".grok-plugin/",
|
|
182
184
|
".opencode/agents/",
|
|
183
185
|
".opencode/commands/",
|
|
184
186
|
".opencode/hooks/",
|
|
@@ -189,6 +191,7 @@
|
|
|
189
191
|
".opencode/enforcer-config.json",
|
|
190
192
|
"opencode.json",
|
|
191
193
|
"README.md",
|
|
194
|
+
"llms.txt",
|
|
192
195
|
".mcp.json",
|
|
193
196
|
"AGENTS.md",
|
|
194
197
|
"AGENTS-consumer.md",
|
|
@@ -207,7 +210,6 @@
|
|
|
207
210
|
"vendor/@0xray/repertoire/"
|
|
208
211
|
],
|
|
209
212
|
"dependencies": {
|
|
210
|
-
"@0xray/repertoire": "file:./vendor/@0xray/repertoire",
|
|
211
213
|
"@modelcontextprotocol/sdk": "^1.0.4",
|
|
212
214
|
"commander": "^11.1.0",
|
|
213
215
|
"express": "^5.2.1",
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [Unreleased]
|
|
4
|
+
|
|
5
|
+
Shop plant is first-class with mill plant. `shop-extract`, `shop-witness`, `shop-pin` (and `foundry.json` `shopPlant`) are not a costume dump. `"costume": true` still required for 45/42. No mill version bump.
|
|
6
|
+
|
|
3
7
|
## [0.1.9] - 2026-09-09
|
|
4
8
|
|
|
5
9
|
Inventory writes `dna` (keccak256 of canonical JSON without `mintedAt`). Inspect receipt echoes `dna` + pack `0xray-suit` for Groover GRVR. Mill does not mint on chain. Not an 8th MCP. Not 5.0.
|
|
@@ -55,6 +55,8 @@ After mill plant is fastened, overlay their plant (defaults; remap in `foundry.j
|
|
|
55
55
|
|
|
56
56
|
**Default mill plant:** `mill` + `inspect` (inspect AI work). Fastens a suit, not an empty one. Not 45/42 costume. `foundry.json` `"costume": true` copies that dump. Factory Repertoire still enable-when-resolves. PPE stays worn.
|
|
57
57
|
|
|
58
|
+
**Shop plant:** `shop-extract`, `shop-witness`, `shop-pin` are first-class with mill plant. Inspect does not treat those worn names as a costume dump. `foundry.json` `"shopPlant"` names more shops (array), a plant dir (string), or `{ "skills": [...], "dir": "..." }`. This is not `"costume": true` and does not copy 45/42.
|
|
59
|
+
|
|
58
60
|
**4.0.9 mill target (0xray postinstall, not this mill package):** `install-bridges.cjs` does not mill npm global prefix or npx `_npx` as a consumer. Isolated HOME skips machine `~/.grok`. Nested mill stays **0.1.9**.
|
|
59
61
|
|
|
60
62
|
## Publish this mill
|
|
@@ -80,12 +80,14 @@ function checkPlantVsWorn(root, millRoot) {
|
|
|
80
80
|
skills: mint.listConsumerSkillNames(root, params.skills),
|
|
81
81
|
agents: mint.listConsumerAgentFiles(root, params.agents),
|
|
82
82
|
};
|
|
83
|
+
const shopPlant = mint.loadShopPlant(root);
|
|
83
84
|
try {
|
|
84
85
|
mint.assertNoCostumeDump(root, millPlant, tree);
|
|
85
86
|
return {
|
|
86
87
|
id: "plant-vs-worn",
|
|
87
88
|
ok: true,
|
|
88
89
|
millPlant: millPlant.skills,
|
|
90
|
+
shopPlant,
|
|
89
91
|
tree: tree.skills,
|
|
90
92
|
worn: mint.wornSkillNames(root),
|
|
91
93
|
};
|
|
@@ -96,6 +98,7 @@ function checkPlantVsWorn(root, millRoot) {
|
|
|
96
98
|
detail: err instanceof Error ? err.message : String(err),
|
|
97
99
|
extraSkills: err.extraSkills || [],
|
|
98
100
|
extraAgents: err.extraAgents || [],
|
|
101
|
+
shopPlant,
|
|
99
102
|
};
|
|
100
103
|
}
|
|
101
104
|
}
|