0xray 4.0.14 → 4.0.16
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 +1 -1
- package/.opencode/init.sh +14 -4
- package/.opencode/skills/orchestrator/SKILL.md +20 -1
- package/.xray/features.json +2 -2
- package/AGENTS-consumer.md +10 -5
- package/AGENTS.md +10 -7
- package/README.md +8 -7
- package/SKILLS.md +3 -2
- package/dist/AGENTS.md +10 -7
- package/dist/CHANGELOG.md +71 -0
- package/dist/README.md +8 -7
- package/dist/SKILLS.md +3 -2
- package/dist/cli/commands/hermes-install.js +2 -1
- package/dist/cli/commands/openclaw-install.js +2 -1
- package/dist/cli/commands/opencode-install.js +2 -1
- package/dist/cli/commands/validate.d.ts +26 -0
- package/dist/cli/commands/validate.js +164 -0
- package/dist/cli/index.js +6 -13
- package/dist/integrations/cursor/hooks/cursor-hook-utils.js +11 -0
- package/dist/integrations/grok/grok-cli.js +2 -1
- package/dist/integrations/hooks/station-hook-runtime.cjs +23 -2
- package/dist/integrations/hooks/station-hook-runtime.mjs +2 -0
- package/dist/integrations/openclaw/plugin/xray-pre-tool/package.json +1 -1
- package/dist/reporting/log-parser.js +2 -2
- package/dist/skills/orchestrator/SKILL.md +20 -1
- package/llms.txt +8 -7
- package/package.json +2 -1
- package/scripts/foundry/CHANGELOG.md +33 -1
- package/scripts/foundry/README.md +12 -5
- package/scripts/foundry/assert-packed-dist-cli.mjs +6 -0
- package/scripts/foundry/blip-kapow.cjs +2 -0
- package/scripts/foundry/blip-looker.cjs +2 -0
- package/scripts/foundry/blip-render.cjs +2 -1237
- package/scripts/foundry/blip-rippel-organs.cjs +2 -0
- package/scripts/foundry/blip-rippel.cjs +2 -1963
- package/scripts/foundry/blip-scene.cjs +2 -0
- package/scripts/foundry/blip-stroke.cjs +2 -0
- package/scripts/foundry/blip-vibe.cjs +2 -0
- package/scripts/foundry/blip.mjs +23 -97
- package/scripts/foundry/cli.mjs +2 -2
- package/scripts/foundry/inspect.mjs +62 -19
- package/scripts/foundry/mill-plant.cjs +598 -0
- package/scripts/foundry/mint-suit.cjs +189 -99
- package/scripts/foundry/package.json +12 -1
- package/scripts/foundry/plant/agents/blip-inspect.yml +1 -1
- package/scripts/foundry/plant/agents/blip-looker.yml +5 -0
- package/scripts/foundry/plant/agents/blip-vibe.yml +5 -0
- package/scripts/foundry/plant/agents/blip.yml +1 -1
- package/scripts/foundry/plant/agents/inspect.yml +1 -1
- package/scripts/foundry/plant/agents/mill.yml +1 -1
- package/scripts/foundry/plant/agents/sound-inspect.yml +1 -1
- package/scripts/foundry/plant/agents/sound-mixer.yml +5 -0
- package/scripts/foundry/plant/agents/sound.yml +1 -1
- package/scripts/foundry/plant/motions/MOTION-REGISTRY.md +15 -9
- package/scripts/foundry/plant/motions/registry.json +5 -4
- package/scripts/foundry/plant/skills/blip/SKILL.md +4 -4
- package/scripts/foundry/plant/skills/blip-inspect/SKILL.md +2 -2
- package/scripts/foundry/plant/skills/blip-looker/SKILL.md +30 -0
- package/scripts/foundry/plant/skills/blip-vibe/SKILL.md +30 -0
- package/scripts/foundry/plant/skills/inspect/SKILL.md +2 -2
- package/scripts/foundry/plant/skills/sound/SKILL.md +3 -1
- package/scripts/foundry/plant/skills/sound-inspect/SKILL.md +1 -1
- package/scripts/foundry/plant/skills/sound-mixer/SKILL.md +28 -0
- package/scripts/foundry/sound-bed.cjs +2 -454
- package/scripts/foundry/sound-mixer.cjs +2 -0
- package/scripts/foundry/sound-rippel.cjs +2 -1434
- package/scripts/foundry/sound-taste.cjs +2 -0
- package/scripts/foundry/sound-voice.cjs +2 -0
- package/scripts/foundry/sound.mjs +23 -81
- package/scripts/node/install-bridges.cjs +39 -4
- package/src/integrations/openclaw/plugin/xray-pre-tool/package.json +1 -1
- package/src/skills/orchestrator/SKILL.md +20 -1
- package/xray/features.json +2 -2
package/.grok-plugin/plugin.json
CHANGED
package/.opencode/init.sh
CHANGED
|
@@ -35,8 +35,15 @@ XRAY_VERSION=$(node -e "console.log(require('$FRAMEWORK_ROOT/package.json').vers
|
|
|
35
35
|
# Dedup guard — prevent duplicate runs during startup
|
|
36
36
|
# Uses a TTL lockfile (10s window) since OpenCode may trigger config hook
|
|
37
37
|
# from multiple plugin copies in quick succession
|
|
38
|
-
# Key by PROJECT_ROOT
|
|
39
|
-
|
|
38
|
+
# Key by PROJECT_ROOT so all invocations in the same project share one lock.
|
|
39
|
+
# md5 is macOS; Linux has md5sum. Do not fail the boot on a leftover Mac tool.
|
|
40
|
+
if command -v md5 >/dev/null 2>&1; then
|
|
41
|
+
LOCK_KEY=$(echo -n "$PROJECT_ROOT" | md5 | cut -c1-16)
|
|
42
|
+
elif command -v md5sum >/dev/null 2>&1; then
|
|
43
|
+
LOCK_KEY=$(echo -n "$PROJECT_ROOT" | md5sum | awk '{print $1}' | cut -c1-16)
|
|
44
|
+
else
|
|
45
|
+
LOCK_KEY=$(echo -n "$PROJECT_ROOT" | cksum | awk '{print $1}')
|
|
46
|
+
fi
|
|
40
47
|
LOCK_FILE="/tmp/xray-init-${LOCK_KEY}.lock"
|
|
41
48
|
LOCK_TTL=10
|
|
42
49
|
if [ -f "$LOCK_FILE" ]; then
|
|
@@ -123,8 +130,11 @@ else
|
|
|
123
130
|
PLUGIN_STATUS="❌"
|
|
124
131
|
fi
|
|
125
132
|
|
|
126
|
-
# Framework config check
|
|
127
|
-
if [ ! -f "$PROJECT_ROOT/.opencode/enforcer-config.json" ]
|
|
133
|
+
# Framework config check — consumer wear is .xray/codex.json, not leftover enforcer-config.json
|
|
134
|
+
if [ ! -f "$PROJECT_ROOT/.opencode/enforcer-config.json" ] \
|
|
135
|
+
&& [ ! -f "$PROJECT_ROOT/.xray/codex.json" ] \
|
|
136
|
+
&& [ ! -f "$PROJECT_ROOT/node_modules/0xray/.xray/codex.json" ] \
|
|
137
|
+
&& [ ! -f "$PROJECT_ROOT/.mcp.json" ]; then
|
|
128
138
|
echo -e "${PURPLE}// ❌ Framework configuration not found //${NC}"
|
|
129
139
|
exit 1
|
|
130
140
|
fi
|
|
@@ -58,4 +58,23 @@ When `multi_agent_orchestration.lead_dev_mode` is true in `features.json` (defau
|
|
|
58
58
|
- **SessionStart** → `session-start.js` boots lead_dev_mode
|
|
59
59
|
- **PreToolUse** → hints `per_suite_triage_required` on full `npm test`
|
|
60
60
|
|
|
61
|
-
Config: `features.json` → `multi_agent_orchestration.lead_dev_mode`
|
|
61
|
+
Config: `features.json` → `multi_agent_orchestration.lead_dev_mode`
|
|
62
|
+
|
|
63
|
+
## Lead cadence (syncopation)
|
|
64
|
+
|
|
65
|
+
The seven rules are the engine. The cadence is the time signature. Disk SSOT: `grok-bot/ops/LEAD-CADENCE.md`.
|
|
66
|
+
|
|
67
|
+
- **Peer test:** another instance with only worn 0xRay continues the ticket. No command stream.
|
|
68
|
+
- **Wear first:** Read `.xray/state/STATION.md`. Same cloud. Same critic (resume only). Dummy Reads Station.
|
|
69
|
+
- **Dummy tests `SKILLS.md`:** a suited dummy proves the worn catalog. Same-sess bodies keep context and hold a Station card.
|
|
70
|
+
- **Ship track:** always branch + worktree/aside + PR. Docs as you go. Builds. Rollback = close the PR.
|
|
71
|
+
- **Publish:** stay logged in (do not `npm logout`). Every time run `npm publish --access public` in the live TTY. Paste the clickable `auth/cli` URL. No Enter, no VM browser, no subagent, no 6-digit code in chat. Poll `npm view` until live. Then prove **fresh** and **upgrade** registry installs. `npx 0xray validate` is the wear check (not leftover init.sh). `npm view` is not an install.
|
|
72
|
+
- **Peer boot:** four-line dispatch. They Read Station + this cadence and install without a command novel. Not a twin critic.
|
|
73
|
+
- **Live tick, not pacer:** `/loop` runs work now. Keep workstreams moving. Do not idle-wait 12 minutes.
|
|
74
|
+
- **Board clock:** PR events + resume the same critic. Not two idle pacers. Merge after PASS+CI (gate A). Publish only after mill-gate D + `foundry gate`.
|
|
75
|
+
- **Dispatch:** ticket + PR URLs + “Wear, then review.” The critic Reads `SEATS.md` Reviewer. Do not paste a command novel. When a law is spoken twice, encode it this wake.
|
|
76
|
+
- **Close:** loop until Station is done. Compact: Station survives the cut. Repertoire keeps names.
|
|
77
|
+
- **Board:** critic Strict comments; forge implements; lead stays main thread.
|
|
78
|
+
- **Codex 69:** rewire this skill and existing ops. Do not add a new `SKILL.md` to hold the cadence.
|
|
79
|
+
- **Ship matrix:** `LEAD-CADENCE.md` Decision matrix — A PR+CI · B pack · C `release:docs-check` · D `foundry release --i-mean-it`. Green CI is not ship. Spend / credentials stay Ask-first.
|
|
80
|
+
- **Metamorphosis:** LLM → OP-PROC is in-context worn seats (same critic, same dummy, resume only). Not more bots.
|
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.16",
|
|
4
4
|
"description": "0xRay Framework - Unified Feature Configuration",
|
|
5
5
|
"suit_temperament": {
|
|
6
6
|
"profile": "auto",
|
|
@@ -162,7 +162,7 @@
|
|
|
162
162
|
"provider": "repertoire",
|
|
163
163
|
"module_path": "node_modules/@0xray/repertoire/dist/provider/memory-routing-provider.js",
|
|
164
164
|
"config": {
|
|
165
|
-
"signalsPath": "
|
|
165
|
+
"signalsPath": ".xray/state/repertoire/curated_signals.json",
|
|
166
166
|
"statePath": ".xray/state/repertoire/inference-state.json",
|
|
167
167
|
"feedbackDir": ".xray/state/repertoire/feedback"
|
|
168
168
|
}
|
package/AGENTS-consumer.md
CHANGED
|
@@ -6,7 +6,7 @@ Quick reference for the 0xRay AI orchestration framework worn on **{{CONSUMER_NA
|
|
|
6
6
|
|
|
7
7
|
**4.0** — a suit that survives the context window
|
|
8
8
|
|
|
9
|
-
Same **three-subsystem OS** as v2 (Inference · External Governance · Autonomous Engine). Constitution always on. Temperament scales ceremony. Four
|
|
9
|
+
Same **three-subsystem OS** as v2 (Inference · External Governance · Autonomous Engine). Constitution always on. Temperament scales ceremony. Four chat bridges plus Cursor project hooks. 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
|
|
|
@@ -14,17 +14,19 @@ Same **three-subsystem OS** as v2 (Inference · External Governance · Autonomou
|
|
|
14
14
|
|
|
15
15
|
Before other work, Read `.xray/state/STATION.md`. Compaction and host change are the same cut. Continue the card. Do not restart the job. Grok does not inject the card (OpenCode does) — this Read is the Grok contract. Do not thicken the Grok exo.
|
|
16
16
|
|
|
17
|
+
A peer lead continues from this card + Repertoire + the `orchestrator` skill. Dummy tests `SKILLS.md`. Same-sess bodies wear the suit. Branch + worktree + PR. Loop until Station is done. Live work ticks, not idle pacers. Same critic seat (resume only). Ship when mill-gate D + `foundry gate` PASS — green CI is not ship. Spend / credentials stay Ask-first. OTP in a browser, poll the new version before the next cut.
|
|
18
|
+
|
|
17
19
|
## Postinstall (automatic)
|
|
18
20
|
|
|
19
21
|
`npm install 0xray` runs `install-bridges.cjs` and:
|
|
20
22
|
|
|
21
23
|
- Copies this file → **`AGENTS.md`** in your project root
|
|
22
|
-
- Fastens mill plant (`mill` + `inspect`) then overlays **your** `src/skills` (same name wins).
|
|
24
|
+
- Fastens mill plant (`mill` + `inspect`) then overlays **your** `src/skills` (same name wins). Fasten is **foundry-plant/0**: builtin plant is mill+inspect only. `foundry.json` `"plant": "@0xray/blip"` (aliases `"plant": "blip"` / `"plant": "sound"`) fastens whatever that mill package declares (blip-inspect, blip-vibe, blip-looker, sound-inspect, sound-mixer live in the mill). `npx @0xray/foundry sound mix` / `sound render` / `blip render` are CLI shims (0.1.11+). `npx @0xray/foundry inspect` runs mill-exported inspect; on a sound seat the last bed receipt; on a blip seat the last 4.44s receipt. Chat is not a receipt. Does **not** dump 45/42 costume unless `foundry.json` `"costume": true`. Does **not** write root **`SKILLS.md`**
|
|
23
25
|
- 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.
|
|
24
26
|
- Seeds **`.gitignore`** (from template, if absent)
|
|
25
27
|
- 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`)
|
|
26
28
|
- Writes **`.mcp.json`** with 7 MCPs servers (`npx -y 0xray mcp …`)
|
|
27
|
-
- Installs bridges: **OpenCode**, **Grok**, **Hermes**, **OpenClaw**
|
|
29
|
+
- Installs bridges: **OpenCode**, **Grok**, **Hermes**, **OpenClaw**, plus **Cursor** `.cursor/hooks.json`
|
|
28
30
|
|
|
29
31
|
Optional extras: `npx 0xray setup`
|
|
30
32
|
|
|
@@ -61,7 +63,10 @@ Governance deliberation uses **code-review**, **security-audit** (via enforcer/s
|
|
|
61
63
|
| `npx 0xray mcp <server>` | Start an MCP server (stdio) |
|
|
62
64
|
| `npx @0xray/foundry inspect` | Mill inspect (nested mill). Sound seat: plant + last bed PASS/FAIL. Blip seat: last 4.44s PASS/FAIL. Chat is not a receipt. |
|
|
63
65
|
| `npx @0xray/foundry sound render` | Factory-sound bed: brief → seed → genre → crystal mill wav → metrics receipt. |
|
|
64
|
-
| `npx @0xray/foundry
|
|
66
|
+
| `npx @0xray/foundry sound mix` | sound-mixer: level every genre × tempo × motif (hats / plate / glue). |
|
|
67
|
+
| `npx @0xray/foundry blip render` | Factory-blip mill (`@0xray/blip`): brief → seed → still\|motion:<id> → 4.44s mp4 + audio bed. Motions are Rippel v2 VisualConfig at ≥720p. `kapow` is a design opt (two-tier comic stamp). Sparse seed mesh plus field accents are the NFT fingerprints. `still` is the Power Plant ident (plate dissolves, not a frozen poster). Fasten is foundry-plant/0 (`@0xray/foundry@0.1.12`); CLI shims remain (0.1.11+). |
|
|
68
|
+
| `npx @0xray/foundry blip vibe` | Stamp density. Appeal 0–10. Ship bar is 8. |
|
|
69
|
+
| `npx @0xray/foundry blip look` | Friend hitting replay (looker). Appeal 0–10. Ship bar is 8. |
|
|
65
70
|
|
|
66
71
|
## Governance
|
|
67
72
|
|
|
@@ -90,7 +95,7 @@ Configure in `.xray/features.json`:
|
|
|
90
95
|
"provider": "repertoire",
|
|
91
96
|
"module_path": "node_modules/@0xray/repertoire/dist/provider/memory-routing-provider.js",
|
|
92
97
|
"config": {
|
|
93
|
-
"signalsPath": "
|
|
98
|
+
"signalsPath": ".xray/state/repertoire/curated_signals.json",
|
|
94
99
|
"statePath": ".xray/state/repertoire/inference-state.json",
|
|
95
100
|
"feedbackDir": ".xray/state/repertoire/feedback"
|
|
96
101
|
}
|
package/AGENTS.md
CHANGED
|
@@ -12,6 +12,8 @@ Quick reference for the xray AI orchestration framework (**4.0**).
|
|
|
12
12
|
|
|
13
13
|
Before other work, Read `.xray/state/STATION.md`. Compaction and host change are the same cut. Continue the card. Do not restart the job. Grok does not inject the card (OpenCode does) — this Read is the Grok contract. Do not thicken the Grok exo.
|
|
14
14
|
|
|
15
|
+
**Lead cadence:** a peer wearing this file + Station + Repertoire continues without a command stream. Dummy bodies test `SKILLS.md`. Same-sess bodies wear the suit and keep a Station card. Always branch + worktree + PR. Ship when mill-gate D + `foundry gate` PASS (`LEAD-CADENCE.md` Decision matrix) — green CI is not ship. npm OTP in a browser, then poll the new version before moving on. Loop until Station is done. Live ticks and moving workstreams — not idle pacers. Same critic (resume only). Disk SSOT: `grok-bot/ops/LEAD-CADENCE.md`. Playbook: `orchestrator` skill.
|
|
16
|
+
|
|
15
17
|
## What is xray?
|
|
16
18
|
|
|
17
19
|
xray provides intelligent multi-agent orchestration with automatic delegation and Codex compliance validation under the pure v2 three-subsystem model:
|
|
@@ -43,22 +45,23 @@ Governance deliberation: **code-review**, **security-audit**, **researcher** wit
|
|
|
43
45
|
`postinstall.cjs` → `installAllBridges()`:
|
|
44
46
|
|
|
45
47
|
1. `AGENTS-consumer.md` → `AGENTS.md` (does **not** write consumer-root `SKILLS.md`)
|
|
46
|
-
2. Fasten mill plant (`mill` + `inspect`).
|
|
48
|
+
2. Fasten mill plant (`mill` + `inspect`). Fasten is **foundry-plant/0**: builtin plant is mill+inspect only. `foundry.json` `"plant": "@0xray/blip"` (aliases `"plant": "blip"` / `"plant": "sound"`) fastens whatever that mill package declares (looker, vibe, mixer, blip-inspect, blip-vibe, blip-looker, sound-inspect, sound-mixer live in the mill). Not a 45-skill costume dump unless `foundry.json` `"costume": true`
|
|
47
49
|
3. `.gitignore.default` → `.gitignore` (if absent)
|
|
48
50
|
4. `.xray/` config (`codex.json`, `features.json`, `config.json`) then overlay their plant
|
|
49
51
|
5. `.mcp.json` (7 servers)
|
|
50
|
-
6. Four bridges: OpenCode, Grok, Hermes, OpenClaw. Grok last-mile dest is project `.grok/plugins/0xray` (shared HOME does not last-wins clobber machine `~/.grok/plugins/0xray`)
|
|
51
|
-
7.
|
|
52
|
+
6. Four chat bridges: OpenCode, Grok, Hermes, OpenClaw. Grok last-mile dest is project `.grok/plugins/0xray` (shared HOME does not last-wins clobber machine `~/.grok/plugins/0xray`)
|
|
53
|
+
7. Cursor fifth wear: fasten `.cursor/hooks.json` when absent (preToolUse / preCompact / afterFileEdit). Leaves an existing file alone. Not a fifth chat TUI.
|
|
54
|
+
8. Optional git hooks
|
|
52
55
|
|
|
53
56
|
**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
57
|
|
|
55
|
-
**Sound plant:** Dist audio beds
|
|
58
|
+
**Sound plant:** Dist audio beds are a mill (`@0xray/blip`), not a foundry organ catalog. Alias `"plant": "sound"` + `npx @0xray/foundry sound render` writes a crystal-clear wav (Rippel membrane/metal/mixer, not a sine toy) and a bed receipt. `sound-mixer` (`npx @0xray/foundry sound mix`) lives in the mill and levels every genre × tempo × motif — hats, plate, glue — not just the last bed. CLI shim `foundry sound` remains (0.1.11+). Inspect is mill-exported — not fake code-mill skills on a sound seat.
|
|
56
59
|
|
|
57
|
-
**Blip plant:**
|
|
60
|
+
**Blip plant:** Product mill `@0xray/blip` (not a mill copy). Hangar shop pair later. Alias `"plant": "blip"` + `npx @0xray/foundry blip render --brief "..." --mode still|motion:orb` writes a 4.44s mp4 **with an audio bed**. Registry v0: still + Rippel five (`orb` `swirl` `snap` `waves` `spark`). Motions are Rippel v2 `VisualConfig.circles` at ≥720p — sharp look + tempo/frequency animation on all five (wireframe is `--engine wireframe` only). Auto bed syncopates to the motion grid. Each mint wears a sparse seed mesh plus field accents (stars, grids, gradients, blinkers); receipt `visualConfig.mesh` + `visualConfig.field` are the fingerprints. `kapow` is a design opt (`motion:kapow`) — two-tier comic stamp on the same stanza. Organs live in the mill: `blip-vibe` (`npx @0xray/foundry blip vibe`) scores stamp density; `blip-looker` (`npx @0xray/foundry blip look`) is the friend hitting replay; appeal 0–10; ship bar is **8**. `still` is the Power Plant ident — plate dissolves over 4.44s at ≥720p (`#08090B` `#F5F7FA` `#3DE0E8` `#F5C518` `#4A7FD4`), not a frozen poster. Adding an organ is a mill publish, not an xray catalog PR. CLI shim `foundry blip` remains (0.1.11+). Inspect checks duration / mode id / file / audio.
|
|
58
61
|
|
|
59
62
|
## Memory routing + Repertoire (v3.3+)
|
|
60
63
|
|
|
61
|
-
**Station is the successor card** (Read `.xray/state/STATION.md`). Repertoire 0.2 is a thin routing seed (8 factory names). 0.1.0–0.1.8 were the same judgment organ; do not pin 0.1.8 for mill wear. Split: `docs-site/docs/guides/station-vs-repertoire.md`.
|
|
64
|
+
**Station is the successor card** (Read `.xray/state/STATION.md`). Repertoire 0.2 is a thin routing seed (8 factory names). The worn mill reads the **project copy** under `.xray/state/repertoire/`. 0.1.0–0.1.8 were the same judgment organ; do not pin 0.1.8 for mill wear. Split: `docs-site/docs/guides/station-vs-repertoire.md`.
|
|
62
65
|
|
|
63
66
|
`xray/features.json` → `memory_routing` (schema: `features.schema.json`):
|
|
64
67
|
|
|
@@ -68,7 +71,7 @@ Governance deliberation: **code-review**, **security-audit**, **researcher** wit
|
|
|
68
71
|
"provider": "repertoire",
|
|
69
72
|
"module_path": "node_modules/@0xray/repertoire/dist/provider/memory-routing-provider.js",
|
|
70
73
|
"config": {
|
|
71
|
-
"signalsPath": "
|
|
74
|
+
"signalsPath": ".xray/state/repertoire/curated_signals.json",
|
|
72
75
|
"statePath": ".xray/state/repertoire/inference-state.json",
|
|
73
76
|
"feedbackDir": ".xray/state/repertoire/feedback"
|
|
74
77
|
}
|
package/README.md
CHANGED
|
@@ -13,14 +13,14 @@ Not a catalog of agents. The product is the **skeleton you wear**.
|
|
|
13
13
|
- **Bone** — three-subsystem OS: Inference · External Governance (Dynamo / Codex) · Autonomous Engine (thinDispatch)
|
|
14
14
|
- **Always on** — Codex 11 / 29 / 69, destructive shell, no new MCP/skill/handler surface
|
|
15
15
|
- **Temperament** — `frontier` | `guided` | `strict` | `auto` — how loud the engine is, not whether governance exists
|
|
16
|
-
- **Wear** — Grok, OpenCode, Hermes, OpenClaw. One SSOT gate
|
|
16
|
+
- **Wear** — Grok, OpenCode, Hermes, OpenClaw, plus Cursor project hooks. One SSOT gate
|
|
17
17
|
- **Muscle** — Repertoire: auto-enables when the module resolves; session-start writes a one-line resume so the next station is not born amnesiac
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
20
|
npm install 0xray
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
Consumer `npm install 0xray` auto-wires four
|
|
23
|
+
Consumer `npm install 0xray` auto-wires four chat bridges, Cursor project hooks, and seven MCP servers. Repertoire **0.2** is the factory memory organ (vendored): seed primitives, in-process routing, extra host MCP `repertoire`. Not an eighth `xray-*` server. Opt out with `"enabled": false, "provider": "repertoire"`.
|
|
24
24
|
|
|
25
25
|
## Quick Start
|
|
26
26
|
|
|
@@ -51,7 +51,7 @@ Docs: [guides/autonomy-command](docs-site/docs/guides/autonomy-command.md) · Sk
|
|
|
51
51
|
|
|
52
52
|
| Version | Highlights |
|
|
53
53
|
|---------|------------|
|
|
54
|
-
| **Unreleased** | Shop plant first-class (`shop-extract`, `shop-witness`, `shop-pin` + `foundry.json` `shopPlant`).
|
|
54
|
+
| **Unreleased** | Fasten is **foundry-plant/0**: builtin plant is mill+inspect only. `foundry.json` `"plant": "@0xray/blip"` (aliases `"plant": "blip"` / `"plant": "sound"`) fastens whatever that mill declares (looker / vibe / mixer live in the mill). Nested mill `@0xray/foundry@0.1.12`. CLI shims `foundry blip\|sound` remain (0.1.11+). Shop plant first-class (`shop-extract`, `shop-witness`, `shop-pin` + `foundry.json` `shopPlant`). 0xray stays 4.0.15. |
|
|
55
55
|
| **4.0.9** | Mill target: postinstall does not mill npm global prefix or `_npx` as a consumer. Isolated HOME skips machine `~/.grok`. |
|
|
56
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) |
|
|
57
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. |
|
|
@@ -103,11 +103,11 @@ Docs: [guides/autonomy-command](docs-site/docs/guides/autonomy-command.md) · Sk
|
|
|
103
103
|
On `npm install 0xray` in a consumer project, postinstall automatically:
|
|
104
104
|
|
|
105
105
|
1. Copies **`AGENTS-consumer.md` → `AGENTS.md`**. Does **not** write consumer-root **`SKILLS.md`**.
|
|
106
|
-
2. Fastens **mill plant** (`mill` + `inspect`).
|
|
106
|
+
2. Fastens **mill plant** (`mill` + `inspect`). Fasten is **foundry-plant/0**: builtin plant is mill+inspect only. `foundry.json` `"plant": "@0xray/blip"` (aliases `"plant": "blip"` / `"plant": "sound"`) fastens whatever that mill package declares — organs (looker, vibe, mixer) live in the mill, not an xray catalog. Nested mill `@0xray/foundry@0.1.12`. CLI shims `foundry blip|sound` still exist on foundry 0.1.11+; fasten is the new cut. Not a 45-skill / 42-agent costume dump. `foundry.json` `"costume": true` is the opt-in dump.
|
|
107
107
|
3. Seeds **`.gitignore`** from `.gitignore.default` (if absent)
|
|
108
108
|
4. Deploys **`.xray/`** config (`codex.json`, `features.json`, `config.json`) then overlays **their** plant
|
|
109
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)
|
|
110
|
+
6. Installs **4 chat bridges**: OpenCode, Grok, Hermes, OpenClaw, plus **Cursor** `.cursor/hooks.json` (PPE + wiring; mill plant, not costume)
|
|
111
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
112
|
8. Installs git pre-commit hook (non-blocking if not a git repo)
|
|
113
113
|
|
|
@@ -159,7 +159,7 @@ Pluggable `memory_routing` block in `features.json` (validated by `features.sche
|
|
|
159
159
|
"provider": "repertoire",
|
|
160
160
|
"module_path": "node_modules/@0xray/repertoire/dist/provider/memory-routing-provider.js",
|
|
161
161
|
"config": {
|
|
162
|
-
"signalsPath": "
|
|
162
|
+
"signalsPath": ".xray/state/repertoire/curated_signals.json",
|
|
163
163
|
"statePath": ".xray/state/repertoire/inference-state.json",
|
|
164
164
|
"feedbackDir": ".xray/state/repertoire/feedback"
|
|
165
165
|
}
|
|
@@ -188,6 +188,7 @@ Docs: [memory routing](docs-site/docs/guides/memory-routing.md) · [Repertoire](
|
|
|
188
188
|
| **Grok CLI / Build** | `npx 0xray grok install` | Project `.grok/plugins/0xray` (shared HOME does not clobber machine plugin), 7 MCPs servers |
|
|
189
189
|
| **Hermes Agent** | `npx 0xray hermes install` | `~/.hermes/plugins/xray-hermes`, consumer root marker |
|
|
190
190
|
| **OpenClaw** | `npx 0xray openclaw install` | `.xray/config/openclaw.json`, skill sync |
|
|
191
|
+
| **Cursor** | postinstall (`installCursorBridge`) | Fastens `.cursor/hooks.json` (preToolUse / preCompact / afterFileEdit). Leaves an existing file alone. Not a fifth chat TUI. |
|
|
191
192
|
|
|
192
193
|
## Governance & Codex
|
|
193
194
|
|
|
@@ -202,7 +203,7 @@ Docs: [memory routing](docs-site/docs/guides/memory-routing.md) · [Repertoire](
|
|
|
202
203
|
| Suite | Status (v4.0.1) |
|
|
203
204
|
|-------|-----------------|
|
|
204
205
|
| Four-floor consumer e2e | OpenCode 34/0 · Grok 63/0 · Hermes 39/0/2 · OpenClaw 96/0/1 (npm 4.0.0 pack) |
|
|
205
|
-
| Consumer smoke | `npm run release:gate` — pack → clean install → 7 MCPs + 4 bridges + organ on |
|
|
206
|
+
| Consumer smoke | `npm run release:gate` — pack → clean install → 7 MCPs + 4 chat bridges + Cursor hooks + organ on |
|
|
206
207
|
| Pack → tmp proof | `npm run pack:tmp-proof` — tgz install + `foundry mint --skip-live` + hangar shops + inspect (no costume dump). Playwright n/a (CLI). |
|
|
207
208
|
|
|
208
209
|
```bash
|
package/SKILLS.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**4.0** — a suit that survives the context window
|
|
4
4
|
|
|
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`.
|
|
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`. Fasten is **foundry-plant/0**: builtin plant is mill+inspect only. `foundry.json` `"plant": "@0xray/blip"` (aliases `"plant": "blip"` / `"plant": "sound"`) fastens whatever that mill package declares — organs (looker, vibe, mixer) live in the mill, not this catalog. Nested mill `@0xray/foundry@0.1.12`. CLI shims `foundry blip|sound` still exist on foundry 0.1.11+. 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
|
|
|
@@ -76,7 +76,7 @@ xray ships 45 knowledge skills (`src/skills/<name>/SKILL.md`) as the **costume /
|
|
|
76
76
|
|
|
77
77
|
| Skill | Agent | Description |
|
|
78
78
|
|-------|-------|-------------|
|
|
79
|
-
| `orchestrator` | @orchestrator | Multi-agent coordination + **lead-dev mode** (codex 67–68) |
|
|
79
|
+
| `orchestrator` | @orchestrator | Multi-agent coordination + **lead-dev mode** (codex 67–68) + lead cadence (dispatch four lines; critic Reads SEATS; ship matrix A–D in `LEAD-CADENCE.md`) |
|
|
80
80
|
| `xray-orchestrator` | — | xray orchestration skill (MCP orchestrator surface) |
|
|
81
81
|
| `processor-pipeline` | — | Data processing pipeline management |
|
|
82
82
|
| `boot-orchestrator` | — | Framework boot orchestration |
|
|
@@ -150,6 +150,7 @@ npx 0xray skill:install <source>
|
|
|
150
150
|
| OpenCode (after setup) | `.opencode/skills/<name>/SKILL.md` |
|
|
151
151
|
| Grok | project `.grok/plugins/0xray/skills/<name>/SKILL.md` (machine `~/.grok/plugins/0xray` is not last-wins) |
|
|
152
152
|
| Hermes / OpenClaw | Platform skill dirs (postinstall sync) |
|
|
153
|
+
| Cursor | Project `.cursor/hooks.json` (PPE + Station heat). Not a skill dump. |
|
|
153
154
|
|
|
154
155
|
## Related features (since 3.1)
|
|
155
156
|
|
package/dist/AGENTS.md
CHANGED
|
@@ -12,6 +12,8 @@ Quick reference for the xray AI orchestration framework (**4.0**).
|
|
|
12
12
|
|
|
13
13
|
Before other work, Read `.xray/state/STATION.md`. Compaction and host change are the same cut. Continue the card. Do not restart the job. Grok does not inject the card (OpenCode does) — this Read is the Grok contract. Do not thicken the Grok exo.
|
|
14
14
|
|
|
15
|
+
**Lead cadence:** a peer wearing this file + Station + Repertoire continues without a command stream. Dummy bodies test `SKILLS.md`. Same-sess bodies wear the suit and keep a Station card. Always branch + worktree + PR. Ship when mill-gate D + `foundry gate` PASS (`LEAD-CADENCE.md` Decision matrix) — green CI is not ship. npm OTP in a browser, then poll the new version before moving on. Loop until Station is done. Live ticks and moving workstreams — not idle pacers. Same critic (resume only). Disk SSOT: `grok-bot/ops/LEAD-CADENCE.md`. Playbook: `orchestrator` skill.
|
|
16
|
+
|
|
15
17
|
## What is xray?
|
|
16
18
|
|
|
17
19
|
xray provides intelligent multi-agent orchestration with automatic delegation and Codex compliance validation under the pure v2 three-subsystem model:
|
|
@@ -43,22 +45,23 @@ Governance deliberation: **code-review**, **security-audit**, **researcher** wit
|
|
|
43
45
|
`postinstall.cjs` → `installAllBridges()`:
|
|
44
46
|
|
|
45
47
|
1. `AGENTS-consumer.md` → `AGENTS.md` (does **not** write consumer-root `SKILLS.md`)
|
|
46
|
-
2. Fasten mill plant (`mill` + `inspect`).
|
|
48
|
+
2. Fasten mill plant (`mill` + `inspect`). Fasten is **foundry-plant/0**: builtin plant is mill+inspect only. `foundry.json` `"plant": "@0xray/blip"` (aliases `"plant": "blip"` / `"plant": "sound"`) fastens whatever that mill package declares (looker, vibe, mixer, blip-inspect, blip-vibe, blip-looker, sound-inspect, sound-mixer live in the mill). Not a 45-skill costume dump unless `foundry.json` `"costume": true`
|
|
47
49
|
3. `.gitignore.default` → `.gitignore` (if absent)
|
|
48
50
|
4. `.xray/` config (`codex.json`, `features.json`, `config.json`) then overlay their plant
|
|
49
51
|
5. `.mcp.json` (7 servers)
|
|
50
|
-
6. Four bridges: OpenCode, Grok, Hermes, OpenClaw. Grok last-mile dest is project `.grok/plugins/0xray` (shared HOME does not last-wins clobber machine `~/.grok/plugins/0xray`)
|
|
51
|
-
7.
|
|
52
|
+
6. Four chat bridges: OpenCode, Grok, Hermes, OpenClaw. Grok last-mile dest is project `.grok/plugins/0xray` (shared HOME does not last-wins clobber machine `~/.grok/plugins/0xray`)
|
|
53
|
+
7. Cursor fifth wear: fasten `.cursor/hooks.json` when absent (preToolUse / preCompact / afterFileEdit). Leaves an existing file alone. Not a fifth chat TUI.
|
|
54
|
+
8. Optional git hooks
|
|
52
55
|
|
|
53
56
|
**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
57
|
|
|
55
|
-
**Sound plant:** Dist audio beds
|
|
58
|
+
**Sound plant:** Dist audio beds are a mill (`@0xray/blip`), not a foundry organ catalog. Alias `"plant": "sound"` + `npx @0xray/foundry sound render` writes a crystal-clear wav (Rippel membrane/metal/mixer, not a sine toy) and a bed receipt. `sound-mixer` (`npx @0xray/foundry sound mix`) lives in the mill and levels every genre × tempo × motif — hats, plate, glue — not just the last bed. CLI shim `foundry sound` remains (0.1.11+). Inspect is mill-exported — not fake code-mill skills on a sound seat.
|
|
56
59
|
|
|
57
|
-
**Blip plant:**
|
|
60
|
+
**Blip plant:** Product mill `@0xray/blip` (not a mill copy). Hangar shop pair later. Alias `"plant": "blip"` + `npx @0xray/foundry blip render --brief "..." --mode still|motion:orb` writes a 4.44s mp4 **with an audio bed**. Registry v0: still + Rippel five (`orb` `swirl` `snap` `waves` `spark`). Motions are Rippel v2 `VisualConfig.circles` at ≥720p — sharp look + tempo/frequency animation on all five (wireframe is `--engine wireframe` only). Auto bed syncopates to the motion grid. Each mint wears a sparse seed mesh plus field accents (stars, grids, gradients, blinkers); receipt `visualConfig.mesh` + `visualConfig.field` are the fingerprints. `kapow` is a design opt (`motion:kapow`) — two-tier comic stamp on the same stanza. Organs live in the mill: `blip-vibe` (`npx @0xray/foundry blip vibe`) scores stamp density; `blip-looker` (`npx @0xray/foundry blip look`) is the friend hitting replay; appeal 0–10; ship bar is **8**. `still` is the Power Plant ident — plate dissolves over 4.44s at ≥720p (`#08090B` `#F5F7FA` `#3DE0E8` `#F5C518` `#4A7FD4`), not a frozen poster. Adding an organ is a mill publish, not an xray catalog PR. CLI shim `foundry blip` remains (0.1.11+). Inspect checks duration / mode id / file / audio.
|
|
58
61
|
|
|
59
62
|
## Memory routing + Repertoire (v3.3+)
|
|
60
63
|
|
|
61
|
-
**Station is the successor card** (Read `.xray/state/STATION.md`). Repertoire 0.2 is a thin routing seed (8 factory names). 0.1.0–0.1.8 were the same judgment organ; do not pin 0.1.8 for mill wear. Split: `docs-site/docs/guides/station-vs-repertoire.md`.
|
|
64
|
+
**Station is the successor card** (Read `.xray/state/STATION.md`). Repertoire 0.2 is a thin routing seed (8 factory names). The worn mill reads the **project copy** under `.xray/state/repertoire/`. 0.1.0–0.1.8 were the same judgment organ; do not pin 0.1.8 for mill wear. Split: `docs-site/docs/guides/station-vs-repertoire.md`.
|
|
62
65
|
|
|
63
66
|
`xray/features.json` → `memory_routing` (schema: `features.schema.json`):
|
|
64
67
|
|
|
@@ -68,7 +71,7 @@ Governance deliberation: **code-review**, **security-audit**, **researcher** wit
|
|
|
68
71
|
"provider": "repertoire",
|
|
69
72
|
"module_path": "node_modules/@0xray/repertoire/dist/provider/memory-routing-provider.js",
|
|
70
73
|
"config": {
|
|
71
|
-
"signalsPath": "
|
|
74
|
+
"signalsPath": ".xray/state/repertoire/curated_signals.json",
|
|
72
75
|
"statePath": ".xray/state/repertoire/inference-state.json",
|
|
73
76
|
"feedbackDir": ".xray/state/repertoire/feedback"
|
|
74
77
|
}
|
package/dist/CHANGELOG.md
CHANGED
|
@@ -6,11 +6,82 @@ The format is based on [Conventional Commits](https://www.conventionalcommits.or
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
### ✨ Features
|
|
10
|
+
- **Cursor fifth wear** — `install-bridges.cjs` fastens project `.cursor/hooks.json` (preToolUse / preCompact / afterFileEdit) so Cursor Cloud heats Station and gates tools. Leaves an existing file alone. Not a fifth chat TUI. No new MCP/skill surface. Pack gate (`REQUIRED_PACK_PATHS`) now requires `dist/integrations/cursor/hooks/{hooks.json,pre-tool-use.js,pre-compact.js,after-file-edit.js,cursor-hook-utils.js,cursor-usage-receipt.js}` so a published tarball cannot ship a dead consumer command. `preToolUse` / `afterFileEdit` rewrite the card when git HEAD or Repertoire count diverges — Ticket / Durable / Seed stay. OP-PROC stays in the hook, not on Station.
|
|
11
|
+
|
|
12
|
+
### 📚 Documentation
|
|
13
|
+
- Cursor fifth wear in README integrations table, AGENTS / AGENTS-consumer / SKILLS / llms.txt, and Docusaurus integrations / getting-started / consumer-migration.
|
|
14
|
+
- **Lead cadence (syncopation)** — `grok-bot/ops/LEAD-CADENCE.md` is the peer-lead OP-PROC: dummy `SKILLS.md` tests, same-sess wear + Station card, npm OTP+poll, always branch/worktree/PR, loop until Station is done, workstreams not idle pacers. Wired into `orchestrator` skill, AGENTS hot-swap, OPS-CATALOG. Not a new skill (Codex 69).
|
|
15
|
+
- **Repertoire project copy** — shipped `memory_routing.config.signalsPath` is `.xray/state/repertoire/curated_signals.json`. The factory tarball stays read-only. After compact the suit routes the living project names, not the 8-name seed.
|
|
16
|
+
- **Board clock** — critique board wakes on PR events and resumes the same critic. Two idle pacers (reviewer + lead-reader) are forbidden; they inflate context and cause compact. Merge after PASS+CI (gate A). Publish only after mill-gate D + `foundry gate`.
|
|
17
|
+
- **Dispatch encode** — lead cards ticket + PR URLs + “Wear, then review.” Critic OP-PROC lives on `SEATS.md` Reviewer. When a law is spoken twice, write it to disk this wake. No new skill.
|
|
18
|
+
- **Ship decision matrix** — lead-owned. A PR+CI · B pack (`assert-packed-dist-cli` + consumer smoke) · C `npm run release:docs-check` · D `npx @0xray/foundry release --i-mean-it`. Green CI is not ship. Spend / credentials stay Ask-first. Host Auto Review may still card npm/Railway; that is not the OS decision.
|
|
19
|
+
- **Metamorphosis** — an LLM becomes OP-PROC through in-context worn seats (same critic, same dummy, four-line dispatch). Spawning more bots is the old skin.
|
|
20
|
+
- **Publish OTP latch** — stay logged in (do not `npm logout`). Every time run `npm publish --access public` in the live TTY (no `--auth-type=web`, no `--otp=` from chat, no `tee`). Paste the clickable `auth/cli` URL. Do not ask for a 6-digit authenticator code in chat. Do not press Enter. Do not hand publish to a browser subagent. Poll `npm view` until the version is live. Then prove **fresh** and **upgrade** registry installs. `npm view` is not an install.
|
|
21
|
+
- **`npx 0xray validate` cleansed** — no longer shells leftover `.opencode/init.sh` (macOS `md5` + `enforcer-config.json`). Wear check: `REQUIRED_PACK_PATHS`, Cursor hooks, mill+inspect, repertoire. `init.sh` still boots OpenCode but accepts Linux `md5sum` and consumer `.xray/codex.json`.
|
|
22
|
+
- **Swamp reflection (new arch)** — `docs/reflections/swamp-new-arch-reflection-2026-09-20.md`. Card, organ, hook. Lying metal. Live tarball lag.
|
|
23
|
+
|
|
24
|
+
### 🔄 Changes
|
|
25
|
+
- **Durable Hold npm** — heat + `cursorBootNeedsRefresh` + `npx 0xray validate` drop/fail `Hold npm` on Station. Identity stays. Mill-gate holds the ship latch. Not a new skill.
|
|
26
|
+
- **Hangar catalog** — mill hangar docs use Clearing `GET /v1/catalog` as the directory (listed hangars: Groover DID + pin, plus solar + live shop), not a hardcoded extract/witness/pin route table. Groover MCP `list_hangars` reads that catalog. 0xray stays 4.0.15.
|
|
27
|
+
- **foundry-plant/0** — fasten is a protocol any mill implements, not a 0xray-owned catalog of plant kinds. Builtin plant is mill+inspect only. `foundry.json` `"plant": "@0xray/blip"` (alias `"blip"`) fastens whatever that mill package declares. Organs (looker, vibe, mixer) live in the mill; adding one is a mill publish, not an xray catalog PR. Nested mill `@0xray/foundry@0.1.12`. CLI shims `foundry blip|sound` still exist on foundry 0.1.11+. 0xray stays 4.0.15.
|
|
28
|
+
- **Blip/sound mills moved to `@0xray/blip`** — 4.44s drawers (render, kapow, vibe, wow-pass listen/cel, sound bed/mixer, looker) live in the blip product mill. `@0xray/foundry@0.1.11` shims `foundry blip|sound` including `blip look`. Railway plant consumes the product mill, not a hand-vendored copy. 0xray stays 4.0.15.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## [4.0.16] - 2026-09-20
|
|
33
|
+
|
|
34
|
+
### 🔄 Changes
|
|
35
|
+
|
|
36
|
+
### 🐛 Bug Fixes
|
|
37
|
+
- fix: type validate pack paths — no untyped mjs import in src/cli (ff936b276)
|
|
38
|
+
- fix: cleanse npx 0xray validate — wear check, not leftover init.sh (741cca410)
|
|
39
|
+
|
|
40
|
+
### 📚 Documentation
|
|
41
|
+
- docs: new-arch reflection after wading part of the swamp (12d1fff69)
|
|
42
|
+
- docs: persist peer-boot seat bc-49e17122 after four-line wear (5c8be98bb)
|
|
43
|
+
- docs: encode registry install as live-verify after npm view (bd32bd1c4)
|
|
44
|
+
- docs: encode npm CLI OTP latch — lead publishes, no subagent (d600d12a2)
|
|
45
|
+
|
|
46
|
+
### 🔎 Other Changes
|
|
47
|
+
- Merge branch 'cursor/npm-cli-otp-fbe0' — OTP latch, two-path live-verify, cleanse leftover validate (568797952)
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## [4.0.15] - 2026-09-17
|
|
52
|
+
|
|
53
|
+
### ✨ Features
|
|
54
|
+
- **Factory-blip vibe seat** — `blip-vibe` plant agent scores still + Rippel five + kapow on the same aesthetic organ. Appeal 0–10. Ship bar is **8**. Shared fill / tint / contrast / outline / flash / differ; kapow extras stay kapow-only. Kapow is a comic burst: 8–10 outer points, 6–8 inner, some spikes longer than others. `npx @0xray/foundry blip vibe`. Inspect stays duration / mode / file. No `@0xray/foundry` bump.
|
|
55
|
+
- **Factory-sound mixer seat** — `sound-mixer` plant agent levels every genre × tempo × motif (hats, plate, glue, phrase). `npx @0xray/foundry sound mix`. Dries the plate, pulls hot hats, eases glue. Inspect stays the last-bed gate. No `@0xray/foundry` bump.
|
|
56
|
+
- **Factory-blip kapow opt** — `--mode motion:kapow` is a two-tier stamp on the same stanza (outer cyan burst winds, inner gold burst + `KAPOW!` hit the jewel cut). Not a third look. v0 five stay. No `@0xray/foundry` bump.
|
|
57
|
+
|
|
58
|
+
### 🐛 Bug Fixes
|
|
59
|
+
- **Mixer matrix CI timeout** — the 60-seat `mixMatrix` mill test keeps the same gates; the `all` project 30s cap was killing a ~34s PASS on GitHub runners. Per-test timeout is 120s. No `@0xray/foundry` bump.
|
|
60
|
+
|
|
61
|
+
### 🔄 Changes
|
|
62
|
+
|
|
63
|
+
### 📚 Documentation
|
|
64
|
+
- docs: Claim C compact 8 — quiz-first no restates (e66ffe11f)
|
|
65
|
+
- docs: mention blip render on the consumer agents card (9cd6662bc)
|
|
66
|
+
- docs: Claim C compact 7 — quiz-first still summarizer keep (931547be6)
|
|
67
|
+
- docs: Claim C compact 6 — summarizer kept canaries, not the old window (a3a6a83a8)
|
|
68
|
+
- docs: Claim C memory protocol — quiz-first, no canary values (b38dcd5d4)
|
|
69
|
+
- docs: Station guide also denies mind-survival overclaim (af7b686ca)
|
|
70
|
+
- docs: compact scores disk, not conversation memory (6cf1d5d2f)
|
|
71
|
+
- docs: Station is survive-the-cut; Repertoire 0.1 is judgment (d87a39d37)
|
|
72
|
+
|
|
73
|
+
### 🧪 Tests
|
|
74
|
+
- test: Claim C quiz printer and canary leak scan for compact 7 (d1cff2de4)
|
|
75
|
+
|
|
9
76
|
---
|
|
10
77
|
|
|
11
78
|
## [4.0.14] - 2026-09-16
|
|
12
79
|
|
|
13
80
|
### ✨ Features
|
|
81
|
+
- **Factory-blip music drop** — every genre bed hits on the jewel cut (shared crash + motif answer), stamps the hook cell on the tag, and keeps six tellable bodies. Not a sectionGain fader. Inspect still PASSes. No `@0xray/foundry` bump.
|
|
82
|
+
- **Factory-blip drop seats** — cage recoils then whips (shards off the lantern). Cameras read as different shots (top flattens, low hero-lifts, dutch slashes the floor). Snap still cracks. Looker still eclipses. No `@0xray/foundry` bump.
|
|
83
|
+
- **Factory-blip drop rupture** — orb-cage and snap crack on the turn (gold lantern / held slash through the noun), not a linear spin. Looker wears one large eclipse moon the noun eats. Floor still fades; the punch lives on the jewel. No `@0xray/foundry` bump.
|
|
84
|
+
- **Factory-blip camera seats** — six seed shots (`front` `three-quarter` `top` `low` `dutch` `side`) plus a phrase travel / turn push-in. Cube jewel keeps its faces (quads → tris). Large faces actually fill. Floor fades on the turn. Horizon wash stays cyan/blue (no olive). Inner moons graze the disc so the noun can occlude. Embers stay tethered after the burst. `--camera` overrides; seed picks if omitted. Receipt `visualConfig.mesh.camera`. No `@0xray/foundry` bump.
|
|
14
85
|
- **Factory-blip prod-grade phrase** — hook/turn/tag now crossfade (`hookEase`/`turnEase`/`tagEase`). Still plates dissolve (~300ms) instead of hard-cutting. Focus orb wears field + mesh mass so two briefs do not clone. Ambient bed writes a 3-section score (turn crash, tag stab, walk on turn). Mill stays deterministic — no LLM in the render loop. No `@0xray/foundry` bump.
|
|
15
86
|
- **Factory-blip Rippel v2** — 4.44s is a Short: hook → turn → tag on one motion grid for picture and bed. Two looks (`focus` disc-satellites | `cage` Wu+field). Stereo AAC bed with a written motif (not `pick()` soup), better voices, mix pocket. Missing stream or inaudible bed FAILs inspect. No `@0xray/foundry` bump.
|
|
16
87
|
- **Factory-blip plant** — new factory plant sibling to mill + sound (not a mill copy). `foundry.json` `"plant": "blip"` fastens `blip` + `blip-inspect`. Dynamic motion registry (not a frozen Rippel enum). v0: still + Rippel five (`still` `orb` `swirl` `snap` `waves` `spark`). `kapow` is a growth stub. Still generator wears the Power Plant intro plate (void `#08090B` · ink `#F5F7FA` · cyan `#3DE0E8` · gold `#F5C518` · agent blue `#4A7FD4`). Hangar shop pair later. Brief → seed → still|motion:<id> → 4.44s mp4 → `.xray/blip/receipt.json`. Unknown id FAIL. No `@0xray/foundry` bump.
|
package/dist/README.md
CHANGED
|
@@ -13,14 +13,14 @@ Not a catalog of agents. The product is the **skeleton you wear**.
|
|
|
13
13
|
- **Bone** — three-subsystem OS: Inference · External Governance (Dynamo / Codex) · Autonomous Engine (thinDispatch)
|
|
14
14
|
- **Always on** — Codex 11 / 29 / 69, destructive shell, no new MCP/skill/handler surface
|
|
15
15
|
- **Temperament** — `frontier` | `guided` | `strict` | `auto` — how loud the engine is, not whether governance exists
|
|
16
|
-
- **Wear** — Grok, OpenCode, Hermes, OpenClaw. One SSOT gate
|
|
16
|
+
- **Wear** — Grok, OpenCode, Hermes, OpenClaw, plus Cursor project hooks. One SSOT gate
|
|
17
17
|
- **Muscle** — Repertoire: auto-enables when the module resolves; session-start writes a one-line resume so the next station is not born amnesiac
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
20
|
npm install 0xray
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
Consumer `npm install 0xray` auto-wires four
|
|
23
|
+
Consumer `npm install 0xray` auto-wires four chat bridges, Cursor project hooks, and seven MCP servers. Repertoire **0.2** is the factory memory organ (vendored): seed primitives, in-process routing, extra host MCP `repertoire`. Not an eighth `xray-*` server. Opt out with `"enabled": false, "provider": "repertoire"`.
|
|
24
24
|
|
|
25
25
|
## Quick Start
|
|
26
26
|
|
|
@@ -51,7 +51,7 @@ Docs: [guides/autonomy-command](docs-site/docs/guides/autonomy-command.md) · Sk
|
|
|
51
51
|
|
|
52
52
|
| Version | Highlights |
|
|
53
53
|
|---------|------------|
|
|
54
|
-
| **Unreleased** | Shop plant first-class (`shop-extract`, `shop-witness`, `shop-pin` + `foundry.json` `shopPlant`).
|
|
54
|
+
| **Unreleased** | Fasten is **foundry-plant/0**: builtin plant is mill+inspect only. `foundry.json` `"plant": "@0xray/blip"` (aliases `"plant": "blip"` / `"plant": "sound"`) fastens whatever that mill declares (looker / vibe / mixer live in the mill). Nested mill `@0xray/foundry@0.1.12`. CLI shims `foundry blip\|sound` remain (0.1.11+). Shop plant first-class (`shop-extract`, `shop-witness`, `shop-pin` + `foundry.json` `shopPlant`). 0xray stays 4.0.15. |
|
|
55
55
|
| **4.0.9** | Mill target: postinstall does not mill npm global prefix or `_npx` as a consumer. Isolated HOME skips machine `~/.grok`. |
|
|
56
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) |
|
|
57
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. |
|
|
@@ -103,11 +103,11 @@ Docs: [guides/autonomy-command](docs-site/docs/guides/autonomy-command.md) · Sk
|
|
|
103
103
|
On `npm install 0xray` in a consumer project, postinstall automatically:
|
|
104
104
|
|
|
105
105
|
1. Copies **`AGENTS-consumer.md` → `AGENTS.md`**. Does **not** write consumer-root **`SKILLS.md`**.
|
|
106
|
-
2. Fastens **mill plant** (`mill` + `inspect`).
|
|
106
|
+
2. Fastens **mill plant** (`mill` + `inspect`). Fasten is **foundry-plant/0**: builtin plant is mill+inspect only. `foundry.json` `"plant": "@0xray/blip"` (aliases `"plant": "blip"` / `"plant": "sound"`) fastens whatever that mill package declares — organs (looker, vibe, mixer) live in the mill, not an xray catalog. Nested mill `@0xray/foundry@0.1.12`. CLI shims `foundry blip|sound` still exist on foundry 0.1.11+; fasten is the new cut. Not a 45-skill / 42-agent costume dump. `foundry.json` `"costume": true` is the opt-in dump.
|
|
107
107
|
3. Seeds **`.gitignore`** from `.gitignore.default` (if absent)
|
|
108
108
|
4. Deploys **`.xray/`** config (`codex.json`, `features.json`, `config.json`) then overlays **their** plant
|
|
109
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)
|
|
110
|
+
6. Installs **4 chat bridges**: OpenCode, Grok, Hermes, OpenClaw, plus **Cursor** `.cursor/hooks.json` (PPE + wiring; mill plant, not costume)
|
|
111
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
112
|
8. Installs git pre-commit hook (non-blocking if not a git repo)
|
|
113
113
|
|
|
@@ -159,7 +159,7 @@ Pluggable `memory_routing` block in `features.json` (validated by `features.sche
|
|
|
159
159
|
"provider": "repertoire",
|
|
160
160
|
"module_path": "node_modules/@0xray/repertoire/dist/provider/memory-routing-provider.js",
|
|
161
161
|
"config": {
|
|
162
|
-
"signalsPath": "
|
|
162
|
+
"signalsPath": ".xray/state/repertoire/curated_signals.json",
|
|
163
163
|
"statePath": ".xray/state/repertoire/inference-state.json",
|
|
164
164
|
"feedbackDir": ".xray/state/repertoire/feedback"
|
|
165
165
|
}
|
|
@@ -188,6 +188,7 @@ Docs: [memory routing](docs-site/docs/guides/memory-routing.md) · [Repertoire](
|
|
|
188
188
|
| **Grok CLI / Build** | `npx 0xray grok install` | Project `.grok/plugins/0xray` (shared HOME does not clobber machine plugin), 7 MCPs servers |
|
|
189
189
|
| **Hermes Agent** | `npx 0xray hermes install` | `~/.hermes/plugins/xray-hermes`, consumer root marker |
|
|
190
190
|
| **OpenClaw** | `npx 0xray openclaw install` | `.xray/config/openclaw.json`, skill sync |
|
|
191
|
+
| **Cursor** | postinstall (`installCursorBridge`) | Fastens `.cursor/hooks.json` (preToolUse / preCompact / afterFileEdit). Leaves an existing file alone. Not a fifth chat TUI. |
|
|
191
192
|
|
|
192
193
|
## Governance & Codex
|
|
193
194
|
|
|
@@ -202,7 +203,7 @@ Docs: [memory routing](docs-site/docs/guides/memory-routing.md) · [Repertoire](
|
|
|
202
203
|
| Suite | Status (v4.0.1) |
|
|
203
204
|
|-------|-----------------|
|
|
204
205
|
| Four-floor consumer e2e | OpenCode 34/0 · Grok 63/0 · Hermes 39/0/2 · OpenClaw 96/0/1 (npm 4.0.0 pack) |
|
|
205
|
-
| Consumer smoke | `npm run release:gate` — pack → clean install → 7 MCPs + 4 bridges + organ on |
|
|
206
|
+
| Consumer smoke | `npm run release:gate` — pack → clean install → 7 MCPs + 4 chat bridges + Cursor hooks + organ on |
|
|
206
207
|
| Pack → tmp proof | `npm run pack:tmp-proof` — tgz install + `foundry mint --skip-live` + hangar shops + inspect (no costume dump). Playwright n/a (CLI). |
|
|
207
208
|
|
|
208
209
|
```bash
|
package/dist/SKILLS.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**4.0** — a suit that survives the context window
|
|
4
4
|
|
|
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`.
|
|
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`. Fasten is **foundry-plant/0**: builtin plant is mill+inspect only. `foundry.json` `"plant": "@0xray/blip"` (aliases `"plant": "blip"` / `"plant": "sound"`) fastens whatever that mill package declares — organs (looker, vibe, mixer) live in the mill, not this catalog. Nested mill `@0xray/foundry@0.1.12`. CLI shims `foundry blip|sound` still exist on foundry 0.1.11+. 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
|
|
|
@@ -76,7 +76,7 @@ xray ships 45 knowledge skills (`src/skills/<name>/SKILL.md`) as the **costume /
|
|
|
76
76
|
|
|
77
77
|
| Skill | Agent | Description |
|
|
78
78
|
|-------|-------|-------------|
|
|
79
|
-
| `orchestrator` | @orchestrator | Multi-agent coordination + **lead-dev mode** (codex 67–68) |
|
|
79
|
+
| `orchestrator` | @orchestrator | Multi-agent coordination + **lead-dev mode** (codex 67–68) + lead cadence (dispatch four lines; critic Reads SEATS; ship matrix A–D in `LEAD-CADENCE.md`) |
|
|
80
80
|
| `xray-orchestrator` | — | xray orchestration skill (MCP orchestrator surface) |
|
|
81
81
|
| `processor-pipeline` | — | Data processing pipeline management |
|
|
82
82
|
| `boot-orchestrator` | — | Framework boot orchestration |
|
|
@@ -150,6 +150,7 @@ npx 0xray skill:install <source>
|
|
|
150
150
|
| OpenCode (after setup) | `.opencode/skills/<name>/SKILL.md` |
|
|
151
151
|
| Grok | project `.grok/plugins/0xray/skills/<name>/SKILL.md` (machine `~/.grok/plugins/0xray` is not last-wins) |
|
|
152
152
|
| Hermes / OpenClaw | Platform skill dirs (postinstall sync) |
|
|
153
|
+
| Cursor | Project `.cursor/hooks.json` (PPE + Station heat). Not a skill dump. |
|
|
153
154
|
|
|
154
155
|
## Related features (since 3.1)
|
|
155
156
|
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { createRequire } from 'module';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
4
5
|
import { frameworkLogger } from '../../core/framework-logger.js';
|
|
5
6
|
import { syncBuiltinSkills } from './skill-install.js';
|
|
6
7
|
import { mintAfterWear } from './foundry-mint-wear.js';
|
|
7
|
-
const __dirname = path.dirname(
|
|
8
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
8
9
|
const require = createRequire(import.meta.url);
|
|
9
10
|
const packageRoot = path.join(__dirname, '..', '..', '..');
|
|
10
11
|
const millSuit = require(path.join(packageRoot, 'scripts', 'foundry', 'mint-suit.cjs'));
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { createRequire } from 'module';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
4
5
|
import { frameworkLogger } from '../../core/framework-logger.js';
|
|
5
6
|
import { syncBuiltinSkills } from './skill-install.js';
|
|
6
7
|
import { mintAfterWear } from './foundry-mint-wear.js';
|
|
7
8
|
import { OpenClawConfigLoader } from '../../integrations/openclaw/config.js';
|
|
8
9
|
import { writeSuitSessionBoot } from '../../nucleus/suit-temperament.js';
|
|
9
|
-
const __dirname = path.dirname(
|
|
10
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
10
11
|
const require = createRequire(import.meta.url);
|
|
11
12
|
const millSuit = require(path.join(__dirname, '..', '..', '..', 'scripts', 'foundry', 'mint-suit.cjs'));
|
|
12
13
|
const wiring = require(path.join(__dirname, '..', '..', '..', 'scripts', 'node', 'bridge-mcp-wiring.cjs'));
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { createRequire } from 'module';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
4
5
|
import { frameworkLogger } from '../../core/framework-logger.js';
|
|
5
6
|
import { syncBuiltinSkills } from './skill-install.js';
|
|
6
7
|
import { mintAfterWear, wantsCostume } from './foundry-mint-wear.js';
|
|
7
|
-
const __dirname = path.dirname(
|
|
8
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
8
9
|
const require = createRequire(import.meta.url);
|
|
9
10
|
const wiring = require(path.join(__dirname, '..', '..', '..', 'scripts', 'node', 'bridge-mcp-wiring.cjs'));
|
|
10
11
|
export function registerOpencodeCommands(opencodeCmd) {
|