0xray 4.0.14 → 4.0.15

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.
Files changed (68) hide show
  1. package/.grok-plugin/plugin.json +1 -1
  2. package/.opencode/skills/orchestrator/SKILL.md +19 -1
  3. package/.xray/features.json +2 -2
  4. package/AGENTS-consumer.md +10 -5
  5. package/AGENTS.md +10 -7
  6. package/README.md +8 -7
  7. package/SKILLS.md +3 -2
  8. package/dist/AGENTS.md +10 -7
  9. package/dist/CHANGELOG.md +48 -0
  10. package/dist/README.md +8 -7
  11. package/dist/SKILLS.md +3 -2
  12. package/dist/cli/commands/hermes-install.js +2 -1
  13. package/dist/cli/commands/openclaw-install.js +2 -1
  14. package/dist/cli/commands/opencode-install.js +2 -1
  15. package/dist/cli/index.js +2 -1
  16. package/dist/integrations/cursor/hooks/cursor-hook-utils.js +9 -0
  17. package/dist/integrations/grok/grok-cli.js +2 -1
  18. package/dist/integrations/openclaw/plugin/xray-pre-tool/package.json +1 -1
  19. package/dist/reporting/log-parser.js +2 -2
  20. package/dist/skills/orchestrator/SKILL.md +19 -1
  21. package/llms.txt +8 -7
  22. package/package.json +2 -1
  23. package/scripts/foundry/CHANGELOG.md +33 -1
  24. package/scripts/foundry/README.md +12 -5
  25. package/scripts/foundry/assert-packed-dist-cli.mjs +6 -0
  26. package/scripts/foundry/blip-kapow.cjs +2 -0
  27. package/scripts/foundry/blip-looker.cjs +2 -0
  28. package/scripts/foundry/blip-render.cjs +2 -1237
  29. package/scripts/foundry/blip-rippel-organs.cjs +2 -0
  30. package/scripts/foundry/blip-rippel.cjs +2 -1963
  31. package/scripts/foundry/blip-scene.cjs +2 -0
  32. package/scripts/foundry/blip-stroke.cjs +2 -0
  33. package/scripts/foundry/blip-vibe.cjs +2 -0
  34. package/scripts/foundry/blip.mjs +23 -97
  35. package/scripts/foundry/cli.mjs +2 -2
  36. package/scripts/foundry/inspect.mjs +62 -19
  37. package/scripts/foundry/mill-plant.cjs +598 -0
  38. package/scripts/foundry/mint-suit.cjs +189 -99
  39. package/scripts/foundry/package.json +12 -1
  40. package/scripts/foundry/plant/agents/blip-inspect.yml +1 -1
  41. package/scripts/foundry/plant/agents/blip-looker.yml +5 -0
  42. package/scripts/foundry/plant/agents/blip-vibe.yml +5 -0
  43. package/scripts/foundry/plant/agents/blip.yml +1 -1
  44. package/scripts/foundry/plant/agents/inspect.yml +1 -1
  45. package/scripts/foundry/plant/agents/mill.yml +1 -1
  46. package/scripts/foundry/plant/agents/sound-inspect.yml +1 -1
  47. package/scripts/foundry/plant/agents/sound-mixer.yml +5 -0
  48. package/scripts/foundry/plant/agents/sound.yml +1 -1
  49. package/scripts/foundry/plant/motions/MOTION-REGISTRY.md +15 -9
  50. package/scripts/foundry/plant/motions/registry.json +5 -4
  51. package/scripts/foundry/plant/skills/blip/SKILL.md +4 -4
  52. package/scripts/foundry/plant/skills/blip-inspect/SKILL.md +2 -2
  53. package/scripts/foundry/plant/skills/blip-looker/SKILL.md +30 -0
  54. package/scripts/foundry/plant/skills/blip-vibe/SKILL.md +30 -0
  55. package/scripts/foundry/plant/skills/inspect/SKILL.md +2 -2
  56. package/scripts/foundry/plant/skills/sound/SKILL.md +3 -1
  57. package/scripts/foundry/plant/skills/sound-inspect/SKILL.md +1 -1
  58. package/scripts/foundry/plant/skills/sound-mixer/SKILL.md +28 -0
  59. package/scripts/foundry/sound-bed.cjs +2 -454
  60. package/scripts/foundry/sound-mixer.cjs +2 -0
  61. package/scripts/foundry/sound-rippel.cjs +2 -1434
  62. package/scripts/foundry/sound-taste.cjs +2 -0
  63. package/scripts/foundry/sound-voice.cjs +2 -0
  64. package/scripts/foundry/sound.mjs +23 -81
  65. package/scripts/node/install-bridges.cjs +39 -4
  66. package/src/integrations/openclaw/plugin/xray-pre-tool/package.json +1 -1
  67. package/src/skills/orchestrator/SKILL.md +19 -1
  68. package/xray/features.json +2 -2
@@ -1,5 +1,6 @@
1
1
  import * as fs from "fs";
2
2
  import * as path from "path";
3
+ import { fileURLToPath } from "node:url";
3
4
  import { frameworkLogger } from "../core/framework-logger.js";
4
5
  export function levelToStatus(level) {
5
6
  switch (level.toUpperCase()) {
@@ -103,8 +104,7 @@ export function frameworkLogToParsedEntry(entry) {
103
104
  }
104
105
  export async function readCurrentLogFile(timeRange) {
105
106
  const logs = [];
106
- const currentFileUrl = import.meta.url;
107
- const currentFilePath = new URL(currentFileUrl).pathname;
107
+ const currentFilePath = fileURLToPath(import.meta.url);
108
108
  const projectRoot = path.resolve(path.dirname(currentFilePath), "../../");
109
109
  const logDir = path.join(projectRoot, "logs", "framework");
110
110
  const logFile = path.join(logDir, "activity.log");
@@ -58,4 +58,22 @@ 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:** spawn the OTP browser, watch success, poll `npm view` until the new version is live. Do not move on early. Railway same law.
72
+ - **Live tick, not pacer:** `/loop` runs work now. Keep workstreams moving. Do not idle-wait 12 minutes.
73
+ - **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`.
74
+ - **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.
75
+ - **Close:** loop until Station is done. Compact: Station survives the cut. Repertoire keeps names.
76
+ - **Board:** critic Strict comments; forge implements; lead stays main thread.
77
+ - **Codex 69:** rewire this skill and existing ops. Do not add a new `SKILL.md` to hold the cadence.
78
+ - **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.
79
+ - **Metamorphosis:** LLM → OP-PROC is in-context worn seats (same critic, same dummy, resume only). Not more bots.
package/llms.txt CHANGED
@@ -4,11 +4,12 @@
4
4
 
5
5
  **4.0** — mill+inspect plant, 7 MCPs, Codex 69. Constitution always on.
6
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. Sound seats: `"plant": "sound"` fastens `sound` + `sound-inspect` (mill off). Blip seats: `"plant": "blip"` fastens `blip` + `blip-inspect` (mill off). Inspect reports the last bed or blip receipt. Not costume.
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. 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 — adding an organ is a mill publish, not an xray catalog PR. CLI shims `foundry blip|sound` still exist on foundry 0.1.11+; fasten is the new cut. Inspect reports the last bed or blip receipt the mill exported. Nested mill `@0xray/foundry` 0.1.12. Not costume.
8
8
 
9
9
  ## Wear (what a stranger gets)
10
10
 
11
- - `npm install 0xray` — postinstall fastens mill+inspect, writes 7 MCP `.mcp.json`, four host bridges (OpenCode, Grok, Hermes, OpenClaw), overlays their plant. Grok last-mile dest is project `.grok/plugins/0xray`. Shared HOME does not last-wins clobber machine `~/.grok/plugins/0xray`. Isolated HOME must not write the machine plugin. Does **not** write consumer-root `SKILLS.md`.
11
+ - `npm install 0xray` — postinstall fastens mill+inspect, writes 7 MCP `.mcp.json`, four host bridges (OpenCode, Grok, Hermes, OpenClaw) plus Cursor `.cursor/hooks.json`, overlays their plant. Grok last-mile dest is project `.grok/plugins/0xray`. Shared HOME does not last-wins clobber machine `~/.grok/plugins/0xray`. Isolated HOME must not write the machine plugin. Does **not** write consumer-root `SKILLS.md`. Lead cadence: `grok-bot/ops/LEAD-CADENCE.md` — a peer continues from Station + Repertoire; dummy tests `SKILLS.md`; same-sess wear; branch/PR; OTP then poll; loop until Station; live ticks, not idle pacers.
12
+
12
13
  - `npx @0xray/foundry mint --skip-live` — re-fasten mill plant, then inspect.
13
14
  - `npx @0xray/foundry inspect --skip-live` — plant-vs-worn, receipt, CI. Chat is not a receipt.
14
15
 
@@ -42,10 +43,10 @@ Not an 8th `xray-*` server. Repertoire is a vendored organ (`npx @0xray/repertoi
42
43
 
43
44
  ## Agent map (exo, not dump)
44
45
 
45
- - **Mill** — fasten their plant; factory discipline. Nested mill `@0xray/foundry` 0.1.10.
46
- - **Inspect** — diffs, plant-vs-worn, mill receipt, CI, live tarball GET. Sound seat: last bed PASS/FAIL. Blip seat: last 4.44s PASS/FAIL.
47
- - **Sound** — factory-sound plant. Brief → seed → genre → crystal mill wav (Rippel membrane/metal/mixer) → metrics gate. Not a mill copy. Not a 3-sine toy.
48
- - **Blip** — factory-blip plant (sibling to mill + sound, not a mill copy). Brief → seed → still|motion:<id> → 4.44s mp4 + audio bed. Motions are Rippel v2 VisualConfig at ≥720p (sharp look + tempo/frequency animation on all five). Sparse seed mesh plus field accents (stars, grids, gradients, blinkers) are the NFT fingerprints. v0: still + Rippel five. `kapow` is a growth stub. `still` is the Power Plant ident (plate dissolves, not a frozen poster). Hangar shop pair later.
46
+ - **Mill** — fasten their plant; factory discipline. Nested mill `@0xray/foundry` 0.1.12 (foundry-plant/0). Builtin plant is mill+inspect. CLI shims `foundry blip|sound` remain (0.1.11+).
47
+ - **Inspect** — diffs, plant-vs-worn, mill receipt, CI, live tarball GET. Fastened mill inspect is “did we wear what the mill declared” plus mill-exported inspect. Sound seat: last bed PASS/FAIL. Blip seat: last 4.44s PASS/FAIL.
48
+ - **Sound** — factory-sound mill (`@0xray/blip`). Brief → seed → genre → crystal mill wav (Rippel membrane/metal/mixer) → metrics gate. Mixer organ lives in the mill. Not a mill copy. Not a 3-sine toy.
49
+ - **Blip** — factory-blip mill (`@0xray/blip`). Brief → seed → still|motion:<id> → 4.44s mp4 + audio bed. Motions are Rippel v2 VisualConfig at ≥720p (sharp look + tempo/frequency animation on all five). Sparse seed mesh plus field accents (stars, grids, gradients, blinkers) are the NFT fingerprints. v0: still + Rippel five. `kapow` is a design opt (two-tier stamp on the stanza). `still` is the Power Plant ident (plate dissolves, not a frozen poster). Organs (inspect / vibe / mixer / looker) are declared by the mill, not a foundry catalog. Hangar shop pair later.
49
50
  - **Hangar** — plants factory shops on the four floors. Coexists with mill plant via shop plant allowlist.
50
51
  - **42 YML / 45 SKILL.md** — exo catalog in this repo. Not default consumer wear.
51
52
 
@@ -55,7 +56,7 @@ Not an 8th `xray-*` server. Repertoire is a vendored organ (`npx @0xray/repertoi
55
56
  - [AGENTS.md](AGENTS.md) — framework card
56
57
  - [AGENTS-consumer.md](AGENTS-consumer.md) — consumer card (copied to `AGENTS.md` on install)
57
58
  - [SKILLS.md](SKILLS.md) — catalog (costume / self-plant, not default sync)
58
- - [Foundry](docs-site/docs/architecture/v4-foundry.md) — mill vs exo, shopPlant
59
+ - [Foundry](docs-site/docs/architecture/v4-foundry.md) — mill vs exo, foundry-plant/0, shopPlant
59
60
  - [Features since 3.1](docs-site/docs/guides/features-since-3.1.md)
60
61
 
61
62
  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.14",
3
+ "version": "4.0.15",
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",
@@ -212,6 +212,7 @@
212
212
  "vendor/@0xray/repertoire/"
213
213
  ],
214
214
  "dependencies": {
215
+ "@0xray/blip": "^0.1.2",
215
216
  "@modelcontextprotocol/sdk": "^1.0.4",
216
217
  "commander": "^11.1.0",
217
218
  "express": "^5.2.1",
@@ -2,6 +2,38 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ Shim `sound-voice.cjs` → `@0xray/blip/sound-voice`. Depend on published `@0xray/blip@^0.1.2`. Foundry stamp stays 0.1.12. Do not vendor mill drawers.
6
+
7
+ ## [0.1.12] - 2026-09-18
8
+
9
+ Fasten is foundry-plant/0: mill packages declare plants in package.json (`mill.protocol`, prefix selection when skills/agents are omitted) and foundry copies organs from that package. Builtin catalog is mill+inspect only; foundry does not catalog mill organs. `foundry.json` `"plant": "blip"|"sound"` are package aliases for `@0xray/blip`, not skill lists. Unknown mill packages fail closed (`npm i`). Inventory records `millPackage` and `millProtocol` when a mill package was used.
10
+
11
+ ## [0.1.11] - 2026-09-18
12
+
13
+ Blip and sound mill drawers moved to `@0xray/blip` (wow-pass listen/cel + looker organ in that package). This foundry keeps fasten + inspect + `foundry blip|sound` shims including `blip look` / `blip replay`. Depend on `@0xray/blip@^0.1.0`. Stamp 0.1.11 on plant agent YAMLs and llms.txt. Four organs: inspect = file/duration, vibe = stamp density, mixer = ears, looker = friend hitting replay (bar 8).
14
+
15
+ ### During 0.1.10 (no mill bump)
16
+
17
+ Factory-blip vibe seat: `blip-vibe` 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. Inspect stays last-blip. No version bump.
18
+
19
+ Factory-sound mixer seat: `sound-mixer` plant agent levels every genre × tempo × motif (hats / plate / glue). `npx @0xray/foundry sound mix`. Plate send/feedback down, hot hats pulled, glue eased. Inspect stays last-bed. No version bump.
20
+
21
+ Factory-blip kapow design opt: `--mode motion:kapow` paints a two-tier stamp on hook → turn → tag. Outer cyan burst winds, inner gold burst + word slam the jewel cut. One noun in the hole. Not a Rippel import and not a look. Foundry 0.1.10 — no bump.
22
+
23
+ Factory-blip music drop: `motifOf` seed cell (hook statement → turn answer → tag stamps hook[0]). `mixPhraseDrop` lands a crash on `phraseMarks.turnAt` — same beat as the jewel cut — on every genre. Ambient/rock no longer keep private crashes. Six bodies stay tellable. Inspect chop/levels/peak still PASS.
24
+
25
+ Factory-blip entertainment verb: focus moons paint behind the nucleus then in front (real occlusion). Strike / embers / ribbons wear the house noun (cyan disc + gold pupil). Embers erupt on the turn. Mesh stays the jewel so cage and mesh still sort. Iterate pass is every seat ≥7; drop is every seat ≥8.
26
+
27
+ Factory-blip stellar pass: phrase eases spin (hook crawl → turn whip → tag hold). Mesh is a cyan/gold jewel with vertex beads. Strike wears a ghost hull under 2–3 thick strikes. Embers seat coals on verts and edge midpoints with longer wakes. Focus satellites occlude. Sacred-flow is one poly + nucleus + ring. Bed sectionGain is a Short (turn louder than hook, tag seals).
28
+
29
+ Factory-blip metamorphosis pass: mill mesh wears a phrase-driven face wash; strike holds 2–3 edges (never the full hull); embers are coals with heat wakes, not pinholes. Cage keeps the nucleus and drops orbiting HUD ticks. Waves drop the gold playhead and gain turn amplitude. Phrase is mass, not a zoom knob.
30
+
31
+ Factory-blip drops the outer-edge HUD bezel. Field grids are `floor` or `none`. Legacy receipt ids `ticks` / `meridian` no-op — no ruler ticks on the frame, no meridian box.
32
+
33
+ Factory-blip course-correct: mill swirl / snap / spark are no longer one drawer (`mesh` / `strike` / `embers`). Sticker-sheet satellites stay on focus only. Unknown `--genre` fails closed. Still plate shares the seed genre. Auto bed writes imaged stereo (hats/color off-center), not L=R upmix. Receipt `stereoImage`.
34
+
35
+ Sound mill ports techno FM lead, phonk formant stabs, rock + timeless tables (country→timeless, game→techno). Ambient scale is the 14-note Rippel table. Foundry 0.1.10 — no bump.
36
+
5
37
  Factory-blip phrase eases (hookEase/turnEase/tagEase). Still plates dissolve (~300ms). Focus orb wears field + mesh mass. Ambient bed is a 3-section score (turn crash, tag stab). Mill stays deterministic — no LLM in the render loop.
6
38
 
7
39
  Factory-blip is a 4.44s Short: hook → turn → tag on the shared motion grid (picture + bed). Motif lines, pad in-key, bass an octave down. Voices: polyBLEP + biquad, layered kick, FM hat + noise, 2-op rhodes. Mix pocket + short plate on color/hat.
@@ -20,7 +52,7 @@ Factory-blip lines: Wu hairline (solid 1px core, coverage AA as the only glow).
20
52
 
21
53
  Factory-blip lines iridesce: cyan/gold/blue travel + glow + beat fireflies on the sparse cage. Field stars / grids / gradients / blinkers are luminous, not CAD ticks. Not more wire. Not a strobe.
22
54
 
23
- Factory-blip field accents: uniqueness is stars / grids (`floor` `meridian` `ticks`) / gradients / blinkers around one sparse seed cage. Receipt `visualConfig.mesh` + `visualConfig.field`. Not more wire in the middle.
55
+ Factory-blip field accents: uniqueness is stars / grids (`floor` / `none`) / gradients / blinkers around one sparse seed cage. Receipt `visualConfig.mesh` + `visualConfig.field`. Not more wire in the middle.
24
56
 
25
57
  Factory-blip meshes: every mint gets a seed-unique polyhedron (12 families + gait). Worn by all five viz and the Power Plant ident.
26
58
 
@@ -26,8 +26,11 @@ npx @0xray/foundry mint
26
26
  npx @0xray/foundry inspect [--skip-live]
27
27
  npx @0xray/foundry sound render [--brief TEXT] [--genre ambient|techno|jazz]
28
28
  npx @0xray/foundry sound inspect
29
- npx @0xray/foundry blip render --brief TEXT --mode still|motion:<id> [--bed PATH] [--engine rippel|wireframe]
29
+ npx @0xray/foundry sound mix
30
+ npx @0xray/foundry blip render --brief TEXT --mode still|motion:<id> [--look focus|cage] [--body mill|rippel] [--genre ambient|techno|phonk|jazz|rock|timeless] [--camera front|three-quarter|top|low|dutch|side] [--bed PATH] [--engine rippel|wireframe]
30
31
  npx @0xray/foundry blip inspect
32
+ npx @0xray/foundry blip vibe
33
+ npx @0xray/foundry blip look
31
34
  npx @0xray/foundry ci [--commit SHA] [--report]
32
35
  npx @0xray/foundry hooks
33
36
  ```
@@ -57,19 +60,23 @@ After mill plant is fastened, overlay their plant (defaults; remap in `foundry.j
57
60
 
58
61
  **Mill-fill is law:** their keys/files win; mill names they did not plant stay unless they overlay the same name. JSON facets always merge. Skill overlay is project dirs on every TUI floor (OpenCode, Grok, Hermes, OpenClaw). YML agents stay OpenCode. CLI re-wear calls mint **once** after mill copies. Isolated HOME is passwd home, not `os.homedir()`. CI report is `.xray/foundry-ci-report.json` (`.opencode/logs` shim).
59
62
 
60
- **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.
63
+ **Default mill plant:** `mill` + `inspect` (inspect AI work). Fasten is **foundry-plant/0**: builtin plant is mill+inspect only (files from this package `plant/`). 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.
61
64
 
62
- **Sound plant (factory-sound):** `foundry.json` `"plant": "sound"` fastens `sound` + `sound-inspect` and turns mill off. Spine: brief → checksum seed → genre (`ambient` | `techno` | `jazz` | `phonk`) → crystal-clear headless wav (Rippel membrane + metal + mixer, not a 3-sine toy) → metrics gate → `.xray/sound-bed-receipt.json`. Tone.Offline is blocked in Node (no `OfflineAudioContext`); `sound-rippel.cjs` is the lean mill port of `htafolla/rippel-synapse-flow`. Inspect reports the plant plus last bed `PASS`/`FAIL`. Not costume. No `@0xray/foundry` bump.
65
+ **foundry-plant/0:** `foundry.json` `"plant": "@0xray/blip"` (aliases `"plant": "blip"` / `"plant": "sound"`) fastens whatever that mill package declares and ships in its own `plant/`. Organs (looker, vibe, mixer) live in the mill. Adding an organ is a mill publish, not a foundry catalog PR. CLI shims `foundry blip|sound` still exist on foundry 0.1.11+; fasten is the new cut. Foundry **0.1.12**.
66
+
67
+ **Sound plant (factory-sound):** mill `@0xray/blip`. Alias `"plant": "sound"` fastens what that mill declares (`sound` + `sound-inspect` + `sound-mixer` today) and turns mill off. Spine: brief → checksum seed → genre (`ambient` | `techno` | `jazz` | `phonk`) → crystal-clear headless wav (Rippel membrane + metal + mixer, not a 3-sine toy) → metrics gate → `.xray/sound-bed-receipt.json`. `npx @0xray/foundry sound mix` levels every genre × tempo × motif (hats / plate / glue). Tone.Offline is blocked in Node (no `OfflineAudioContext`). Mixer organ lives in `@0xray/blip`; this package shims `foundry sound`. Inspect reports the mill-declared plant plus last bed `PASS`/`FAIL`. Not costume.
68
+
69
+ A 4.44s lock is a Short: seed motif (hook cell → turn answer → tag stamps hook[0]). The crash lands on the jewel cut.
63
70
 
64
71
  A friend would hear: the sound mill mills Dist beds like Rippel’s prototype grew up — kick membranes, metal hats, and a crystal-clear mixer, not a muddy toy and not a 3-sine pad.
65
72
 
66
- **Blip plant (factory-blip):** sibling factory plant to mill + sound — not a mill copy. `foundry.json` `"plant": "blip"` fastens `blip` + `blip-inspect` and turns mill off. Motions live in `plant/motions/registry.json` (not a frozen Rippel enum). v0: `still` + Rippel five (`orb` `swirl` `snap` `waves` `spark`). `kapow` is a growth stub (FAIL until a renderer ships). Unknown id FAIL. Rippel v2 default motion path is the Rippel converter (`VisualConfig.circles` → canvas / 3d-sacred / neural / waveform / particles) at ≥720p — sharp look + tempo/frequency animation on all five. Audio syncopates to the motion grid (same seed, tempo, phase0=0). Each mint wears a sparse seed mesh plus field accents (stars, grids, gradients, blinkers) so 4.44s is unique blip art; receipt `visualConfig.mesh` + `visualConfig.field` are the fingerprints. ffmpeg wireframe is `--engine wireframe` only. `still` is the Power Plant ident (void `#08090B` · ink `#F5F7FA` · cyan `#3DE0E8` · gold `#F5C518` · agent blue `#4A7FD4`) — titlecard / corridor / rain / endcard dissolve over 4.44s at ≥720p, not a frozen poster. Every 4.44s mp4 muxes a stereo AAC bed (`--bed` or auto sound mill) → `.xray/blip/receipt.json`. Missing stream or inaudible bed = inspect FAIL. Inspect reports the plant, live ids, plus last blip `PASS`/`FAIL`. Not costume. No `@0xray/foundry` bump.
73
+ **Blip plant (factory-blip):** mill `@0xray/blip` — sibling factory to mill + sound, not a mill copy. Alias `"plant": "blip"` fastens what that mill declares (`blip` + `blip-inspect` + `blip-vibe` + `blip-looker` today) and turns mill off. `npx @0xray/foundry blip vibe` scores stamp density. `npx @0xray/foundry blip look` is the friend hitting replay (appeal 0–10, ship bar 8). Motions live in `plant/motions/registry.json` (not a frozen Rippel enum). v0: `still` + Rippel five (`orb` `swirl` `snap` `waves` `spark`). `kapow` is a design opt — two-tier comic stamp on the same stanza (outer burst winds, inner burst + word slam the jewel cut). Unknown id FAIL. Rippel v2 default motion path is the Rippel converter (`VisualConfig.circles` → canvas / 3d-sacred / neural / waveform / particles) at ≥720p — one mill suit (Wu, Power Plant, hook → turn → tag) on `--look` / `--body` / `--genre` / `--camera` (seed picks). Audio syncopates to the motion grid (same seed, tempo, phase0=0). Each mint wears a sparse seed mesh plus a seed camera (front / three-quarter / top / low / dutch / side) plus field accents (stars, grids, gradients, blinkers) so 4.44s is unique blip art; the turn ruptures cage and snap, and looker wears one large eclipse moon the noun eats. Receipt `visualConfig.mesh` + `visualConfig.field` are the fingerprints. ffmpeg wireframe is `--engine wireframe` only. `still` is the Power Plant ident (void `#08090B` · ink `#F5F7FA` · cyan `#3DE0E8` · gold `#F5C518` · agent blue `#4A7FD4`) — titlecard / corridor / rain / endcard dissolve over 4.44s at ≥720p, not a frozen poster. Every 4.44s mp4 muxes a stereo AAC bed (`--bed` or auto sound mill) → `.xray/blip/receipt.json`. Missing stream or inaudible bed = inspect FAIL. Inspect reports the mill-declared plant, live ids, plus last blip `PASS`/`FAIL`. Organs live in `@0xray/blip`; this package shims `foundry blip`. Not costume.
67
74
 
68
75
  A friend would hear: Blips should look like Rippel living motions with sound, not a silent wireframe box.
69
76
 
70
77
  **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.
71
78
 
72
- **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`. Shared HOME Grok last-mile is project `.grok/plugins/0xray` (two seats do not clobber machine plugin). Nested mill **0.1.10** (inspect dest matches `resolveGrokPluginDests`; published 0.1.9 still reported machine `$HOME` dest).
79
+ **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`. Shared HOME Grok last-mile is project `.grok/plugins/0xray` (two seats do not clobber machine plugin). Nested mill **0.1.12** (foundry-plant/0; blip/sound drawers in `@0xray/blip`; inspect dest matches `resolveGrokPluginDests`).
73
80
 
74
81
  ## Publish this mill
75
82
 
@@ -18,6 +18,12 @@ export const REQUIRED_PACK_PATHS = [
18
18
  "dist/cli/index.js",
19
19
  "dist/mcps/orchestrator.server.js",
20
20
  "dist/integrations/grok/hooks/session-start.js",
21
+ "dist/integrations/cursor/hooks/hooks.json",
22
+ "dist/integrations/cursor/hooks/pre-tool-use.js",
23
+ "dist/integrations/cursor/hooks/pre-compact.js",
24
+ "dist/integrations/cursor/hooks/after-file-edit.js",
25
+ "dist/integrations/cursor/hooks/cursor-hook-utils.js",
26
+ "dist/integrations/cursor/hooks/cursor-usage-receipt.js",
21
27
  ];
22
28
 
23
29
  export function packedFilePaths(files) {
@@ -0,0 +1,2 @@
1
+ /** Shim — mill drawers live in @0xray/blip. */
2
+ module.exports = require("@0xray/blip/blip-kapow");
@@ -0,0 +1,2 @@
1
+ /** Shim — mill drawers live in @0xray/blip. */
2
+ module.exports = require("@0xray/blip/blip-looker");