0xray 4.0.41 → 4.1.0
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/skills/orchestrator/SKILL.md +12 -0
- package/.plugin/plugin.json +1 -1
- package/.xray/features.json +5 -5
- package/.xray/features.schema.json +1 -1
- package/AGENTS-consumer.md +10 -6
- package/AGENTS.md +19 -8
- package/LICENSE +1 -1
- package/README.md +65 -19
- package/SKILLS.md +5 -1
- package/dist/AGENTS.md +19 -8
- package/dist/CHANGELOG.md +85 -0
- package/dist/LICENSE +1 -1
- package/dist/README.md +65 -19
- package/dist/SKILLS.md +5 -1
- package/dist/cli/commands/openclaw-install.js +1 -1
- package/dist/cli/commands/plugin-commands.d.ts +4 -0
- package/dist/cli/commands/plugin-commands.js +84 -41
- package/dist/cli/index.js +12 -0
- package/dist/core/config-loader.js +4 -4
- package/dist/core/features-config.d.ts +1 -1
- package/dist/core/features-config.js +3 -3
- package/dist/enforcement/index.d.ts +4 -0
- package/dist/enforcement/index.js +4 -0
- package/dist/enforcement/validators/code-quality-validators.js +6 -4
- package/dist/governance/llm-governance-provider.d.ts +7 -1
- package/dist/governance/llm-governance-provider.js +72 -14
- package/dist/governance/local-confer.d.ts +4 -1
- package/dist/governance/local-confer.js +22 -1
- package/dist/integrations/cursor/hooks/hooks.json +6 -3
- package/dist/integrations/cursor/hooks/pre-tool-use.js +100 -37
- package/dist/integrations/cursor/hooks/xray-cloud-hook.sh +9 -1
- package/dist/integrations/grok/grok-cli.js +10 -37
- package/dist/integrations/grok/hooks/grok-hook-utils.js +8 -1
- package/dist/integrations/grok/hooks/pre-tool-use.js +2 -58
- package/dist/integrations/hermes-agent/bridge.mjs +14 -1
- package/dist/integrations/hooks/confer-hook-runtime.mjs +23 -1
- package/dist/integrations/hooks/delegation-gate-runtime.mjs +3 -2
- package/dist/integrations/hooks/goggles-mcp.mjs +35 -17
- package/dist/integrations/hooks/goggles-pipeline.mjs +46 -1
- package/dist/integrations/hooks/goggles-planes.json +11 -7
- package/dist/integrations/hooks/pre-tool-speak.mjs +76 -0
- package/dist/integrations/openclaw/hooks/pre-tool-gate-runtime.mjs +21 -4
- package/dist/integrations/openclaw/plugin/xray-pre-tool/index.js +17 -2
- package/dist/integrations/openclaw/plugin/xray-pre-tool/package.json +1 -1
- package/dist/mcps/architect-tools.server.d.ts +6 -0
- package/dist/mcps/architect-tools.server.js +19 -2
- package/dist/mcps/config/server-config-registry.js +8 -6
- package/dist/mcps/governance.server.d.ts +1 -0
- package/dist/mcps/governance.server.js +46 -0
- package/dist/mcps/knowledge-skills/code-review.server.js +7 -0
- package/dist/mcps/knowledge-skills/security-audit.server.js +5 -3
- package/dist/mcps/mcp-client.js +1 -1
- package/dist/mcps/orchestrator/handlers/complexity-handler.js +2 -2
- package/dist/mcps/researcher.server.js +12 -3
- package/dist/monitoring/{nudge-watchdog.d.ts → nudge-monitor.d.ts} +14 -5
- package/dist/monitoring/{nudge-watchdog.js → nudge-monitor.js} +42 -17
- package/dist/nucleus/autonomy-kernel.d.ts +2 -0
- package/dist/nucleus/autonomy-kernel.js +17 -13
- package/dist/nucleus/confer-host.d.ts +35 -0
- package/dist/nucleus/confer-host.js +55 -0
- package/dist/nucleus/confer.d.ts +19 -3
- package/dist/nucleus/confer.js +111 -55
- package/dist/nucleus/lead-dev-plan-persistence.js +4 -2
- package/dist/nucleus/suit-temperament.d.ts +1 -1
- package/dist/nucleus/suit-temperament.js +2 -2
- package/dist/nucleus/synthesis-consult-receipt.d.ts +7 -1
- package/dist/nucleus/synthesis-consult-receipt.js +86 -35
- package/dist/plugin/xray-codex-injection.js +18 -0
- package/dist/processors/implementations/nudge-processor.d.ts +1 -1
- package/dist/processors/implementations/nudge-processor.js +4 -4
- package/dist/reporting/framework-reporting-system.js +2 -5
- package/dist/reporting/log-parser.d.ts +2 -0
- package/dist/reporting/log-parser.js +7 -6
- package/dist/skills/orchestrator/SKILL.md +12 -0
- package/docs-site/docs/plates/activity-log.md +1 -1
- package/docs-site/docs/plates/bifrost.md +48 -0
- package/docs-site/docs/plates/boot.md +2 -2
- package/docs-site/docs/plates/centrifuge.md +1 -1
- package/docs-site/docs/plates/cursor-compact.md +1 -1
- package/docs-site/docs/plates/glossary.md +7 -3
- package/docs-site/docs/plates/goggles.md +13 -2
- package/docs-site/docs/plates/governance.md +1 -1
- package/docs-site/docs/plates/grok-compact.md +1 -1
- package/docs-site/docs/plates/grokbot.md +3 -1
- package/docs-site/docs/plates/host-pack.md +1 -1
- package/docs-site/docs/plates/house.md +1 -1
- package/docs-site/docs/plates/index.md +4 -2
- package/docs-site/docs/plates/inference-files.md +1 -1
- package/docs-site/docs/plates/kept-line.md +1 -1
- package/docs-site/docs/plates/kits.md +1 -1
- package/docs-site/docs/plates/lens-gate.md +3 -1
- package/docs-site/docs/plates/lens-page.md +1 -1
- package/docs-site/docs/plates/memory-recall.md +1 -1
- package/docs-site/docs/plates/notes-page.md +2 -2
- package/docs-site/docs/plates/orchestration.md +1 -1
- package/docs-site/docs/plates/package-face.md +1 -1
- package/docs-site/docs/plates/payload-heat.md +1 -1
- package/docs-site/docs/plates/pickup-stamp.md +1 -1
- package/docs-site/docs/plates/pre-tool.md +1 -1
- package/docs-site/docs/plates/processor.md +1 -1
- package/docs-site/docs/plates/record-map.md +1 -1
- package/docs-site/docs/plates/reflection-page.md +1 -1
- package/docs-site/docs/plates/reporting.md +1 -1
- package/docs-site/docs/plates/review.md +1 -1
- package/docs-site/docs/plates/routing.md +1 -1
- package/docs-site/docs/plates/session-capture.md +1 -1
- package/docs-site/docs/plates/site-manual.md +1 -1
- package/docs-site/docs/plates/stamp-plate.md +1 -1
- package/docs-site/docs/plates/station-card.md +1 -1
- package/docs-site/docs/plates/station-heat.md +1 -1
- package/docs-site/docs/plates/suit-organs.md +1 -1
- package/docs-site/docs/plates/suit-settings.md +1 -1
- package/docs-site/docs/plates/suit-wear.md +1 -1
- package/docs-site/docs/plates/suit.md +3 -3
- package/docs-site/docs/plates/trail-state.md +1 -1
- package/docs-site/docs/plates/work-fresh.md +1 -1
- package/docs-site/docs/plates/write-home.md +1 -1
- package/llms.txt +16 -6
- package/package.json +4 -4
- package/scripts/foundry/README.md +2 -2
- package/scripts/foundry/release-gate.mjs +111 -15
- package/scripts/foundry/release.mjs +8 -0
- package/scripts/mjs/verify-confer-core.mjs +153 -29
- package/scripts/mjs/verify-pipeline-facets.mjs +1 -1
- package/scripts/mjs/verify-user-aside-core.mjs +3 -4
- package/scripts/node/bridge-mcp-wiring.cjs +236 -5
- package/scripts/node/confer-switch.cjs +66 -0
- package/scripts/node/install-bridges.cjs +44 -53
- package/scripts/node/pack-tmp-suit-proof.mjs +14 -6
- package/src/integrations/openclaw/plugin/xray-pre-tool/index.js +17 -2
- package/src/integrations/openclaw/plugin/xray-pre-tool/package.json +1 -1
- package/src/mcps/architect-tools.server.ts +26 -2
- package/src/mcps/config/__tests__/server-config-registry.test.ts +15 -6
- package/src/mcps/config/server-config-registry.ts +9 -6
- package/src/mcps/governance.server.ts +49 -0
- package/src/mcps/knowledge-skills/code-review.server.ts +8 -0
- package/src/mcps/knowledge-skills/security-audit.server.ts +11 -12
- package/src/mcps/mcp-client.ts +1 -1
- package/src/mcps/orchestrator/handlers/complexity-handler.ts +2 -1
- package/src/mcps/researcher.server.ts +19 -10
- package/src/skills/orchestrator/SKILL.md +12 -0
- package/vendor/@0xray/repertoire/README.md +1 -1
- package/vendor/@0xray/repertoire/scripts/run-live-synthesis-checkpoint.mjs +5 -51
- package/xray/agents_template.md +2 -2
- package/xray/features.json +5 -5
- package/xray/features.schema.json +1 -1
- package/docs-site/docs/plates/live-mesh.md +0 -41
|
@@ -72,6 +72,18 @@ The hold lasts for the work that named the plane. A sentence that does not say l
|
|
|
72
72
|
|
|
73
73
|
Config: `features.json` → `multi_agent_orchestration.lead_dev_mode`
|
|
74
74
|
|
|
75
|
+
## Confer
|
|
76
|
+
|
|
77
|
+
The TUI that is wearing the suit already spawned the MCP servers. Confer uses those servers. It does not start a private server and it does not run `hermes -z`.
|
|
78
|
+
|
|
79
|
+
When `.xray/state/confer-ask-s.1.json`, `confer-ask-s.2.json`, and `confer-ask-s.3.json` are on disk:
|
|
80
|
+
|
|
81
|
+
1. Call the server and tool named in each ask. Researcher and code-review return evidence. Architect returns the assessment with `Verdict: UNREVIEWED`.
|
|
82
|
+
2. Write one verdict line from this TUI's model: `Verdict: PASS`, `Verdict: CONDITIONAL`, or `Verdict: FAIL`, plus top risks and a hardening note.
|
|
83
|
+
3. Call `record_confer_receipt` on `xray-governance` with `todoId`, `subagent`, `sessionId`, and that text.
|
|
84
|
+
|
|
85
|
+
Only `Verdict: PASS` completes the todo. FAIL, CONDITIONAL, and UNREVIEWED stay open. A session id that does not match the plan does not complete the todo. Grok, OpenCode, Hermes, and OpenClaw use these same three steps. Hermes is a voter only when Hermes is the TUI, and then only as that TUI's own model.
|
|
86
|
+
|
|
75
87
|
## Lead cadence (syncopation)
|
|
76
88
|
|
|
77
89
|
The seven rules are the engine. The cadence is the time signature. Disk SSOT: `grok-bot/OP-PROC.md` (team specifics live in `house/`).
|
|
@@ -35,4 +35,4 @@ Today those writers append `logs/framework/activity.log`. The features default s
|
|
|
35
35
|
|
|
36
36
|
When: on the tool hook, on framework logger flush, and on boot when file logging is on. Why: the report and the pulse read one tail, not a pile of copies.
|
|
37
37
|
|
|
38
|
-
stamped · 0xray 4.0
|
|
38
|
+
stamped · 0xray 4.1.0
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Bifrost
|
|
3
|
+
sidebar_label: Bifrost
|
|
4
|
+
plate_type: pipeline
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Bifrost
|
|
8
|
+
|
|
9
|
+
Bifrost is an autonomous AI fleet management system. Every PR, issue and comment becomes a card on one board and a line in the right seat's inbox, and the seat is woken to act on it.
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
┌────────────────────────────────────────────────────────────┐
|
|
13
|
+
│ INPUT LAYER │
|
|
14
|
+
│ ┌──────────────┐ ┌──────────────┐ ┌───────────────────┐ │
|
|
15
|
+
│ │ GitHub │ │ seat │ │ Railway deploys, │ │
|
|
16
|
+
│ │ PR / issue / │ │ presence + │ │ /healthz probes │ │
|
|
17
|
+
│ │ comment │ │ activity │ │ │ │
|
|
18
|
+
│ └──────┬───────┘ └──────┬───────┘ └─────────┬─────────┘ │
|
|
19
|
+
│ └────────────────┴───────────────────┘ │
|
|
20
|
+
└─────────────────────────────┬──────────────────────────────┘
|
|
21
|
+
v
|
|
22
|
+
┌─────────────────────────────┼──────────────────────────────┐
|
|
23
|
+
│ PROCESSING LAYER v │
|
|
24
|
+
│ ┌────────────────────────────────────────────────────┐ │
|
|
25
|
+
│ │ collector board (live_mesh.py) on Railway │ │
|
|
26
|
+
│ │ PR, issue, review, push, and merge → beats │ │
|
|
27
|
+
│ │ inbox lines use routing/inbox-roles.json │ │
|
|
28
|
+
│ └──────────────────────────┬─────────────────────────┘ │
|
|
29
|
+
└──────────────────────────────┼─────────────────────────────┘
|
|
30
|
+
v
|
|
31
|
+
┌──────────────────────────────┼─────────────────────────────┐
|
|
32
|
+
│ OUTPUT LAYER v │
|
|
33
|
+
│ ┌──────────────┐ ┌──────────────────┐ ┌───────────────┐ │
|
|
34
|
+
│ │ the board │ │ seat inboxes + │ │ seat presence │ │
|
|
35
|
+
│ │ (cards) │ │ wake webhooks │ │ + archive │ │
|
|
36
|
+
│ └──────────────┘ └──────────────────┘ └───────────────┘ │
|
|
37
|
+
└────────────────────────────────────────────────────────────┘
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
The governor runs inside the server (`house/live/app/server.mjs`). When nothing on the board moves for `BIFROST_TRIPWIRE_MINUTES` (default 30), the tripwire starts a timed run. On a stalled board, every seat with open work is woken with a deadline, and the CoS role is told. On an empty board, the CoS role is woken to pull the next work. The CoS role can start the same run with `POST /clock`. A seat's move clears the clock.
|
|
41
|
+
|
|
42
|
+
`evalNudges` is the one nudge path. A live card with no beat for `NUDGE_L1_S` (default 3600) sends L1 to the next owner, or else the card owner. L2 goes to the CoS role after `NUDGE_L2_S` (default 1800). L3 repeats to that L1 seat after `NUDGE_L3_S` (default 7200), and the CoS role is woken once to reassign. An unacked inbox line steps L1, L2, and L3 on that same seat, `NUDGE_LINE_S` apart (default 900), and the CoS role is woken at L3. A missing handoff nudges the owing seat at L1, again at L2, and again at L3, and the CoS role is woken once at L3. Seats with no route, and seats whose wake has gone quiet, each hold one nudge to the CoS role.
|
|
43
|
+
|
|
44
|
+
A cloud agent is its own board row (`cloud_agents`, also copied onto `board.cloud_agents`): `bcId`, owning seat, linked card, and state `running`, `finished`, or `failed`. The Cursor webhook and seat activity `kind: cloud_agent` feed that row.
|
|
45
|
+
|
|
46
|
+
Code lives under `house/live/` (collector, board, inbox routing, server). `house/live/feed/live_mesh.py` runs the collector and the board. `house/live-mesh/fetch_feed.py` is the upstream feed the deploy assembles. Deploy only via `house/live/app/deploy.sh`. A Railway build straight from git stops in the Dockerfile with `ERROR: collector/ is not assembled`. The plate that belongs here is house.
|
|
47
|
+
|
|
48
|
+
stamped · 0xray 4.1.0
|
|
@@ -5,7 +5,7 @@ sidebar_label: Boot
|
|
|
5
5
|
|
|
6
6
|
# Boot
|
|
7
7
|
|
|
8
|
-
`BootOrchestrator.executeBootSequence` brings the
|
|
8
|
+
`BootOrchestrator.executeBootSequence` brings the engine up. Processor registration here is the legacy boot list. The live tool gate is the suit pipeline, drawn on the processor plate.
|
|
9
9
|
|
|
10
10
|
```
|
|
11
11
|
┌────────────────────────────────────────────────────────────┐
|
|
@@ -66,4 +66,4 @@ sidebar_label: Boot
|
|
|
66
66
|
└────────────────────────────────────────────────────────────┘
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
-
stamped · 0xray 4.0
|
|
69
|
+
stamped · 0xray 4.1.0
|
|
@@ -27,4 +27,4 @@ JUDGEMENT│ LOOP STATE │PAYMENTS
|
|
|
27
27
|
|
|
28
28
|
Loop, domain, state, foundry, and memory ride that turn. Judgement and payments stay off the rotor. Goggles looks on and does not spin. The next turn waits for the next session or compact.
|
|
29
29
|
|
|
30
|
-
stamped · 0xray 4.0
|
|
30
|
+
stamped · 0xray 4.1.0
|
|
@@ -32,4 +32,4 @@ Cursor preCompact writes the station card and cannot block the compact.
|
|
|
32
32
|
|
|
33
33
|
The file is `src/integrations/cursor/hooks/pre-compact.js`. The message tells the seat to read STATION.md. The plates that belong here are payload-heat and station-heat.
|
|
34
34
|
|
|
35
|
-
stamped · 0xray 4.0
|
|
35
|
+
stamped · 0xray 4.1.0
|
|
@@ -15,12 +15,16 @@ What the words mean.
|
|
|
15
15
|
│ suit · what the agent wears │
|
|
16
16
|
│ power · memory, judgment, or payments │
|
|
17
17
|
│ where it runs · the tool you already open │
|
|
18
|
+
│ wake · the next session has the job │
|
|
18
19
|
│ goggles · it views one plane │
|
|
19
20
|
│ house · shared rules, one board, memory that sticks │
|
|
20
|
-
│
|
|
21
|
+
│ foundry · mills and hangars │
|
|
22
|
+
│ mill · builds and ships the plant │
|
|
23
|
+
│ hangar · the shop on that foundry │
|
|
21
24
|
│ plane · one view, not the whole job │
|
|
22
25
|
│ plate · the drawing, not the live run │
|
|
23
|
-
│
|
|
26
|
+
│ 0xray · the suit you wear │
|
|
27
|
+
│ grok-bot · the house companion │
|
|
24
28
|
└────────────────────────────────────────────────────────────┘
|
|
25
29
|
```
|
|
26
|
-
stamped · 0xray 4.0
|
|
30
|
+
stamped · 0xray 4.1.0
|
|
@@ -6,7 +6,7 @@ plate_type: domain model
|
|
|
6
6
|
|
|
7
7
|
# Goggles
|
|
8
8
|
|
|
9
|
-
It views one plane.
|
|
9
|
+
It views one plane. The lens check is the one look that spans planes.
|
|
10
10
|
|
|
11
11
|
```
|
|
12
12
|
┌────────────────────────────────────────────────────────────┐
|
|
@@ -14,9 +14,20 @@ It views one plane.
|
|
|
14
14
|
├────────────────────────────────────────────────────────────┤
|
|
15
15
|
│ · it views one plane │
|
|
16
16
|
│ · not every plane at once │
|
|
17
|
+
│ · the lens check sweeps every card plane for shipped files │
|
|
18
|
+
│ · it names the first drift, or stays quiet on a match │
|
|
19
|
+
├────────────────────────────────────────────────────────────┤
|
|
20
|
+
│ REFUSED │
|
|
21
|
+
│ · an empty look │
|
|
22
|
+
│ · kind and outer together │
|
|
23
|
+
│ · a plane on an outer that has no card │
|
|
17
24
|
└────────────────────────────────────────────────────────────┘
|
|
18
25
|
```
|
|
19
26
|
|
|
27
|
+
A card views one plane. The lens check reads every card plane, but only the files the package ships (`package.json` `files`), so a packed install and the repo read the same. A file that does not ship is triage's job, one plane at a time.
|
|
28
|
+
|
|
29
|
+
The refusals read: `Name a kind, one outer, or one plane.` · `Send kind or outer, not both.` · `plane goes with digest or triage only.`
|
|
30
|
+
|
|
20
31
|
A checkout named `0xray` records `scripts/mjs/run-goggles-mcp.mjs`. Any other project records `node_modules/0xray/scripts/mjs/run-goggles-mcp.mjs`.
|
|
21
32
|
|
|
22
|
-
stamped · 0xray 4.0
|
|
33
|
+
stamped · 0xray 4.1.0
|
|
@@ -32,4 +32,4 @@ Grok PreCompact runs session-start.js with the pre_compact event.
|
|
|
32
32
|
|
|
33
33
|
The hook is `session-start.js --hook-event=pre_compact`. It calls `buildSessionBootPayload`, writes the station card, and prints nothing. It does not match the conversation. Grok ignores hook stdout. The plates that belong here are payload-heat, cursor-compact, and work-fresh.
|
|
34
34
|
|
|
35
|
-
stamped · 0xray 4.0
|
|
35
|
+
stamped · 0xray 4.1.0
|
|
@@ -38,4 +38,6 @@ Give your bots a house: shared rules, one board for the work, and memory that st
|
|
|
38
38
|
code links: suit → memory, house → doctor, memory → station. Other lines show reading order only.
|
|
39
39
|
```
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
The fleet's board, seat inboxes and wake webhooks run on [Bifrost](./bifrost.md), an autonomous AI fleet management system.
|
|
42
|
+
|
|
43
|
+
stamped · 0xray 4.1.0 · @0xray/grok-bot 0.1.8
|
|
@@ -7,6 +7,8 @@ sidebar_label: Overview
|
|
|
7
7
|
|
|
8
8
|
A plate is one pipeline, drawn as a stamp. The drawing is the thing a person reads: an input layer, a processing layer, an output layer, and the arrows between them.
|
|
9
9
|
|
|
10
|
+
0xRay is a three-subsystem autonomous engine. The suit is the wear. Inference remembers. External Governance judges. The Autonomous Engine runs the work. A foundry is mills and hangars. When the window closes, the next session wakes with the job.
|
|
11
|
+
|
|
10
12
|
These files are the canonical stamps. The Docusaurus sidebar publishes them, and the npm package ships this directory. The worn reader walks up from `dist/integrations/hooks/plates.cjs` to `docs-site/docs/plates/`. One plate, one file.
|
|
11
13
|
|
|
12
14
|
The station card stays the short subsystem table. That table is the index still on disk after compaction. When the current intent names one pipeline, the card adds a single stock line, `Plate: <id> — .xray/state/plates/<id>.md`. Recall returns that one plate, and a compact can carry its schematic. Lessons stay episodes on signals. A plate is the machine. A lesson is what happened.
|
|
@@ -21,7 +23,7 @@ Plates have a type. A domain model plate shows how named parts fit. A state flow
|
|
|
21
23
|
|
|
22
24
|
## State flow
|
|
23
25
|
|
|
24
|
-
[House](./house.md) · [
|
|
26
|
+
[House](./house.md) · [Bifrost](./bifrost.md) · [Review](./review.md)
|
|
25
27
|
|
|
26
28
|
## Pipeline
|
|
27
29
|
|
|
@@ -51,4 +53,4 @@ These eight are the pages the file ref names. Each one is a search lens. Each le
|
|
|
51
53
|
|
|
52
54
|
These five are the compact path that was opened. Each one is a search lens. Each lens lists one skill and the plates that belong with it.
|
|
53
55
|
|
|
54
|
-
stamped · 0xray 4.0
|
|
56
|
+
stamped · 0xray 4.1.0
|
|
@@ -32,4 +32,4 @@ A station rewrite keeps one Fresh line and drops the copies.
|
|
|
32
32
|
|
|
33
33
|
mergeStationMarkdown in src/integrations/hooks/station-hook-runtime.cjs treats a Fresh line as stock. Copies are not preserved. When the new card has no Fresh line, the latest one is kept. The plates that belong here are station-card and work-fresh.
|
|
34
34
|
|
|
35
|
-
stamped · 0xray 4.0
|
|
35
|
+
stamped · 0xray 4.1.0
|
|
@@ -32,4 +32,6 @@ A search names one plane or it stops.
|
|
|
32
32
|
|
|
33
33
|
lensBeforeResearch in src/integrations/hooks/goggles-pipeline.mjs returns null when the call is not research, and when the spoken text names exactly one card plane. Zero names, or more than one, deny with Name one plane. A shell that reads a project source file is research. The first open of a source file that no lens lists is allowed and remembered. The next search stops until that file is on a lens and the plate is on disk. The hook does not author the plate. The plate that belongs here is pre-tool.
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
Only the lens check spans planes. It reads, it does not search, so this gate does not stop it. Every other look and every search names one plane.
|
|
36
|
+
|
|
37
|
+
stamped · 0xray 4.1.0
|
|
@@ -32,4 +32,4 @@ The lens page is the card for one plane.
|
|
|
32
32
|
|
|
33
33
|
`formatCardPane` in `src/integrations/hooks/goggles-pipeline.mjs` draws the card. Read the card instead of searching the tree. The plates that belong here are record-map and lens-gate.
|
|
34
34
|
|
|
35
|
-
stamped · 0xray 4.0
|
|
35
|
+
stamped · 0xray 4.1.0
|
|
@@ -41,4 +41,4 @@ Intent names one plate. Equal top scores recall nothing. A missing worn copy is
|
|
|
41
41
|
|
|
42
42
|
A look returns the named plane, the matched law names, and the current lines from the session-note index. It does not write a law.
|
|
43
43
|
|
|
44
|
-
stamped · 0xray 4.0
|
|
44
|
+
stamped · 0xray 4.1.0
|
|
@@ -30,7 +30,7 @@ Notes are the body the station card cannot hold.
|
|
|
30
30
|
└────────────────────────────────────────────────────────────┘
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
-
The page is `.xray/state/NOTES.md`. The pickup line equals the station intent. The default depth is the working notes: the point, the coverage, the library, the open pull requests, the rituals, and the next cut. A pickup line alone does not survive a compact. PreCompact calls `stampNotesPickup`, which updates only that line and leaves the body alone.
|
|
33
|
+
The page is `.xray/state/NOTES.md`. The pickup line equals the station intent. The default depth is the working notes: the point, the coverage, the library, the open pull requests, the rituals, and the next cut. A pickup line alone does not survive a compact. Where a PreCompact hook exists it calls `stampNotesPickup`, which updates only that line and leaves the body alone. On Grok there is no pre-compact signal, so the seat writes the body after every beat, with evidence. A compaction is a wake: read the station, then the notes, then resume. Do not commit this file. Do not feed it to Repertoire.
|
|
34
34
|
|
|
35
35
|
The station module writes this page. Heat keeps the current lines in `.xray/state/repertoire/session-notes.json` beside the laws. The wake cascade reads that index and does not write a law. A replaced note stays in that index as history. The short index returns the current line.
|
|
36
|
-
stamped · 0xray 4.0
|
|
36
|
+
stamped · 0xray 4.1.0
|
|
@@ -32,4 +32,4 @@ stampNotesPickup writes one pickup line and leaves the rest of NOTES.md alone.
|
|
|
32
32
|
|
|
33
33
|
The comment on the function is one pickup line. There is no check that the working notes are present. The plate that belongs here is notes-page.
|
|
34
34
|
|
|
35
|
-
stamped · 0xray 4.0
|
|
35
|
+
stamped · 0xray 4.1.0
|
|
@@ -39,4 +39,4 @@ Trail: state and logs under `.xray`. Codex is already loaded. This plate is the
|
|
|
39
39
|
The published manual is `docs-site/docs/`. The rule sheet is `grok-bot/OP-PROC.md`. Neither is one of the five pages.
|
|
40
40
|
|
|
41
41
|
Goggles plane `record-map` is the lens over this map. Station and the notes page belong to the station module. Repertoire laws stay in the law file. The session-note index sits beside that file.
|
|
42
|
-
stamped · 0xray 4.0
|
|
42
|
+
stamped · 0xray 4.1.0
|
|
@@ -54,4 +54,4 @@ A state flow plate: one critic pass, one fix, one re-review, then stop.
|
|
|
54
54
|
|
|
55
55
|
A FAIL names the file and a test that fails on the old code. One author fixes that hole. A second session waits while the verdict is open. Re-review that new head. A hole the new test did not lock returns to ONE FIX. A PASS ends the plate. A note stays a note and does not open another lap.
|
|
56
56
|
|
|
57
|
-
stamped · 0xray 4.0
|
|
57
|
+
stamped · 0xray 4.1.0
|
|
@@ -35,4 +35,4 @@ Today that file is `docs/inference/latest-session.json`. The home is `.xray/infe
|
|
|
35
35
|
|
|
36
36
|
Station reads the file for heat. The inference accumulator reads `session-*.json` beside it. Do not mint a `session-<date>-<sha>` file for the station note.
|
|
37
37
|
|
|
38
|
-
stamped · 0xray 4.0
|
|
38
|
+
stamped · 0xray 4.1.0
|
|
@@ -35,4 +35,4 @@ Read it after a compact. Leave Intent alone. The plan is the next cut. The long
|
|
|
35
35
|
The station module writes this card. Heat adds `Cascade: record-map · notes N current`. The count is the current index. The body stays on the notes page.
|
|
36
36
|
|
|
37
37
|
The card keeps the named plane. `Sleeve: on` means the previous ticket came back, the worn plate matched the package, the previous ticket matched the working record, and inspect passed. Judgement is continue, retry N, stop, or start. The same miss keeps its retry. A different ticket stops. Payments is on only when the ticket is a payment.
|
|
38
|
-
stamped · 0xray 4.0
|
|
38
|
+
stamped · 0xray 4.1.0
|
|
@@ -32,4 +32,4 @@ On a compact event applyStationHeat stamps the notes pickup line.
|
|
|
32
32
|
|
|
33
33
|
`isCompactHook` is true when the hook name contains compact. The body of NOTES.md is left alone. The plates that belong here are pickup-stamp and notes-page.
|
|
34
34
|
|
|
35
|
-
stamped · 0xray 4.0
|
|
35
|
+
stamped · 0xray 4.1.0
|
|
@@ -35,4 +35,4 @@ Reporting reads the activity log and may write a report. Station reads `latest-s
|
|
|
35
35
|
|
|
36
36
|
Repertoire already keeps `inference-state.json` and the day log under `.xray/state/repertoire/`. Goggles does not write these files. It reads a plate when one plane is named.
|
|
37
37
|
|
|
38
|
-
stamped · 0xray 4.0
|
|
38
|
+
stamped · 0xray 4.1.0
|
|
@@ -36,4 +36,4 @@ A worn project is a consumer. Its writes go to its own `.xray/logs` and `.xray/i
|
|
|
36
36
|
|
|
37
37
|
A fresh wear fastens mill and inspect. Grok's Goggles launcher stays on that install: the checkout script when the package name is `0xray`, and `node_modules/0xray` for every other project.
|
|
38
38
|
|
|
39
|
-
stamped · 0xray 4.0
|
|
39
|
+
stamped · 0xray 4.1.0
|
|
@@ -14,7 +14,7 @@ Give your agent a suit. The rules stay on, you add powers, and it runs in the to
|
|
|
14
14
|
├────────────────────────────────────────────────────────────┤
|
|
15
15
|
│ · the rules stay on │
|
|
16
16
|
│ · you put it on once │
|
|
17
|
-
│ · it builds the
|
|
17
|
+
│ · it builds the foundries │
|
|
18
18
|
└────────────────────────────────────────────────────────────┘
|
|
19
19
|
│
|
|
20
20
|
you add powers
|
|
@@ -37,6 +37,6 @@ Give your agent a suit. The rules stay on, you add powers, and it runs in the to
|
|
|
37
37
|
goggles views one plane
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
-
Same rules in the repo. You are not locked into one app.
|
|
40
|
+
A foundry is mills and hangars. The mill builds and ships. The hangar is the shop. Same rules in the repo. You are not locked into one app.
|
|
41
41
|
|
|
42
|
-
stamped · 0xray 4.0
|
|
42
|
+
stamped · 0xray 4.1.0
|
|
@@ -32,4 +32,4 @@ Refresh writes one Fresh line from git and the published package.
|
|
|
32
32
|
|
|
33
33
|
refreshFreshness in src/nucleus/work-freshness.mjs fetches origin, reads npm view 0xray version, and returns that one line. A compact hook does not call it. The plate that belongs here is station-card.
|
|
34
34
|
|
|
35
|
-
stamped · 0xray 4.0
|
|
35
|
+
stamped · 0xray 4.1.0
|
|
@@ -35,4 +35,4 @@ The path table is `src/integrations/hooks/write-home.cjs`. Writers use it. Reade
|
|
|
35
35
|
|
|
36
36
|
Still on the old path until each caller is rewired: the activity logger, the framework logger, the pipeline hook, the Grok hook, the Hermes bridge, station capture, `saveSessionInference`, reporting, pulse, monitor, and `features.json` `log_path`.
|
|
37
37
|
|
|
38
|
-
stamped · 0xray 4.0
|
|
38
|
+
stamped · 0xray 4.1.0
|
package/llms.txt
CHANGED
|
@@ -1,19 +1,25 @@
|
|
|
1
1
|
# 0xray
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> A three-subsystem autonomous engine. The suit is the wear. The next session wakes with the job.
|
|
4
4
|
|
|
5
|
-
**4.
|
|
5
|
+
**4.1** — mill+inspect plant, 7 MCPs, Codex 69. Constitution always on.
|
|
6
|
+
|
|
7
|
+
Confer votes. Burst runs the swarm.
|
|
8
|
+
|
|
9
|
+
**4.1** — a suit that survives the context window
|
|
10
|
+
|
|
11
|
+
0xRay is a three-subsystem autonomous engine. The suit is the wear. Inference remembers. External Governance judges. The Autonomous Engine runs the work. The host you already run wears it: Grok, OpenCode, Hermes, OpenClaw, or Cursor. Memory, judgement, and payments come on with the suit. When the window closes, the next session wakes with the job, the page, and the laws. Confer votes: the agents on a decision vote, and only a real yes carries the work. Burst runs the swarm, so the agents are in the work as it happens. A foundry is built from mills and hangars.
|
|
6
12
|
|
|
7
13
|
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
14
|
|
|
9
15
|
## Wear (what a stranger gets)
|
|
10
16
|
|
|
11
|
-
- `npm install 0xray`
|
|
17
|
+
- `npm install 0xray` links vendored `@0xray/repertoire` and prints `npx 0xray wear`. It does not write `.mcp.json` or the chat bridges. `npx 0xray wear` writes the consumer suit: managed `AGENTS.md`, `.xray` config, seven MCP servers, and the OpenCode, Grok, Hermes, and OpenClaw bridges. Inside a git checkout, wear also fastens Cursor project hooks. 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/OP-PROC.md` (team specifics live in `house/`) — 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
18
|
- Memory scoring rules: [docs/memory-scoring.md](docs/memory-scoring.md). The orchestrator links that file. It does not copy the rules.
|
|
13
19
|
- Host `preCompact` writes the hook line and per-session receipt on the suit mill and on nested consumer wear roots (a bench with local `node_modules/0xray`). A counted cut needs a non-empty generation id and a numeric usage percent.
|
|
14
20
|
- `@0xray/grok-bot`: the general page is `grok-bot/OP-PROC.md`. The team overlay is `house/` and is not in that npm pack. `templates/house/` ships. `grok-bot house init` copies the template and refuses to overwrite. Doctor uses `GROK_BOT_HOUSE` when set, otherwise walks up from the working directory for `house/HOUSE.md`.
|
|
15
21
|
- MCP servers start through `scripts/node/mcp-launch.cjs`. They see PATH, HOME, and XRAY_ROOT, plus the names on their keep list. Tokens such as NPM_TOKEN are not inherited. User env values stay out of argv. Postinstall keeps user edits to AGENTS.md, `.mcp.json`, and `opencode.json`. `house init` does not copy EXAMPLE.md. Doctor FAILs while `house/EXAMPLE.md` exists. Inspect has a machinePlugin check. The Cursor hook defaults XRAY_ROOT to the suit directory.
|
|
16
|
-
- `
|
|
22
|
+
- `npx 0xray unwear` restores the pre-wear snapshot. Outside a git checkout, wear still writes the suit and skips only the Cursor hooks, with one warning.
|
|
17
23
|
- 4.0.30: `npx 0xray wear` and `setup` also work outside a git checkout. They write the 4.0.28 project setup and skip only Cursor hooks, with one warning. In a git checkout they write the 4.0.28 project setup plus Cursor hooks.
|
|
18
24
|
|
|
19
25
|
- `npx @0xray/foundry mint --skip-live` — re-fasten mill plant, then inspect.
|
|
@@ -41,7 +47,7 @@ Registered in `.mcp.json` as `npx -y 0xray mcp <cmd>`:
|
|
|
41
47
|
| `xray-code-review` | Proposal quality |
|
|
42
48
|
| `xray-architect-tools` | System design |
|
|
43
49
|
|
|
44
|
-
Not an 8th `xray-*` server. **Repertoire is preferred** — vendored 0.2.9 ships on (`npx @0xray/repertoire mcp`). Dest is named laws, not hangar `repo-*` or git slugs.
|
|
50
|
+
Not an 8th `xray-*` server. **Repertoire is preferred** — vendored 0.2.9 ships on (`npx @0xray/repertoire mcp`). Dest is named laws, not hangar `repo-*` or git slugs. The wake ticket is **Station** (Read `.xray/state/STATION.md`). Station is the ticket, not a substitute for Repertoire. Do not pin 0.1.8.
|
|
45
51
|
|
|
46
52
|
## Codex 69 (always on)
|
|
47
53
|
|
|
@@ -56,10 +62,14 @@ Not an 8th `xray-*` server. **Repertoire is preferred** — vendored 0.2.9 ships
|
|
|
56
62
|
- **Hangar** — plants factory shops on the four floors. Coexists with mill plant via shop plant allowlist.
|
|
57
63
|
- **42 YML / 45 SKILL.md** — exo catalog in this repo. Not default consumer wear.
|
|
58
64
|
|
|
65
|
+
## Live board (Bifrost)
|
|
66
|
+
|
|
67
|
+
The board seats see is the collector board. `house/live/feed/live_mesh.py` runs the collector and the board every `LIVE_WATCH_S` seconds (default 45). A cloud agent is a board row (`bcId`, owning seat, linked card, state `running`, `finished`, or `failed`). `live-inbox` requires `LIVE_URL`, `SEAT_KEYS_DIR`, and `LIVE_CURSORS`, and exits 2 when one is missing. The seat wake is `grok-bot/templates/house/fleet/WAKE-ROUTINE.md`: turn start on every turn, turn end on every exit. A stuck card sends L1 to the next owner or the card owner, and L2 to the CoS role. Plate: `docs-site/docs/plates/bifrost.md`. Lexicon: `grok-bot/LEXICON.md`, including **button up**.
|
|
68
|
+
|
|
59
69
|
## Docs
|
|
60
70
|
|
|
61
71
|
- [README.md](README.md) — exo landing
|
|
62
|
-
- [AGENTS.md](AGENTS.md) —
|
|
72
|
+
- [AGENTS.md](AGENTS.md) — suit card
|
|
63
73
|
- [AGENTS-consumer.md](AGENTS-consumer.md) — consumer card (copied to `AGENTS.md` on install)
|
|
64
74
|
- [SKILLS.md](SKILLS.md) — catalog (costume / self-plant, not default sync)
|
|
65
75
|
- [Foundry](docs-site/docs/architecture/v4-foundry.md) — mill vs exo, foundry-plant/0, shopPlant
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "0xray",
|
|
3
|
-
"version": "4.0
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "4.1.0",
|
|
4
|
+
"description": "Three-subsystem autonomous engine. The suit powers the agent you already run: memory, judgement, payments, and the wake.",
|
|
5
5
|
"readme": "README.md",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -73,14 +73,14 @@
|
|
|
73
73
|
"test": "vitest run",
|
|
74
74
|
"test:batch": "npm test",
|
|
75
75
|
"test:unit": "npm test -- src/__tests__/unit/config-loader.test.ts src/__tests__/unit/state-manager.test.ts src/__tests__/unit/state-manager-persistence.test.ts src/__tests__/unit/context-loader.test.ts src/__tests__/unit/pattern-analyzer.test.ts src/__tests__/unit/complexity-calibrator.test.ts",
|
|
76
|
-
"test:core-framework": "npm test -- src/__tests__/unit/v2-deletion-protection.test.ts",
|
|
76
|
+
"test:core-framework": "npm test -- src/__tests__/unit/v2-deletion-protection.test.ts src/__tests__/unit/confer.test.ts src/__tests__/unit/local-confer.test.ts src/__tests__/unit/synthesis-consult-receipt.test.ts src/__tests__/unit/governance-nollm-merge.test.ts",
|
|
77
77
|
"test:security": "npm test -- src/__tests__/unit/security/security-hardener.test.ts src/__tests__/unit/security/security-headers.test.ts src/__tests__/unit/security/security-auditor.test.ts",
|
|
78
78
|
"test:performance": "npm test -- src/__tests__/unit/monitoring.test.ts src/__tests__/unit/benchmark.test.ts src/__tests__/unit/analytics.test.ts",
|
|
79
79
|
"test:session-management": "npm test -- src/__tests__/unit/session-state-manager.test.ts src/__tests__/unit/session-security-validator.test.ts src/__tests__/unit/session-coordination-validator.test.ts src/__tests__/unit/session-migration-validator.test.ts src/__tests__/unit/session-migration-logic.test.ts",
|
|
80
80
|
"test:code-analysis": "npm test -- src/__tests__/unit/codebase-context-analyzer.test.ts src/__tests__/unit/dependency-graph-builder.test.ts src/__tests__/unit/rule-enforcer.test.ts src/__tests__/unit/codex-parser.test.ts src/__tests__/unit/codex-injector.test.ts",
|
|
81
81
|
"test:processors": "npm test -- src/__tests__/unit/processor-activation.test.ts src/__tests__/unit/typescript-compilation-processor.test.ts",
|
|
82
82
|
"test:miscellaneous": "npm test -- src/__tests__/unit/blocked-test.test.ts",
|
|
83
|
-
"test:grok-bot": "npm test -- src/__tests__/unit/grok-bot-seat-doctor.test.ts src/__tests__/unit/grok-bot-op-proc-map.test.ts src/__tests__/unit/lead-cadence.test.ts src/__tests__/unit/grok-bot-auto-review-policy.test.ts",
|
|
83
|
+
"test:grok-bot": "npm test -- src/__tests__/unit/grok-bot-seat-doctor.test.ts src/__tests__/unit/grok-bot-house-migrate.test.ts src/__tests__/unit/grok-bot-house-template.test.ts src/__tests__/unit/grok-bot-op-proc-map.test.ts src/__tests__/unit/lead-cadence.test.ts src/__tests__/unit/grok-bot-auto-review-policy.test.ts",
|
|
84
84
|
"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",
|
|
85
85
|
"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 src/__tests__/unit/cursor-hooks.test.ts src/__tests__/unit/host-vs-mill-score.test.ts src/__tests__/unit/wear-pack-file-list.test.ts && npm run test:grok-bot",
|
|
86
86
|
"test:integration-all": "npm test -- src/__tests__/integration/",
|
|
@@ -17,7 +17,7 @@ npx @0xray/foundry reconcile [patch|minor|major] [--apply] [--check]
|
|
|
17
17
|
npx @0xray/foundry stamp
|
|
18
18
|
npx @0xray/foundry docs-check
|
|
19
19
|
npx @0xray/foundry docs-build
|
|
20
|
-
npx @0xray/foundry gate [--verify-only]
|
|
20
|
+
npx @0xray/foundry gate [--verify-only|--prove-published]
|
|
21
21
|
npx @0xray/foundry release [patch|minor|major] --dry-run
|
|
22
22
|
npx @0xray/foundry release [patch|minor|major] --i-mean-it
|
|
23
23
|
npx @0xray/foundry release --publish-only --dry-run
|
|
@@ -39,7 +39,7 @@ npx @0xray/foundry hooks
|
|
|
39
39
|
|
|
40
40
|
`FOUNDRY_ROOT` overrides cwd (the repo being milled).
|
|
41
41
|
|
|
42
|
-
`gate` is build + test + docs-check. `docs-build` runs Docusaurus on the 0xray exo (`docs-site/`); stranger mills skip. `inspect` runs the six mill checks (diff, plant vs worn, receipt, CI, live tarball GET, isolated HOME) plus observational harness (Cursor/Grok hooks bound, Repertoire fastened, Station present). `--go` emits a shop-style forge GO receipt; `--require-harness=bare|suited|partial` turns that observation into a gate. Mint fails on a costume dump. Isolated HOME skips machine `~/.grok`. Shared HOME last-mile dest is project `.grok/plugins/0xray` (no last-wins machine plugin). `ci` reports GitHub Actions (no auto-push). `hooks` installs git pre/post hooks. GitHub `0xRay CI/CD` is the mill gate on `main`. `Deploy Docs` is the mill Pages put.
|
|
42
|
+
`gate` is build + test + docs-check. `--skip-docs` fails the gate. `--prove-published` is Gate D and does not publish: npm lists the version, the annotated tag points at HEAD, and the GitHub Release page exists. A local gate pass is not Gate D. `docs-build` runs Docusaurus on the 0xray exo (`docs-site/`); stranger mills skip. `inspect` runs the six mill checks (diff, plant vs worn, receipt, CI, live tarball GET, isolated HOME) plus observational harness (Cursor/Grok hooks bound, Repertoire fastened, Station present). `--go` emits a shop-style forge GO receipt; `--require-harness=bare|suited|partial` turns that observation into a gate. Mint fails on a costume dump. Isolated HOME skips machine `~/.grok`. Shared HOME last-mile dest is project `.grok/plugins/0xray` (no last-wins machine plugin). `ci` reports GitHub Actions (no auto-push). `hooks` installs git pre/post hooks. GitHub `0xRay CI/CD` is the mill gate on `main`. `Deploy Docs` is the mill Pages put.
|
|
43
43
|
|
|
44
44
|
`docs-check` and `gate` run **full** 0xRay corpus only when the milled `package.json` name is `0xray` and `docs-site/` exists. Otherwise **light**: `package.json` + CHANGELOG.
|
|
45
45
|
|