0xray 4.0.42 → 4.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitignore.default +4 -1
- package/.grok-plugin/plugin.json +1 -1
- package/.opencode/skills/orchestrator/SKILL.md +1 -7
- package/.plugin/plugin.json +1 -1
- package/.xray/features.json +8 -5
- package/.xray/features.schema.json +8 -0
- package/AGENTS-consumer.md +9 -7
- package/AGENTS.md +19 -10
- package/LICENSE +1 -1
- package/README.md +15 -9
- package/SKILLS.md +3 -1
- package/dist/.gitignore.default +4 -1
- package/dist/AGENTS.md +19 -10
- package/dist/CHANGELOG.md +109 -11
- package/dist/LICENSE +1 -1
- package/dist/README.md +15 -9
- package/dist/SKILLS.md +3 -1
- package/dist/cli/commands/opencode-install.js +3 -9
- package/dist/cli/commands/plugin-commands.d.ts +4 -0
- package/dist/cli/commands/plugin-commands.js +84 -41
- package/dist/cli/commands/skill-install.js +10 -5
- package/dist/cli/goggles-status.d.ts +2 -5
- package/dist/cli/goggles-status.js +5 -53
- package/dist/cli/index.js +2 -2
- 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/enforcer-tools.d.ts +1 -1
- package/dist/enforcement/enforcer-tools.js +1 -1
- package/dist/integrations/cursor/README.md +1 -1
- package/dist/integrations/cursor/hooks/hooks.json +6 -3
- package/dist/integrations/cursor/hooks/pre-tool-use.js +104 -37
- package/dist/integrations/cursor/hooks/xray-cloud-hook.sh +9 -1
- package/dist/integrations/grok/grok-cli.js +5 -7
- package/dist/integrations/grok/hooks/grok-hook-utils.js +4 -1
- package/dist/integrations/grok/hooks/pre-tool-use.js +6 -76
- package/dist/integrations/grok/hooks/session-start.js +4 -2
- package/dist/integrations/hermes-agent/bridge.mjs +17 -1
- package/dist/integrations/hooks/delegation-gate-runtime.mjs +3 -2
- package/dist/integrations/hooks/goggles-mcp.mjs +23 -181
- package/dist/integrations/hooks/goggles-pipeline.mjs +606 -571
- package/dist/integrations/hooks/goggles-planes.json +95 -46
- package/dist/integrations/hooks/plates.cjs +84 -0
- package/dist/integrations/hooks/pre-tool-speak.mjs +74 -0
- package/dist/integrations/hooks/skill-seek.mjs +115 -0
- package/dist/integrations/hooks/station-hook-runtime.cjs +4 -1
- package/dist/integrations/openclaw/hooks/pre-tool-gate-runtime.mjs +24 -7
- package/dist/integrations/openclaw/plugin/xray-pre-tool/index.js +26 -2
- package/dist/integrations/openclaw/plugin/xray-pre-tool/package.json +1 -1
- package/dist/memory-routing/plates.d.ts +1 -1
- package/dist/memory-routing/plates.js +14 -0
- 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/thin-dispatch.d.ts +1 -1
- package/dist/nucleus/thin-dispatch.js +1 -1
- package/dist/nucleus/work-freshness.mjs +10 -0
- package/dist/plugin/xray-codex-injection.js +20 -0
- package/dist/processors/implementations/nudge-processor.d.ts +1 -1
- package/dist/processors/implementations/nudge-processor.js +4 -4
- package/dist/skills/orchestrator/SKILL.md +1 -7
- package/docs-site/docs/plates/activity-log.md +1 -1
- package/docs-site/docs/plates/asides.md +35 -0
- 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/confer.md +35 -0
- package/docs-site/docs/plates/consumer-mcp.md +35 -0
- package/docs-site/docs/plates/cursor-compact.md +1 -1
- package/docs-site/docs/plates/delegation-gate.md +35 -0
- package/docs-site/docs/plates/dynamo.md +35 -0
- package/docs-site/docs/plates/foundry.md +35 -0
- package/docs-site/docs/plates/glossary.md +7 -3
- package/docs-site/docs/plates/goggles.md +12 -1
- 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/ground.md +35 -0
- package/docs-site/docs/plates/hermes.md +35 -0
- 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 +16 -7
- package/docs-site/docs/plates/inference-cycle.md +35 -0
- 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 +8 -6
- 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/openclaw.md +35 -0
- package/docs-site/docs/plates/opencode.md +35 -0
- 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/repertoire.md +35 -0
- 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/synthesis.md +35 -0
- package/docs-site/docs/plates/temperament.md +35 -0
- package/docs-site/docs/plates/trail-state.md +2 -2
- package/docs-site/docs/plates/work-fresh.md +1 -1
- package/docs-site/docs/plates/write-home.md +1 -1
- package/llms.txt +14 -6
- package/package.json +3 -3
- package/scripts/foundry/README.md +5 -3
- package/scripts/foundry/mint-suit.cjs +120 -2
- package/scripts/foundry/plant/skills/mill/SKILL.md +1 -1
- package/scripts/foundry/reconcile-version.mjs +10 -3
- package/scripts/foundry/release-gate.mjs +111 -15
- package/scripts/foundry/release.mjs +9 -1
- package/scripts/foundry/validate-release-docs.mjs +2 -2
- package/scripts/foundry/version-manager.mjs +12 -4
- package/scripts/mjs/verify-pipeline-facets.mjs +1 -1
- package/scripts/node/install-bridges.cjs +91 -46
- package/scripts/node/pack-tmp-suit-proof.mjs +37 -10
- package/src/integrations/openclaw/plugin/xray-pre-tool/index.js +26 -2
- package/src/integrations/openclaw/plugin/xray-pre-tool/package.json +1 -1
- package/src/skills/orchestrator/SKILL.md +1 -7
- package/vendor/@0xray/repertoire/README.md +1 -1
- package/xray/agents_template.md +2 -2
- package/xray/features.json +8 -5
- package/xray/features.schema.json +8 -0
- package/docs-site/docs/plates/live-mesh.md +0 -41
|
@@ -2,7 +2,7 @@ import { createRequire } from 'node:module';
|
|
|
2
2
|
import { existsSync, readFileSync } from 'node:fs';
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
4
|
import { dirname, join } from 'node:path';
|
|
5
|
-
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
6
6
|
import { definePluginEntry } from 'openclaw/plugin-sdk/plugin-entry';
|
|
7
7
|
|
|
8
8
|
const require = createRequire(import.meta.url);
|
|
@@ -39,7 +39,7 @@ export default definePluginEntry({
|
|
|
39
39
|
register(api) {
|
|
40
40
|
api.on(
|
|
41
41
|
'before_tool_call',
|
|
42
|
-
(event, ctx) => {
|
|
42
|
+
async (event, ctx) => {
|
|
43
43
|
try {
|
|
44
44
|
const xrayRoot = resolveXrayRoot();
|
|
45
45
|
if (!xrayRoot) {
|
|
@@ -61,6 +61,30 @@ export default definePluginEntry({
|
|
|
61
61
|
if (!outcome.allow) {
|
|
62
62
|
return { block: true, blockReason: outcome.reason || '0xRay constitution' };
|
|
63
63
|
}
|
|
64
|
+
const spoken = `${event.toolName} ${JSON.stringify(event.params || {})}`.slice(0, 500);
|
|
65
|
+
const speakPath = [
|
|
66
|
+
join(xrayRoot, 'dist/integrations/hooks/pre-tool-speak.mjs'),
|
|
67
|
+
join(xrayRoot, 'src/integrations/hooks/pre-tool-speak.mjs'),
|
|
68
|
+
].find((candidate) => existsSync(candidate));
|
|
69
|
+
if (!speakPath) return undefined;
|
|
70
|
+
const speak = await import(pathToFileURL(speakPath).href);
|
|
71
|
+
const lens = speak.lensDecision(projectRoot, event.toolName, spoken);
|
|
72
|
+
if (lens?.decision === 'deny') {
|
|
73
|
+
return { block: true, blockReason: lens.reason };
|
|
74
|
+
}
|
|
75
|
+
if (lens?.reason) {
|
|
76
|
+
return {
|
|
77
|
+
block: false,
|
|
78
|
+
hookSpecificOutput: {
|
|
79
|
+
hookEventName: 'PreToolUse',
|
|
80
|
+
additionalContext: lens.reason,
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
const route = speak.repertoireRoute(spoken);
|
|
85
|
+
if (route?.hookSpecificOutput) {
|
|
86
|
+
return { block: false, hookSpecificOutput: route.hookSpecificOutput };
|
|
87
|
+
}
|
|
64
88
|
return undefined;
|
|
65
89
|
} catch (err) {
|
|
66
90
|
return {
|
|
@@ -57,13 +57,7 @@ When `multi_agent_orchestration.lead_dev_mode` is true in `features.json` (defau
|
|
|
57
57
|
|
|
58
58
|
The command is `0xray look`. `0xray goggles` is the same organ. A pipe keeps the line card. A terminal shows that card as a pane. Chat seats without hooks use the `goggles` MCP tools `look` and `status_lens`. Same organ.
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
Kind 1 names one plane: dichotomy, syncopate, synthesis, or loop. The lens holds that plane. An action on that plane is quiet. An action on another plane, or on a pipeline drawing, is stopped. A pipeline drawing is not a scope stop. Ground is not a scope stop. Scope, when named, is ecosystem, part, one flow, or one artifact, and an action wider than that scope is stopped. One kind and one scope level at a time. Two planes, calling, ground, and a pipeline name do not arm the lens. `outer` without one plane is `Name one plane.` After 1 is empty. Nothing is picked.
|
|
63
|
-
|
|
64
|
-
Naming a plane, `digest`, or `triage` returns that plane's view. The fields are from, digest, plate, entry, exit, files, skills, setup, teardown, and worn. Each field has a pipe. The pipe writes what it can see from the plate or the tree, and the view keeps that field. A field the pipe cannot see yet stays on the view for the next look. The rows are ground, routing, house, boot, governance, memory-recall, orchestration, processor, and reporting. Those nine are not Kind 0. The mill path is `scripts/foundry`. `triage` names the fields still open and whether the row holds. Zoom after the card is the same ladder: ecosystem, part, one flow, one artifact.
|
|
65
|
-
|
|
66
|
-
The hold lasts for the work that named the plane. A sentence that does not say look or name does not arm it and does not drop it. Work that says goggles clears the hold and stays quiet. When a tool names one card plane, the suit adds that plane's file as a hint.
|
|
60
|
+
A session starts on dev. The boot payload includes that card from `.xray/state/LENS.md`. The planes are dev, integration, domain, and ecosystem. A search inside the current card runs. Any other search returns the current card and does not run. Opening a file on the current card adds nothing. Opening a file on another plane switches to that card and the open proceeds. A file on no card stays on the current plane and returns that card. Compact writes that same card back. A thing on that plane has its own card. One card has its own plate and can name more. A missing plate names the stamp-plate skill. Stamp one plate for that card. The cards and plates that stay are what the next agent reads. Saying goggles clears a stale card line on the station.
|
|
67
61
|
|
|
68
62
|
## Hooks (rewired, not new MCPs)
|
|
69
63
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Factory memory organ for [0xRay](https://github.com/0xRayAI/xray): seed primitives, in-process memory routing, extra MCP (not an 8th `xray-*` server).
|
|
4
4
|
|
|
5
|
-
**v0.2.9** · 0xRay **4.
|
|
5
|
+
**v0.2.9** · 0xRay **4.1** wear. Runtime does **not** depend on `0xray` (optional peer for suit-verify scripts).
|
|
6
6
|
|
|
7
7
|
## Install
|
|
8
8
|
|
package/xray/agents_template.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 0xRay AI Agents
|
|
2
2
|
|
|
3
|
-
Quick reference for the 0xRay
|
|
3
|
+
Quick reference for the 0xRay suit (**4.1** — 7 consumer MCP servers). 0xRay is a three-subsystem autonomous engine. The suit is the wear.
|
|
4
4
|
|
|
5
5
|
## Available MCP Servers
|
|
6
6
|
|
|
@@ -28,7 +28,7 @@ All seven use `npx -y 0xray mcp <cmd>`:
|
|
|
28
28
|
|
|
29
29
|
## Governance
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
0xRay is a three-subsystem autonomous engine: Inference + External Governance (Dynamo Solar SSOT) + Autonomous Engine (thinDispatch 7-flow in MCP orchestrator). The suit is the wear. All actions are validated against the Universal Development Codex before execution.
|
|
32
32
|
|
|
33
33
|
**Codex**: `.xray/codex.json` — **70 terms** across all agent interactions.
|
|
34
34
|
|
package/xray/features.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./features.schema.json",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.1.1",
|
|
4
4
|
"description": "0xRay Framework - Unified Feature Configuration",
|
|
5
5
|
"suit_temperament": {
|
|
6
6
|
"profile": "auto",
|
|
@@ -12,6 +12,9 @@
|
|
|
12
12
|
"generic": "guided"
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
|
+
"goggles": {
|
|
16
|
+
"enabled": true
|
|
17
|
+
},
|
|
15
18
|
"token_optimization": {
|
|
16
19
|
"enabled": true,
|
|
17
20
|
"max_context_tokens": 20000,
|
|
@@ -54,16 +57,16 @@
|
|
|
54
57
|
"auto_provision_worktree": false
|
|
55
58
|
}
|
|
56
59
|
},
|
|
57
|
-
"grok_postprocessor_light":
|
|
60
|
+
"grok_postprocessor_light": false,
|
|
58
61
|
"inference_session_capture": {
|
|
59
62
|
"enabled": true,
|
|
60
63
|
"min_commits": 3,
|
|
61
64
|
"lookback_commits": 20
|
|
62
65
|
},
|
|
63
66
|
"autonomous_reporting": {
|
|
64
|
-
"enabled":
|
|
67
|
+
"enabled": false,
|
|
65
68
|
"interval_minutes": 60,
|
|
66
|
-
"auto_schedule":
|
|
69
|
+
"auto_schedule": false,
|
|
67
70
|
"include_health_assessment": true,
|
|
68
71
|
"include_agent_activities": true,
|
|
69
72
|
"include_pipeline_operations": true,
|
|
@@ -174,7 +177,7 @@
|
|
|
174
177
|
"every_n_todos_completed": 0
|
|
175
178
|
},
|
|
176
179
|
"inference": {
|
|
177
|
-
"description": "
|
|
180
|
+
"description": "The cycle runs from the CLI command inference:run and the session wake does not start it.",
|
|
178
181
|
"enabled": true,
|
|
179
182
|
"workflow_dir": ".xray/inference",
|
|
180
183
|
"reports_dir": ".xray/reports",
|
|
@@ -132,6 +132,14 @@
|
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
134
|
},
|
|
135
|
+
"goggles": {
|
|
136
|
+
"type": "object",
|
|
137
|
+
"description": "The suit keeps goggles on. enabled false fails wear and doctor.",
|
|
138
|
+
"properties": {
|
|
139
|
+
"enabled": { "type": "boolean" }
|
|
140
|
+
},
|
|
141
|
+
"required": ["enabled"]
|
|
142
|
+
},
|
|
135
143
|
"synthesis": {
|
|
136
144
|
"type": "object",
|
|
137
145
|
"properties": {
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Live mesh
|
|
3
|
-
sidebar_label: Live mesh
|
|
4
|
-
plate_type: pipeline
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Live mesh
|
|
8
|
-
|
|
9
|
-
Ping-pong eng events become one ordered JSON feed, then a mesh render. Markdown is never the source.
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
┌────────────────────────────────────────────────────────────┐
|
|
13
|
-
│ INPUT LAYER │
|
|
14
|
-
│ ┌──────────────┐ ┌──────────┐ ┌─────────┐ ┌───────────┐ │
|
|
15
|
-
│ │ GitHub REST │ │ deploy │ │ /health │ │ X ledger │ │
|
|
16
|
-
│ │ PR/issue │ │ muse │ │ probe │ │ herald │ │
|
|
17
|
-
│ └──────┬───────┘ └────┬─────┘ └────┬────┘ └─────┬─────┘ │
|
|
18
|
-
│ └──────────────┴────────────┴────────────┘ │
|
|
19
|
-
└─────────────────────────────┬──────────────────────────────┘
|
|
20
|
-
v
|
|
21
|
-
┌─────────────────────────────┼──────────────────────────────┐
|
|
22
|
-
│ PROCESSING LAYER v │
|
|
23
|
-
│ ┌────────────────────────────────────────────────────┐ │
|
|
24
|
-
│ │ fetch_feed.py │ │
|
|
25
|
-
│ │ poll → dedupe on id → rewrite live-events.json │ │
|
|
26
|
-
│ │ --watch keeps the feed warm │ │
|
|
27
|
-
│ └──────────────────────────┬─────────────────────────┘ │
|
|
28
|
-
└──────────────────────────────┼────────────────────────────┘
|
|
29
|
-
v
|
|
30
|
-
┌──────────────────────────────┼────────────────────────────┐
|
|
31
|
-
│ OUTPUT LAYER v │
|
|
32
|
-
│ ┌──────────────────────┐ ┌──────────────────────────┐ │
|
|
33
|
-
│ │ live-events.json │ │ render_mesh.py │ │
|
|
34
|
-
│ │ (+ jsonl append) │ │ mp4 / --follow │ │
|
|
35
|
-
│ └──────────────────────┘ └──────────────────────────┘ │
|
|
36
|
-
└────────────────────────────────────────────────────────────┘
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
Paths live under `house/live-mesh/`. Schema is `schema.json`. The plate that belongs here is house.
|
|
40
|
-
|
|
41
|
-
stamped · 0xray 4.0.42
|