0xray 3.5.4 → 4.0.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/.mcp.json +51 -7
- package/.opencode/skills/api-design/SKILL.md +1 -1
- package/.opencode/skills/architect-tools/SKILL.md +1 -1
- package/.opencode/skills/architecture-patterns/SKILL.md +1 -1
- package/.opencode/skills/auto-format/SKILL.md +1 -1
- package/.opencode/skills/boot-orchestrator/SKILL.md +2 -6
- package/.opencode/skills/bug-triage/SKILL.md +1 -1
- package/.opencode/skills/code-analyzer/SKILL.md +1 -1
- package/.opencode/skills/code-review/SKILL.md +1 -1
- package/.opencode/skills/enforcer/SKILL.md +1 -1
- package/.opencode/skills/framework-compliance-audit/SKILL.md +1 -1
- package/.opencode/skills/git-workflow/SKILL.md +1 -1
- package/.opencode/skills/hermes-agent/SKILL.md +36 -36
- package/.opencode/skills/inference-improve/SKILL.md +1 -1
- package/.opencode/skills/lint/SKILL.md +1 -1
- package/.opencode/skills/log-monitor/SKILL.md +1 -1
- package/.opencode/skills/model-health-check/SKILL.md +1 -1
- package/.opencode/skills/multimodal-looker/SKILL.md +1 -1
- package/.opencode/skills/orchestrator/SKILL.md +38 -14
- package/.opencode/skills/performance-analysis/SKILL.md +1 -1
- package/.opencode/skills/performance-optimization/SKILL.md +1 -1
- package/.opencode/skills/processor-pipeline/SKILL.md +1 -1
- package/.opencode/skills/project-analysis/SKILL.md +1 -1
- package/.opencode/skills/refactoring-strategies/SKILL.md +1 -1
- package/.opencode/skills/registry.json +65 -0
- package/.opencode/skills/researcher/SKILL.md +18 -5
- package/.opencode/skills/security-audit/SKILL.md +1 -1
- package/.opencode/skills/security-scan/SKILL.md +1 -1
- package/.opencode/skills/session-management/SKILL.md +1 -1
- package/.opencode/skills/state-manager/SKILL.md +1 -1
- package/.opencode/skills/storyteller/SKILL.md +1 -1
- package/.opencode/skills/strategist/SKILL.md +12 -0
- package/.opencode/skills/testing-best-practices/SKILL.md +37 -0
- package/.opencode/skills/testing-strategy/SKILL.md +14 -3
- package/.opencode/skills/ui-ux-design/SKILL.md +1 -1
- package/.opencode/skills/xray-orchestrator/index.ts +267 -0
- package/.xray/codex.json +12 -3
- package/.xray/features.json +32 -6
- package/.xray/features.schema.json +87 -0
- package/AGENTS-consumer.md +16 -6
- package/AGENTS.md +21 -3
- package/README.md +13 -10
- package/SKILLS.md +1 -1
- package/dist/AGENTS.md +21 -3
- package/dist/CHANGELOG.md +98 -0
- package/dist/README.md +13 -10
- package/dist/SKILLS.md +1 -1
- package/dist/cli/commands/hermes-install.js +6 -1
- package/dist/cli/commands/openclaw-install.js +14 -0
- package/dist/cli/index.js +0 -0
- package/dist/core/features-config.d.ts +30 -2
- package/dist/governance/governance-service.d.ts +1 -0
- package/dist/governance/governance-service.js +81 -6
- package/dist/infrastructure/schemas/cloud-schemas.d.ts +1 -1
- package/dist/integrations/enforcement-gate.js +15 -5
- package/dist/integrations/grok/grok-cli.d.ts +3 -0
- package/dist/integrations/grok/grok-cli.js +92 -13
- package/dist/integrations/grok/hooks/grok-hook-utils.js +99 -9
- package/dist/integrations/grok/hooks/post-tool-use.js +68 -25
- package/dist/integrations/grok/hooks/pre-tool-use.js +17 -14
- package/dist/integrations/grok/hooks/session-start.js +114 -4
- package/dist/integrations/grok/plugin/0xray/hooks/hooks.json +31 -24
- package/dist/integrations/hermes-agent/__init__.py +11 -1
- package/dist/integrations/hermes-agent/__pycache__/__init__.cpython-313.pyc +0 -0
- package/dist/integrations/hermes-agent/__pycache__/schemas.cpython-313.pyc +0 -0
- package/dist/integrations/hermes-agent/__pycache__/tools.cpython-313.pyc +0 -0
- package/dist/integrations/hermes-agent/bridge.mjs +92 -11
- package/dist/integrations/hooks/confer-hook-runtime.mjs +49 -0
- package/dist/integrations/hooks/delegation-gate-runtime.mjs +32 -3
- package/dist/integrations/hooks/pipeline-hook-runtime.mjs +211 -0
- package/dist/integrations/hooks/plan-hook-runtime.mjs +68 -0
- package/dist/integrations/hooks/station-hook-runtime.cjs +421 -0
- package/dist/integrations/hooks/station-hook-runtime.mjs +24 -0
- package/dist/integrations/hooks/station-memory-ingest.mjs +45 -0
- package/dist/integrations/hooks/station-memory-match.mjs +47 -0
- package/dist/integrations/hooks/user-aside-hook-runtime.mjs +49 -0
- package/dist/integrations/openclaw/client.d.ts +5 -1
- package/dist/integrations/openclaw/client.js +17 -9
- package/dist/integrations/openclaw/config.js +0 -1
- package/dist/integrations/openclaw/hooks/pre-tool-gate-runtime.mjs +102 -0
- package/dist/integrations/openclaw/index.js +17 -0
- package/dist/integrations/openclaw/plugin/xray-pre-tool/index.js +75 -0
- package/dist/integrations/openclaw/plugin/xray-pre-tool/openclaw.plugin.json +10 -0
- package/dist/integrations/openclaw/plugin/xray-pre-tool/package.json +10 -0
- package/dist/integrations/openclaw/pre-tool-gate.d.ts +19 -0
- package/dist/integrations/openclaw/pre-tool-gate.js +39 -0
- package/dist/mcps/architect-tools.server.js +6 -1
- package/dist/mcps/orchestrator/handlers/complexity-handler.d.ts +7 -0
- package/dist/mcps/orchestrator/handlers/complexity-handler.js +107 -8
- package/dist/mcps/orchestrator/handlers/task-handler.d.ts +6 -0
- package/dist/mcps/orchestrator/handlers/task-handler.js +75 -0
- package/dist/mcps/orchestrator/server.js +54 -5
- package/dist/memory-routing/index.d.ts +1 -1
- package/dist/memory-routing/index.js +1 -1
- package/dist/memory-routing/provider-loader.d.ts +4 -0
- package/dist/memory-routing/provider-loader.js +74 -4
- package/dist/memory-routing/provider-registry.js +3 -2
- package/dist/nucleus/aside-worktree.d.ts +41 -0
- package/dist/nucleus/aside-worktree.js +164 -0
- package/dist/nucleus/autonomy-kernel.d.ts +2 -2
- package/dist/nucleus/autonomy-kernel.js +17 -6
- package/dist/nucleus/confer.d.ts +57 -0
- package/dist/nucleus/confer.js +322 -0
- package/dist/nucleus/delegation-gate.d.ts +18 -8
- package/dist/nucleus/delegation-gate.js +234 -20
- package/dist/nucleus/lead-dev-plan-persistence.d.ts +27 -3
- package/dist/nucleus/lead-dev-plan-persistence.js +201 -19
- package/dist/nucleus/spawn-plan-resolution.d.ts +20 -0
- package/dist/nucleus/spawn-plan-resolution.js +42 -0
- package/dist/nucleus/suit-temperament.d.ts +40 -0
- package/dist/nucleus/suit-temperament.js +157 -0
- package/dist/nucleus/synthesis-consult-receipt.js +18 -2
- package/dist/nucleus/synthesis-context.js +1 -1
- package/dist/nucleus/user-aside.d.ts +70 -0
- package/dist/nucleus/user-aside.js +393 -0
- package/dist/plugin/xray-codex-injection.js +14 -3
- package/dist/postprocessor/PostProcessor.d.ts +1 -0
- package/dist/postprocessor/PostProcessor.js +11 -0
- package/dist/postprocessor/triggers/GitHookTrigger.js +11 -5
- package/dist/processors/implementations/session-summary-processor.d.ts +1 -1
- package/dist/processors/implementations/session-summary-processor.js +9 -6
- package/opencode.json +88 -0
- package/package.json +25 -6
- package/scripts/hooks/install-hooks.cjs +21 -6
- package/scripts/hooks/run-hook.js +237 -88
- package/scripts/mjs/run-repertoire-mcp.mjs +39 -0
- package/scripts/mjs/verify-confer-core.mjs +103 -0
- package/scripts/mjs/verify-delegation-gate-core.mjs +76 -3
- package/scripts/mjs/verify-four-floor-compact.mjs +524 -0
- package/scripts/mjs/verify-hermes-session-start.mjs +137 -0
- package/scripts/mjs/verify-pipeline-facets.mjs +215 -0
- package/scripts/mjs/verify-pre-push-diff-core.mjs +87 -0
- package/scripts/mjs/verify-temperament-live.mjs +261 -0
- package/scripts/mjs/verify-user-aside-core.mjs +137 -0
- package/scripts/node/bridge-mcp-wiring.cjs +287 -29
- package/scripts/node/install-bridges.cjs +198 -44
- package/scripts/node/load-reflection-config.mjs +2 -2
- package/scripts/node/postinstall.cjs +50 -27
- package/scripts/node/release-gate.mjs +8 -4
- package/scripts/node/release.mjs +2 -2
- package/scripts/node/validate-release-docs.mjs +20 -33
- package/scripts/node/version-manager.mjs +25 -10
- package/src/integrations/grok/plugin/0xray/hooks/hooks.json +31 -24
- package/src/integrations/openclaw/README.md +134 -0
- package/src/integrations/openclaw/plugin/xray-pre-tool/index.js +75 -0
- package/src/integrations/openclaw/plugin/xray-pre-tool/openclaw.plugin.json +10 -0
- package/src/integrations/openclaw/plugin/xray-pre-tool/package.json +10 -0
- package/src/mcps/architect-tools.server.ts +6 -1
- package/src/mcps/orchestrator/handlers/complexity-handler.ts +180 -21
- package/src/mcps/orchestrator/handlers/task-handler.ts +99 -0
- package/src/mcps/orchestrator/server.ts +56 -5
- package/vendor/@0xray/repertoire/AGENTS.md +163 -0
- package/vendor/@0xray/repertoire/LICENSE +21 -0
- package/vendor/@0xray/repertoire/README.md +120 -0
- package/vendor/@0xray/repertoire/data/curated_signals.json +208 -0
- package/vendor/@0xray/repertoire/dist/RepertoireService.d.ts +78 -0
- package/vendor/@0xray/repertoire/dist/RepertoireService.d.ts.map +1 -0
- package/vendor/@0xray/repertoire/dist/RepertoireService.js +153 -0
- package/vendor/@0xray/repertoire/dist/RepertoireService.js.map +1 -0
- package/vendor/@0xray/repertoire/dist/governance/ontological-trap-enforcer.d.ts +39 -0
- package/vendor/@0xray/repertoire/dist/governance/ontological-trap-enforcer.d.ts.map +1 -0
- package/vendor/@0xray/repertoire/dist/governance/ontological-trap-enforcer.js +60 -0
- package/vendor/@0xray/repertoire/dist/governance/ontological-trap-enforcer.js.map +1 -0
- package/vendor/@0xray/repertoire/dist/index.d.ts +14 -0
- package/vendor/@0xray/repertoire/dist/index.d.ts.map +1 -0
- package/vendor/@0xray/repertoire/dist/index.js +14 -0
- package/vendor/@0xray/repertoire/dist/index.js.map +1 -0
- package/vendor/@0xray/repertoire/dist/ingestion/groover-log-ingester.d.ts +26 -0
- package/vendor/@0xray/repertoire/dist/ingestion/groover-log-ingester.d.ts.map +1 -0
- package/vendor/@0xray/repertoire/dist/ingestion/groover-log-ingester.js +109 -0
- package/vendor/@0xray/repertoire/dist/ingestion/groover-log-ingester.js.map +1 -0
- package/vendor/@0xray/repertoire/dist/ingestion/groover-log-parser.d.ts +18 -0
- package/vendor/@0xray/repertoire/dist/ingestion/groover-log-parser.d.ts.map +1 -0
- package/vendor/@0xray/repertoire/dist/ingestion/groover-log-parser.js +94 -0
- package/vendor/@0xray/repertoire/dist/ingestion/groover-log-parser.js.map +1 -0
- package/vendor/@0xray/repertoire/dist/ingestion/orchestrator-feedback-ingester.d.ts +7 -0
- package/vendor/@0xray/repertoire/dist/ingestion/orchestrator-feedback-ingester.d.ts.map +1 -0
- package/vendor/@0xray/repertoire/dist/ingestion/orchestrator-feedback-ingester.js +18 -0
- package/vendor/@0xray/repertoire/dist/ingestion/orchestrator-feedback-ingester.js.map +1 -0
- package/vendor/@0xray/repertoire/dist/ingestion/xray-session-ingester.d.ts +31 -0
- package/vendor/@0xray/repertoire/dist/ingestion/xray-session-ingester.d.ts.map +1 -0
- package/vendor/@0xray/repertoire/dist/ingestion/xray-session-ingester.js +83 -0
- package/vendor/@0xray/repertoire/dist/ingestion/xray-session-ingester.js.map +1 -0
- package/vendor/@0xray/repertoire/dist/mcp/server.d.ts +6 -0
- package/vendor/@0xray/repertoire/dist/mcp/server.d.ts.map +1 -0
- package/vendor/@0xray/repertoire/dist/mcp/server.js +173 -0
- package/vendor/@0xray/repertoire/dist/mcp/server.js.map +1 -0
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/RepertoireOrchestratorBridge.d.ts +27 -0
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/RepertoireOrchestratorBridge.d.ts.map +1 -0
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/RepertoireOrchestratorBridge.js +107 -0
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/RepertoireOrchestratorBridge.js.map +1 -0
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/capability-enhancer.d.ts +11 -0
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/capability-enhancer.d.ts.map +1 -0
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/capability-enhancer.js +32 -0
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/capability-enhancer.js.map +1 -0
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/confidence-gate.d.ts +9 -0
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/confidence-gate.d.ts.map +1 -0
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/confidence-gate.js +72 -0
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/confidence-gate.js.map +1 -0
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/signal-agent-affinity.d.ts +5 -0
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/signal-agent-affinity.d.ts.map +1 -0
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/signal-agent-affinity.js +18 -0
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/signal-agent-affinity.js.map +1 -0
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/signal-injector.d.ts +31 -0
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/signal-injector.d.ts.map +1 -0
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/signal-injector.js +218 -0
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/signal-injector.js.map +1 -0
- package/vendor/@0xray/repertoire/dist/paths.d.ts +24 -0
- package/vendor/@0xray/repertoire/dist/paths.d.ts.map +1 -0
- package/vendor/@0xray/repertoire/dist/paths.js +74 -0
- package/vendor/@0xray/repertoire/dist/paths.js.map +1 -0
- package/vendor/@0xray/repertoire/dist/provider/memory-routing-provider.d.ts +141 -0
- package/vendor/@0xray/repertoire/dist/provider/memory-routing-provider.d.ts.map +1 -0
- package/vendor/@0xray/repertoire/dist/provider/memory-routing-provider.js +210 -0
- package/vendor/@0xray/repertoire/dist/provider/memory-routing-provider.js.map +1 -0
- package/vendor/@0xray/repertoire/dist/registry/CuratedSignalsManager.d.ts +48 -0
- package/vendor/@0xray/repertoire/dist/registry/CuratedSignalsManager.d.ts.map +1 -0
- package/vendor/@0xray/repertoire/dist/registry/CuratedSignalsManager.js +221 -0
- package/vendor/@0xray/repertoire/dist/registry/CuratedSignalsManager.js.map +1 -0
- package/vendor/@0xray/repertoire/dist/registry/InferenceStateManager.d.ts +11 -0
- package/vendor/@0xray/repertoire/dist/registry/InferenceStateManager.d.ts.map +1 -0
- package/vendor/@0xray/repertoire/dist/registry/InferenceStateManager.js +43 -0
- package/vendor/@0xray/repertoire/dist/registry/InferenceStateManager.js.map +1 -0
- package/vendor/@0xray/repertoire/dist/registry/signal-prune.d.ts +15 -0
- package/vendor/@0xray/repertoire/dist/registry/signal-prune.d.ts.map +1 -0
- package/vendor/@0xray/repertoire/dist/registry/signal-prune.js +35 -0
- package/vendor/@0xray/repertoire/dist/registry/signal-prune.js.map +1 -0
- package/vendor/@0xray/repertoire/dist/synthesis/concrete-sections.d.ts +3 -0
- package/vendor/@0xray/repertoire/dist/synthesis/concrete-sections.d.ts.map +1 -0
- package/vendor/@0xray/repertoire/dist/synthesis/concrete-sections.js +24 -0
- package/vendor/@0xray/repertoire/dist/synthesis/concrete-sections.js.map +1 -0
- package/vendor/@0xray/repertoire/dist/synthesis/meta-inference-engine.d.ts +24 -0
- package/vendor/@0xray/repertoire/dist/synthesis/meta-inference-engine.d.ts.map +1 -0
- package/vendor/@0xray/repertoire/dist/synthesis/meta-inference-engine.js +148 -0
- package/vendor/@0xray/repertoire/dist/synthesis/meta-inference-engine.js.map +1 -0
- package/vendor/@0xray/repertoire/dist/synthesis/primitive-confidence-aggregator.d.ts +4 -0
- package/vendor/@0xray/repertoire/dist/synthesis/primitive-confidence-aggregator.d.ts.map +1 -0
- package/vendor/@0xray/repertoire/dist/synthesis/primitive-confidence-aggregator.js +44 -0
- package/vendor/@0xray/repertoire/dist/synthesis/primitive-confidence-aggregator.js.map +1 -0
- package/vendor/@0xray/repertoire/dist/synthesis/synthesis-prompt-builder.d.ts +22 -0
- package/vendor/@0xray/repertoire/dist/synthesis/synthesis-prompt-builder.d.ts.map +1 -0
- package/vendor/@0xray/repertoire/dist/synthesis/synthesis-prompt-builder.js +66 -0
- package/vendor/@0xray/repertoire/dist/synthesis/synthesis-prompt-builder.js.map +1 -0
- package/vendor/@0xray/repertoire/dist/types.d.ts +210 -0
- package/vendor/@0xray/repertoire/dist/types.d.ts.map +1 -0
- package/vendor/@0xray/repertoire/dist/types.js +2 -0
- package/vendor/@0xray/repertoire/dist/types.js.map +1 -0
- package/vendor/@0xray/repertoire/docs/MEMORY-ROUTING-PROVIDER.md +54 -0
- package/vendor/@0xray/repertoire/hermes-mcp.example.json +20 -0
- package/vendor/@0xray/repertoire/mcp-config.example.json +11 -0
- package/vendor/@0xray/repertoire/package.json +124 -0
- package/vendor/@0xray/repertoire/schemas/curated-signal.schema.json +68 -0
- package/vendor/@0xray/repertoire/schemas/inference-log.schema.json +82 -0
- package/vendor/@0xray/repertoire/scripts/confirm-suit-all.mjs +253 -0
- package/vendor/@0xray/repertoire/scripts/confirm-suit-harness.mjs +220 -0
- package/vendor/@0xray/repertoire/scripts/run-live-synthesis-checkpoint.mjs +215 -0
- package/vendor/@0xray/repertoire/scripts/suit-bridge-shared.mjs +139 -0
- package/vendor/@0xray/repertoire/scripts/verify-grok-suit.mjs +304 -0
- package/vendor/@0xray/repertoire/scripts/verify-hermes-suit.mjs +163 -0
- package/vendor/@0xray/repertoire/scripts/verify-openclaw-suit.mjs +125 -0
- package/vendor/@0xray/repertoire/scripts/verify-opencode-suit.mjs +127 -0
- package/vendor/@0xray/repertoire/scripts/verify-synthesis-dogfood.mjs +207 -0
- package/vendor/@0xray/repertoire/skills/repertoire-trap-handling/SKILL.md +206 -0
- package/xray/codex.json +12 -3
- package/xray/features.json +32 -6
- package/xray/features.schema.json +87 -0
package/AGENTS-consumer.md
CHANGED
|
@@ -4,7 +4,15 @@
|
|
|
4
4
|
|
|
5
5
|
Quick reference for the 0xRay AI orchestration framework (shipped to your project on `npm install 0xray`).
|
|
6
6
|
|
|
7
|
-
**
|
|
7
|
+
**v4.0.0** — a suit that survives the context window.
|
|
8
|
+
|
|
9
|
+
**v4.0.0** — same **three-subsystem OS** as v2 (Inference · External Governance · Autonomous Engine). Constitution always on. Temperament scales ceremony. Four platform bridges. Repertoire auto-enables when the module is present; otherwise `memory_routing` stays off. Trim fat, do not gut the design.
|
|
10
|
+
|
|
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
|
+
|
|
13
|
+
## Hot-swap
|
|
14
|
+
|
|
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.
|
|
8
16
|
|
|
9
17
|
## Postinstall (automatic)
|
|
10
18
|
|
|
@@ -76,14 +84,16 @@ Configure in `.xray/features.json`:
|
|
|
76
84
|
"memory_routing": {
|
|
77
85
|
"enabled": true,
|
|
78
86
|
"provider": "repertoire",
|
|
79
|
-
"module_path": "
|
|
87
|
+
"module_path": "node_modules/@0xray/repertoire/dist/provider/memory-routing-provider.js",
|
|
80
88
|
"config": {
|
|
81
|
-
"signalsPath": "
|
|
89
|
+
"signalsPath": "node_modules/@0xray/repertoire/data/curated_signals.json",
|
|
90
|
+
"statePath": ".xray/state/repertoire/inference-state.json",
|
|
91
|
+
"feedbackDir": ".xray/state/repertoire/feedback"
|
|
82
92
|
}
|
|
83
93
|
}
|
|
84
94
|
```
|
|
85
95
|
|
|
86
|
-
|
|
96
|
+
Opt out: `{ "enabled": false, "provider": "repertoire" }`.
|
|
87
97
|
|
|
88
98
|
**External MCP** (Hermes/Grok): add Repertoire alongside 0xRay servers:
|
|
89
99
|
|
|
@@ -104,7 +114,7 @@ The Universal Development Codex (`.xray/codex.json`, **69 terms**) is enforced b
|
|
|
104
114
|
|------|------|-------------|
|
|
105
115
|
| 11 | No `any`, `@ts-ignore`, `@ts-expect-error` | PreToolUse deny on edits |
|
|
106
116
|
| 29 | Security by design — no `eval()` | PreToolUse deny |
|
|
107
|
-
| 59 | Complex work → orchestrator intake | PreToolUse deny
|
|
117
|
+
| 59 | Complex work → orchestrator intake | **guided/strict:** PreToolUse **deny** spawn without plan. **frontier:** **warn** (allow) — engine still available; leftover-plan todo mismatch also warns. Codex 11/29/69 still **deny**. |
|
|
108
118
|
| 67–68 | Best subagents + lead dev ownership | `analyze-complexity` + orchestrator skill |
|
|
109
119
|
| **69** | **No new MCP/skill/handler surface** | PreToolUse deny new `*.server.ts`, `SKILL.md` |
|
|
110
120
|
|
|
@@ -123,7 +133,7 @@ When the suit is worn, **lead dev mode** is ON via existing config + hooks:
|
|
|
123
133
|
| Test triage | PreToolUse hook | Per-suite hint on full `npm test` |
|
|
124
134
|
| Playbook | **`orchestrator`** skill | Codex 59, 67–69 rules |
|
|
125
135
|
|
|
126
|
-
**First substantive task:** `analyze-complexity` with `tasks` array — **required before** `spawn_subagent`. You are the **lead developer**. Users speak in goals, not keywords.
|
|
136
|
+
**First substantive task (guided/strict):** `analyze-complexity` with `tasks` array — **required before** `spawn_subagent`. **Frontier:** intake is optional; spawn without a plan **warns**. You are the **lead developer**. Users speak in goals, not keywords.
|
|
127
137
|
|
|
128
138
|
| # | Rule |
|
|
129
139
|
|---|------|
|
package/AGENTS.md
CHANGED
|
@@ -1,15 +1,23 @@
|
|
|
1
1
|
# xray Agents
|
|
2
2
|
|
|
3
|
-
Quick reference for the xray AI orchestration framework (**
|
|
3
|
+
Quick reference for the xray AI orchestration framework (**v4.0.0**).
|
|
4
4
|
|
|
5
|
-
**
|
|
5
|
+
**v4.0.0** — a suit that survives the context window.
|
|
6
|
+
|
|
7
|
+
**Exo, not catalog.** Three-subsystem OS (Inference · External Governance · Autonomous Engine) · constitution always on · temperament by host · 4 floors · Repertoire when it resolves.
|
|
8
|
+
|
|
9
|
+
**Temperament:** 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; Codex 11/29/69 still **deny**. Missing `suit_temperament` stays guided. See `docs-site/docs/architecture/v3-from-v2.md`.
|
|
10
|
+
|
|
11
|
+
## Hot-swap
|
|
12
|
+
|
|
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.
|
|
6
14
|
|
|
7
15
|
## What is xray?
|
|
8
16
|
|
|
9
17
|
xray provides intelligent multi-agent orchestration with automatic delegation and Codex compliance validation under the pure v2 three-subsystem model:
|
|
10
18
|
|
|
11
19
|
- **Inference** — proposals, reflection, memory routing (optional)
|
|
12
|
-
- **External Governance** — Dynamo Solar SSOT,
|
|
20
|
+
- **External Governance** — Dynamo Solar SSOT, 69-term Codex
|
|
13
21
|
- **Autonomous Engine** — thinDispatch 7-flow, AsideContext, confidence gate
|
|
14
22
|
|
|
15
23
|
Agents are declared in `src/opencode/agents/*.yml` — the YML SSOT. Skills live in `src/skills/*/SKILL.md` — see [SKILLS.md](SKILLS.md). Consumer projects receive slimmed copies via postinstall (`AGENTS-consumer.md` → `AGENTS.md`, skills synced to platform dirs).
|
|
@@ -77,6 +85,16 @@ Governance deliberation: **code-review**, **security-audit**, **researcher** wit
|
|
|
77
85
|
- Observation extractors: governance, orchestration, complexity
|
|
78
86
|
- Repertoire context flows via `ExecutionPlan.memoryContext`
|
|
79
87
|
|
|
88
|
+
## User asides (parallel work tracks)
|
|
89
|
+
|
|
90
|
+
**Not** AsideContext — user-declared parallel tracks (worktree-like):
|
|
91
|
+
|
|
92
|
+
- SSOT: `.xray/state/asides/{id}.json` + `_active.json`; todos use `{asideId}.a.*` (namespaced)
|
|
93
|
+
- Intake: `analyze-complexity` with `userAsideId` (+ optional `worktree`, `branch`)
|
|
94
|
+
- Activate / resume main: `orchestrate-task` with `userAsideId` or `clearActiveAside: true`
|
|
95
|
+
- Spawn gate routes to active aside plan; session-boot exposes `activeAside`
|
|
96
|
+
- Config: `features.json` → `multi_agent_orchestration.user_asides.enabled`
|
|
97
|
+
|
|
80
98
|
## Confidence gate (v3.3.1)
|
|
81
99
|
|
|
82
100
|
`ExecutionPlanner.calculateTaskComplexity()` + `getTaskConfidence()` — complexity boost and ontological-trap routing.
|
package/README.md
CHANGED
|
@@ -1,22 +1,24 @@
|
|
|
1
|
-
# xray —
|
|
1
|
+
# xray — exo for coding agents
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**v4.0.0** — a suit that survives the context window. Constitution always on. Temperament scales ceremony. Four host floors. Repertoire is the muscle for handoffs.
|
|
4
|
+
|
|
5
|
+
Not a catalog of agents. The product is the **skeleton you wear**.
|
|
4
6
|
|
|
5
7
|
## Your AI Power Suit
|
|
6
8
|
|
|
7
9
|
**Your AI Power ⚡️ Suit 🦾** — an exoskeleton that blocks AI slop from becoming real damage.
|
|
8
10
|
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
- **Bone** — three-subsystem OS: Inference · External Governance (Dynamo / Codex) · Autonomous Engine (thinDispatch)
|
|
12
|
+
- **Always on** — Codex 11 / 29 / 69, destructive shell, no new MCP/skill/handler surface
|
|
13
|
+
- **Temperament** — `frontier` | `guided` | `strict` | `auto` — how loud the engine is, not whether governance exists
|
|
14
|
+
- **Wear** — Grok, OpenCode, Hermes, OpenClaw. One SSOT gate
|
|
15
|
+
- **Muscle** — Repertoire: auto-enables when the module resolves; session-start writes a one-line resume so the next station is not born amnesiac
|
|
14
16
|
|
|
15
17
|
```bash
|
|
16
|
-
npm install 0xray
|
|
18
|
+
npm install 0xray
|
|
17
19
|
```
|
|
18
20
|
|
|
19
|
-
|
|
21
|
+
Consumer `npm install 0xray` auto-wires four platform bridges 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"`.
|
|
20
22
|
|
|
21
23
|
## Quick Start
|
|
22
24
|
|
|
@@ -46,6 +48,7 @@ Docs: [guides/autonomy-command](docs-site/docs/guides/autonomy-command.md) · Sk
|
|
|
46
48
|
|
|
47
49
|
| Version | Highlights |
|
|
48
50
|
|---------|------------|
|
|
51
|
+
| **4.0.0** | Exo + temperament. Constitution always on; ceremony by host. Repertoire enable-when-resolves + session resume. Survive the context window — still in development, not on npm yet. [vision](docs-site/docs/architecture/v4-vision.md) · [now](docs-site/docs/architecture/v4-now.md) |
|
|
49
52
|
| **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. |
|
|
50
53
|
| **3.3.1** | Orchestrator confidence gate wired into execution planning. |
|
|
51
54
|
| **3.3.0** | Pluggable **Memory Routing** (`features.json` → `memory_routing`). Repertoire is the default provider in the framework repo. |
|
|
@@ -165,7 +168,7 @@ Pluggable `memory_routing` block in `features.json` (validated by `features.sche
|
|
|
165
168
|
|
|
166
169
|
**External hosts** (Hermes/Grok): add `repertoire-mcp` to `.mcp.json` — see Repertoire docs.
|
|
167
170
|
|
|
168
|
-
|
|
171
|
+
Opt out: `"memory_routing": { "enabled": false, "provider": "repertoire" }`.
|
|
169
172
|
|
|
170
173
|
Docs: [memory routing](docs-site/docs/guides/memory-routing.md) · [Repertoire](docs-site/docs/guides/repertoire.md) · [features.json](docs-site/docs/guides/features-json.md) · [all features since 3.1](docs-site/docs/guides/features-since-3.1.md)
|
|
171
174
|
|
package/SKILLS.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 0xray Skills
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**v4.0.0** — **45 skills** · invoked via `xray-skills` MCP · synced on postinstall
|
|
4
4
|
|
|
5
5
|
xray ships 45 knowledge skills (`src/skills/<name>/SKILL.md`) across the full software lifecycle. 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`), agent `@mentions`, or platform skill directories after postinstall.
|
|
6
6
|
|
package/dist/AGENTS.md
CHANGED
|
@@ -1,15 +1,23 @@
|
|
|
1
1
|
# xray Agents
|
|
2
2
|
|
|
3
|
-
Quick reference for the xray AI orchestration framework (**
|
|
3
|
+
Quick reference for the xray AI orchestration framework (**v4.0.0**).
|
|
4
4
|
|
|
5
|
-
**
|
|
5
|
+
**v4.0.0** — a suit that survives the context window.
|
|
6
|
+
|
|
7
|
+
**Exo, not catalog.** Three-subsystem OS (Inference · External Governance · Autonomous Engine) · constitution always on · temperament by host · 4 floors · Repertoire when it resolves.
|
|
8
|
+
|
|
9
|
+
**Temperament:** 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; Codex 11/29/69 still **deny**. Missing `suit_temperament` stays guided. See `docs-site/docs/architecture/v3-from-v2.md`.
|
|
10
|
+
|
|
11
|
+
## Hot-swap
|
|
12
|
+
|
|
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.
|
|
6
14
|
|
|
7
15
|
## What is xray?
|
|
8
16
|
|
|
9
17
|
xray provides intelligent multi-agent orchestration with automatic delegation and Codex compliance validation under the pure v2 three-subsystem model:
|
|
10
18
|
|
|
11
19
|
- **Inference** — proposals, reflection, memory routing (optional)
|
|
12
|
-
- **External Governance** — Dynamo Solar SSOT,
|
|
20
|
+
- **External Governance** — Dynamo Solar SSOT, 69-term Codex
|
|
13
21
|
- **Autonomous Engine** — thinDispatch 7-flow, AsideContext, confidence gate
|
|
14
22
|
|
|
15
23
|
Agents are declared in `src/opencode/agents/*.yml` — the YML SSOT. Skills live in `src/skills/*/SKILL.md` — see [SKILLS.md](SKILLS.md). Consumer projects receive slimmed copies via postinstall (`AGENTS-consumer.md` → `AGENTS.md`, skills synced to platform dirs).
|
|
@@ -77,6 +85,16 @@ Governance deliberation: **code-review**, **security-audit**, **researcher** wit
|
|
|
77
85
|
- Observation extractors: governance, orchestration, complexity
|
|
78
86
|
- Repertoire context flows via `ExecutionPlan.memoryContext`
|
|
79
87
|
|
|
88
|
+
## User asides (parallel work tracks)
|
|
89
|
+
|
|
90
|
+
**Not** AsideContext — user-declared parallel tracks (worktree-like):
|
|
91
|
+
|
|
92
|
+
- SSOT: `.xray/state/asides/{id}.json` + `_active.json`; todos use `{asideId}.a.*` (namespaced)
|
|
93
|
+
- Intake: `analyze-complexity` with `userAsideId` (+ optional `worktree`, `branch`)
|
|
94
|
+
- Activate / resume main: `orchestrate-task` with `userAsideId` or `clearActiveAside: true`
|
|
95
|
+
- Spawn gate routes to active aside plan; session-boot exposes `activeAside`
|
|
96
|
+
- Config: `features.json` → `multi_agent_orchestration.user_asides.enabled`
|
|
97
|
+
|
|
80
98
|
## Confidence gate (v3.3.1)
|
|
81
99
|
|
|
82
100
|
`ExecutionPlanner.calculateTaskComplexity()` + `getTaskConfidence()` — complexity boost and ontological-trap routing.
|
package/dist/CHANGELOG.md
CHANGED
|
@@ -4,13 +4,111 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The format is based on [Conventional Commits](https://www.conventionalcommits.org/).
|
|
6
6
|
|
|
7
|
+
## [4.0.0] - 2026-08-28
|
|
8
|
+
|
|
9
|
+
First ship of the **temperament** line on the **v2 three-subsystem OS** (Inference · External Governance · Autonomous Engine). npm is still `3.5.5`; this line is **4.0.0** on `feat/v4-temperament` — **still in development, not published**.
|
|
10
|
+
|
|
11
|
+
### ✨ Features
|
|
12
|
+
- **Factory memory organ** — `@0xray/repertoire@0.2.0` vendored as a runtime dependency. Shipped `memory_routing` is **on** (8 factory primitives). Extra host MCP stays `repertoire`, not an 8th `xray-*` server. Compact ingest writes `.xray/state/repertoire/`. Explicit opt-out: `enabled: false` + `provider: "repertoire"`.
|
|
13
|
+
- **Four-floor compact + memory** — station heat matches Repertoire on every host (not only Grok). Compact on Grok Pre/PostCompact, Hermes session-start, OpenCode plugin boot, OpenClaw PreToolUse keeps intent, Working signals, and `Repertoire: on`.
|
|
14
|
+
- **Suit temperament** — `frontier` | `guided` | `strict` | `auto`. Constitution (Codex 11/29/69, destructive shell) always on. Ceremony (spawn-plan deny, confer, synthesis) scales by host.
|
|
15
|
+
- **Grok 4.6 / Grok Build** — `auto` → frontier: spawn missing/stale/todo-mismatch **warns**; confer off unless opted in.
|
|
16
|
+
- **OpenCode / Hermes** (including free models) — stay **guided**: full v2 engine ceremony.
|
|
17
|
+
- **Upgrade safety** — consumers without `suit_temperament` stay **guided**; postinstall merge will not frontier existing Grok installs.
|
|
18
|
+
- **Codex 69** — in `codex.json` (blocking). PreToolUse already denied new MCP/skill/handler files.
|
|
19
|
+
- **OpenClaw host PreToolUse** — `evaluateOpenClawHostPreTool` SSOT + `~/.openclaw/hooks/xray-pre-tool.mjs` on `0xray openclaw install`. Platform still has no native abort API; this is the host adapter.
|
|
20
|
+
- **Repertoire harness** — leftover `memory_routing` default-off auto-enables when sibling `@0xray/repertoire` or `node_modules/@0xray/repertoire` resolves (install **and** runtime provider load). Explicit `enabled: false` + `provider: repertoire` is opt-out. Consumers without the module stay off. Not an 8th 0xRay MCP.
|
|
21
|
+
- **Repertoire working state** — station heat writes `.xray/state/repertoire-working.json` and a `Working:` line on the card. Compact may ingest non-Bedrock matches. Registry primitives are routing; the working file is session memory.
|
|
22
|
+
- **Session resume** — Grok session-start writes `repertoireResume` (one line, signal count) into `session-boot.json` so the next station survives compaction.
|
|
23
|
+
- **Hot-swap station card** — `.xray/state/STATION.md` is the projection of `session-boot.json` (intent, git, **live** plan, last host, Repertoire). PreCompact/PostCompact persist it. AGENTS.md tells the model to Read it (Grok does not inject). Host change sets `hotSwap`. Same-host compact **keeps** the last swap stamp. OpenClaw first PreToolUse heats the card. Intent strips `<user_query>` wrappers. Works without Repertoire.
|
|
24
|
+
- **Framework dogfood wear** — `installAllBridges` on the 0xRay package still patches `<project>/.grok/hooks/0xray.json` and enable-when-resolves. Does not deploy consumer copies over the package.
|
|
25
|
+
- **Repertoire MCP names** — unprefixed server tools; Grok TUI namespaces them as `repertoire__*`. Grok install resolves sibling *or* `node_modules/@0xray/repertoire`.
|
|
26
|
+
- **Configurable archive marker** — `plan_archive_marker_hours` (default 24) in `features.json`
|
|
27
|
+
- **grok_postprocessor_light** — PostToolUse write-tool marker + activity.log
|
|
28
|
+
- **P2 session capture** — git post-commit → `captureSessionInference` when `inference_session_capture.min_commits` met
|
|
29
|
+
- **Docs** — [4.0 vision](docs-site/docs/architecture/v4-vision.md), [v3 from v2](docs-site/docs/architecture/v3-from-v2.md), [temperament](docs-site/docs/guides/v3-temperament.md), [trim list](docs-site/docs/architecture/v3-museum.md).
|
|
30
|
+
|
|
31
|
+
### 🔄 Changes
|
|
32
|
+
- Product version **4.0.0** throughout (`package.json`, `features.json`, plugin, banners). 3.x entries below are historical (npm `3.0.0`–`3.5.5`).
|
|
33
|
+
- `evaluatePreToolGate` is constitution-first (Grok, Hermes, OpenCode). Grok PreToolUse no longer re-runs 11/29/69/surface/destructive after the SSOT.
|
|
34
|
+
- Codex 69 denies **new** surface only (existing MCP/skill files may be rewired). `paths[]` / `target_notebook` / `prompt` content are in the SSOT collector.
|
|
35
|
+
- **strict** locks `no_new_surface` on (cannot opt out).
|
|
36
|
+
- Dual-host session-boot: Hermes / OpenCode / OpenClaw write `host` + `suit_profile`. A Hermes host ignores leftover Grok boot (and vice versa). Kernel/`generic` uses last boot.
|
|
37
|
+
- Frontier `auto_consult` follows confer opt-in (`confer.enabled` / `confer_on_synthesis`).
|
|
38
|
+
- Session-boot refreshes leftover host/workspace from another machine.
|
|
39
|
+
- Post-commit log maintenance prefers consumer `node_modules/0xray/dist` and ESM `pathToFileURL`.
|
|
40
|
+
|
|
41
|
+
### 🐛 Fixes
|
|
42
|
+
- OpenClaw plugin ships in the npm tarball; install resolves `dist` then `src`.
|
|
43
|
+
- Bare `node scripts/node/release.mjs` no longer defaults to patch (that path applied npm `3.5.5` → `3.5.6` over the 4.0 plant). Bump type is required. CJS/MJS loadability syntax-checks version/release/reflection/prepare/setup/CI-report scripts instead of executing them.
|
|
44
|
+
- Postinstall wears OpenClaw PreToolUse (stdin hook + plugin link), not only `0xray openclaw install`.
|
|
45
|
+
- Ephemeral e2e consumers no longer overwrite machine Hermes/OpenClaw `xray-consumer-root.txt`.
|
|
46
|
+
- Hermes postinstall copies hook runtimes; plugin enable prefers `xray-hermes`.
|
|
47
|
+
- OpenClaw install writes `opencode-cli` backend when `opencode` is on PATH (CLI pickle, not Zen HTTP).
|
|
48
|
+
- `0xray grok install` always runs `patchGrokHooks` (command strings, PreCompact/PostCompact) even when the plugin already exists. Stale `args[]` / smoke / blaze paths no longer leave compact cold. Patched JSON is also copied to `<project>/.grok/hooks/0xray.json` — the path Grok TUI actually loads.
|
|
49
|
+
- `buildLeadDevPlan` / `buildSynthesisCheckpointPlan` resolve temperament from `projectRoot`, not `process.cwd()` session-boot. A Grok frontier checkout no longer empties guided confer todos in tmp asides and release-gate verify scripts.
|
|
50
|
+
- Stop committing machine-local `.grok/` (absolute hook paths). Template stays `src/integrations/grok/plugin/0xray`.
|
|
51
|
+
- Grok hook `command` strings quote `XRAY_AI_PATH` and the script path so installs with spaces still start PreToolUse (Grok fail-opens on crash).
|
|
52
|
+
- OpenClaw `maybeHeatHostStation` skips only when both sides have a concrete matching session id. An install card with no session no longer swallows first PreToolUse.
|
|
53
|
+
- `postinstall.cjs` always calls `installAllBridges` (framework dogfood wear is no longer gated out of the production caller).
|
|
54
|
+
- `loadFeatures` forwards `grok_postprocessor_light`; PostToolUse can run the advertised write-tool marker path.
|
|
55
|
+
- `0xray grok install` writes `[mcp_servers.repertoire]` to `<project>/.grok/config.toml` and resolves the sibling from the consumer root.
|
|
56
|
+
- OpenClaw 2026.8.2 handshake uses client id `gateway-client` (not `openclaw-tui`). Control-UI id requires device identity; TUI id is rejected on loopback.
|
|
57
|
+
- OpenClaw e2e falls back to `openclaw agent` when token-only WS lacks `operator.write`. Grok e2e asserts `evaluatePreToolGate` SSOT instead of inlined gate names.
|
|
58
|
+
|
|
59
|
+
### ✅ Tests
|
|
60
|
+
- `suit-temperament.test.ts`; leftover-plan warn; confer frontier opt-in; install-bridges guided pin; Codex 69 rewrite vs create; strict lock; `paths[]`; dual-host boot.
|
|
61
|
+
- `spawn-plan-stale` after archival in `verify-delegation-gate-core` (6/6); OpenCode host in `release-gate`.
|
|
62
|
+
- OpenClaw PreToolUse unit coverage; live temperament probe across Grok, Hermes, OpenCode, OpenClaw.
|
|
63
|
+
- Wear-layout: plugin/hook resolve, ephemeral marker skip, opencode-cli backend write.
|
|
64
|
+
- `grok-hooks-json`: stale `args[]` smoke hooks gain compact events; station compact keeps `hotSwap`.
|
|
65
|
+
- `autonomy-kernel`: plan consults follow `projectRoot` profile; confer/synthesis verify scripts pass tmp, not cwd Grok boot.
|
|
66
|
+
- Repertoire enable-when-resolves + session-start `repertoireResume` unit coverage.
|
|
67
|
+
- Quoted Grok hook commands; postinstall dogfood wear; OpenClaw install-then-first-tool heat; `grok_postprocessor_light` loadFeatures; project Repertoire `config.toml`.
|
|
68
|
+
- Four-floor compact survival attests Codex 11 / 69 / destructive shell plus temperament after the cut. `XRAY_LIVE_SUCCESSOR=1` asks each host CLI to quote the station card.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## [3.5.5] - 2026-06-20
|
|
73
|
+
|
|
74
|
+
### ✨ Features
|
|
75
|
+
- **User-asides P0** — PreToolUse **denies** aside spawns without `cwd` / `working_directory` matching `aside.worktree`; `aside-worktree.ts` SSOT; synthesis-gate parity
|
|
76
|
+
- **Worktree auto-provision** — `analyze-complexity` runs guarded `git worktree add` when `user_asides.auto_provision_worktree: true`
|
|
77
|
+
- **Pipeline P3** — `verify:pipeline-facets` script; consumer `confirm:suit:full --pipeline-audit` wiring
|
|
78
|
+
|
|
79
|
+
### 🐛 Fixes
|
|
80
|
+
- **Worktree cwd enforce** — `auto_chain_delegations: false` no longer bypasses aside worktree cwd check; synthesis-gate parity retained
|
|
81
|
+
- **`isAutoProvisionWorktreeEnabled`** — requires `user_asides.enabled` before honoring `auto_provision_worktree`
|
|
82
|
+
- **`provisionGitWorktree`** — macOS `/var` vs `/private/var` path resolution for idempotent worktree detection
|
|
83
|
+
|
|
84
|
+
### 🔄 Changes
|
|
85
|
+
- **`verify:pipeline-facets --package-only`** — release-gate probes shipped artifacts without consumer feature matrix
|
|
86
|
+
- **`release-gate.mjs`** — wires pipeline facet verify (package-only mode)
|
|
87
|
+
|
|
88
|
+
### ✅ Tests
|
|
89
|
+
- `aside-worktree.test.ts`; delegation-gate cwd deny/allow; auto_chain-off + synthesis worktree deny; `provisionGitWorktree` guards; `verify-user-aside-core` 10/10
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
7
93
|
## [3.5.4] - 2026-06-19
|
|
8
94
|
|
|
9
95
|
### ✨ Features
|
|
10
96
|
- **Synthesis consult receipt gate** — s.1–s.3 todos require `.xray/state/synthesis-consult-{id}.json` before completion; `evaluatePostToolSpawn` records receipts from subagent output; Grok post-tool hook wired
|
|
97
|
+
- **User asides** — parallel work tracks (worktree-like) via `.xray/state/asides/{id}.json`; namespaced `{asideId}.a.*` todo routing; `analyze-complexity` + `orchestrate-task` rewire (no new MCP); session-boot hints; synthesis/pending bypass for aside spawns; `verify:user-aside` 9/9; docs `guides/user-asides.md`
|
|
98
|
+
- **Confer quorum** — `confer.ts` SSOT; auto-runs at synthesis `analyze-complexity` (researcher → architect-tools → code-review); `verify:confer` 7/7; config `confer_on_synthesis` (default true); session-boot `conferPending` hint; emoji agent panel in quorum report
|
|
99
|
+
- **Pipeline integration (P0–P2)** — enforcement-gate `{ proposals: [...] }` shape; `applyDecisionMatrix` + `calculateMetamorphosisScore` in `GovernanceService`; Grok `pipeline-hook-runtime.mjs` (reflection stubs, routing outcomes, reporting, inference-improvement light); `SelfProposalEngine` wired in PostProcessor; aside worktree cwd warn in delegation-gate; `autonomous_reporting` config key fix in SessionSummaryProcessor
|
|
100
|
+
- **Stale lead-dev plan** — archive after `plan_stale_hours`; `spawn-plan-stale` persists after archival via recent archive marker; synthesis realignment (s.1–s.3) exempt until consult todos complete
|
|
101
|
+
- **Hermes session-start parity** — `bridge.mjs` `session-start` command archives stale plans; lazy `plan-hook-runtime.mjs`; `verify-hermes-session-start.mjs` (4/4)
|
|
102
|
+
- **Pre-commit / pre-push codex** — diff-hunk and commit-range scope verifiers (`verify:pre-commit-diff`, `verify:pre-push-diff`)
|
|
103
|
+
- **Reflection noise** — minimal defaults 50 commits / `autoGenerate: false`; shell fallbacks synced
|
|
104
|
+
- **Multi-repo boot** — `sibling_repos` in `session-boot.json`
|
|
105
|
+
|
|
106
|
+
### 🔄 Changes
|
|
107
|
+
- **autonomy-command.md** — SSOT is `analyze-complexity` + `multi_agent_orchestration`; removed stale `autonomy-intake` / `autonomy_kernel` references
|
|
11
108
|
|
|
12
109
|
### ✅ Tests
|
|
13
110
|
- `synthesis-consult-receipt.test.ts`; E2E/outcome verifiers write fixture receipts
|
|
111
|
+
- `governance-service-metamorphosis.test.ts`; `confer.test.ts` emoji panel
|
|
14
112
|
|
|
15
113
|
---
|
|
16
114
|
|
package/dist/README.md
CHANGED
|
@@ -1,22 +1,24 @@
|
|
|
1
|
-
# xray —
|
|
1
|
+
# xray — exo for coding agents
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**v4.0.0** — a suit that survives the context window. Constitution always on. Temperament scales ceremony. Four host floors. Repertoire is the muscle for handoffs.
|
|
4
|
+
|
|
5
|
+
Not a catalog of agents. The product is the **skeleton you wear**.
|
|
4
6
|
|
|
5
7
|
## Your AI Power Suit
|
|
6
8
|
|
|
7
9
|
**Your AI Power ⚡️ Suit 🦾** — an exoskeleton that blocks AI slop from becoming real damage.
|
|
8
10
|
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
- **Bone** — three-subsystem OS: Inference · External Governance (Dynamo / Codex) · Autonomous Engine (thinDispatch)
|
|
12
|
+
- **Always on** — Codex 11 / 29 / 69, destructive shell, no new MCP/skill/handler surface
|
|
13
|
+
- **Temperament** — `frontier` | `guided` | `strict` | `auto` — how loud the engine is, not whether governance exists
|
|
14
|
+
- **Wear** — Grok, OpenCode, Hermes, OpenClaw. One SSOT gate
|
|
15
|
+
- **Muscle** — Repertoire: auto-enables when the module resolves; session-start writes a one-line resume so the next station is not born amnesiac
|
|
14
16
|
|
|
15
17
|
```bash
|
|
16
|
-
npm install 0xray
|
|
18
|
+
npm install 0xray
|
|
17
19
|
```
|
|
18
20
|
|
|
19
|
-
|
|
21
|
+
Consumer `npm install 0xray` auto-wires four platform bridges 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"`.
|
|
20
22
|
|
|
21
23
|
## Quick Start
|
|
22
24
|
|
|
@@ -46,6 +48,7 @@ Docs: [guides/autonomy-command](docs-site/docs/guides/autonomy-command.md) · Sk
|
|
|
46
48
|
|
|
47
49
|
| Version | Highlights |
|
|
48
50
|
|---------|------------|
|
|
51
|
+
| **4.0.0** | Exo + temperament. Constitution always on; ceremony by host. Repertoire enable-when-resolves + session resume. Survive the context window — still in development, not on npm yet. [vision](docs-site/docs/architecture/v4-vision.md) · [now](docs-site/docs/architecture/v4-now.md) |
|
|
49
52
|
| **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. |
|
|
50
53
|
| **3.3.1** | Orchestrator confidence gate wired into execution planning. |
|
|
51
54
|
| **3.3.0** | Pluggable **Memory Routing** (`features.json` → `memory_routing`). Repertoire is the default provider in the framework repo. |
|
|
@@ -165,7 +168,7 @@ Pluggable `memory_routing` block in `features.json` (validated by `features.sche
|
|
|
165
168
|
|
|
166
169
|
**External hosts** (Hermes/Grok): add `repertoire-mcp` to `.mcp.json` — see Repertoire docs.
|
|
167
170
|
|
|
168
|
-
|
|
171
|
+
Opt out: `"memory_routing": { "enabled": false, "provider": "repertoire" }`.
|
|
169
172
|
|
|
170
173
|
Docs: [memory routing](docs-site/docs/guides/memory-routing.md) · [Repertoire](docs-site/docs/guides/repertoire.md) · [features.json](docs-site/docs/guides/features-json.md) · [all features since 3.1](docs-site/docs/guides/features-since-3.1.md)
|
|
171
174
|
|
package/dist/SKILLS.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 0xray Skills
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**v4.0.0** — **45 skills** · invoked via `xray-skills` MCP · synced on postinstall
|
|
4
4
|
|
|
5
5
|
xray ships 45 knowledge skills (`src/skills/<name>/SKILL.md`) across the full software lifecycle. 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`), agent `@mentions`, or platform skill directories after postinstall.
|
|
6
6
|
|
|
@@ -6,7 +6,8 @@ import { frameworkLogger } from '../../core/framework-logger.js';
|
|
|
6
6
|
import { syncBuiltinSkills } from './skill-install.js';
|
|
7
7
|
const __dirname = path.dirname(new URL(import.meta.url).pathname);
|
|
8
8
|
const require = createRequire(import.meta.url);
|
|
9
|
-
const
|
|
9
|
+
const packageRoot = path.join(__dirname, '..', '..', '..');
|
|
10
|
+
const wiring = require(path.join(packageRoot, 'scripts', 'node', 'bridge-mcp-wiring.cjs'));
|
|
10
11
|
export function registerHermesCommands(hermesCmd) {
|
|
11
12
|
hermesCmd
|
|
12
13
|
.command('install')
|
|
@@ -62,6 +63,10 @@ async function installForHermes(options = {}) {
|
|
|
62
63
|
}
|
|
63
64
|
frameworkLogger.log('hermes-integration', 'skills-synced', 'info', { count: skillsCopied });
|
|
64
65
|
}
|
|
66
|
+
wiring.copyHermesFindProjectRootHelper(packageRoot, targetPluginDir);
|
|
67
|
+
if (wiring.copyHermesHookRuntimes(packageRoot)) {
|
|
68
|
+
frameworkLogger.log('hermes-integration', 'hooks-copied', 'info', {});
|
|
69
|
+
}
|
|
65
70
|
const wired = wiring.wireHermesBridge(targetDir);
|
|
66
71
|
console.log(`\x1b[32m✓ Wired Hermes mcp_servers (${wired.count} servers)\x1b[0m`);
|
|
67
72
|
console.log(`\x1b[32m✓ Consumer root → ${targetDir}\x1b[0m`);
|
|
@@ -5,6 +5,7 @@ import { createRequire } from 'module';
|
|
|
5
5
|
import { frameworkLogger } from '../../core/framework-logger.js';
|
|
6
6
|
import { syncBuiltinSkills } from './skill-install.js';
|
|
7
7
|
import { OpenClawConfigLoader } from '../../integrations/openclaw/config.js';
|
|
8
|
+
import { writeSuitSessionBoot } from '../../nucleus/suit-temperament.js';
|
|
8
9
|
const __dirname = path.dirname(new URL(import.meta.url).pathname);
|
|
9
10
|
const require = createRequire(import.meta.url);
|
|
10
11
|
const wiring = require(path.join(__dirname, '..', '..', '..', 'scripts', 'node', 'bridge-mcp-wiring.cjs'));
|
|
@@ -47,6 +48,19 @@ async function installForOpenClaw(options = {}) {
|
|
|
47
48
|
const wired = wiring.wireOpenClawBridge(targetDir);
|
|
48
49
|
console.log(`\x1b[32m✓ Wired OpenClaw MCP servers (${wired.count} via ${wired.method}) → ${wired.path}\x1b[0m`);
|
|
49
50
|
console.log(`\x1b[32m✓ Consumer root → ${targetDir}\x1b[0m`);
|
|
51
|
+
try {
|
|
52
|
+
writeSuitSessionBoot(targetDir, 'openclaw', { source: '0xray/openclaw-install' });
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
/* session-boot is best-effort */
|
|
56
|
+
}
|
|
57
|
+
const packageRoot = path.resolve(__dirname, '..', '..', '..');
|
|
58
|
+
const hookInstalled = wiring.installOpenClawHostWear(packageRoot);
|
|
59
|
+
const cliBackend = wiring.maybeWriteOpenClawCliBackend();
|
|
60
|
+
frameworkLogger.log('openclaw-integration', 'cli-backend', 'info', { written: cliBackend });
|
|
61
|
+
if (hookInstalled) {
|
|
62
|
+
console.log(`\x1b[32m✓ OpenClaw PreToolUse hook → ${hookInstalled}\x1b[0m`);
|
|
63
|
+
}
|
|
50
64
|
console.log('\n✅ 0xRay OpenClaw integration configured!');
|
|
51
65
|
console.log('Run `openclaw mcp list` to verify MCP servers.');
|
|
52
66
|
console.log('Edit `.xray/config/openclaw.json` for gateway URL, auth token, and device ID.');
|
package/dist/cli/index.js
CHANGED
|
File without changes
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* @since 2026-01-25
|
|
8
8
|
*/
|
|
9
9
|
import type { MemoryRoutingConfig } from "../memory-routing/types.js";
|
|
10
|
+
import type { SuitHost, SuitProfile, SuitTemperamentConfig } from "../nucleus/suit-temperament.js";
|
|
10
11
|
export type { MemoryRoutingConfig };
|
|
11
12
|
export interface TokenOptimizationConfig {
|
|
12
13
|
enabled: boolean;
|
|
@@ -63,16 +64,33 @@ export interface MultiAgentOrchestrationConfig {
|
|
|
63
64
|
auto_consult_major_work?: boolean;
|
|
64
65
|
/** Codex 69 — block new MCP/skill/handler files via PreToolUse (default true) */
|
|
65
66
|
no_new_surface?: boolean;
|
|
66
|
-
/**
|
|
67
|
+
/** PreToolUse gate after delegate-deferred (default true when lead_dev_mode) */
|
|
67
68
|
auto_chain_delegations?: boolean;
|
|
69
|
+
/** Hours before unstarted lead-dev plan is archived (default 8) */
|
|
70
|
+
plan_stale_hours?: number;
|
|
71
|
+
/** Hours spawn-plan-stale persists after archival (default 24) */
|
|
72
|
+
plan_archive_marker_hours?: number;
|
|
73
|
+
/** Sibling workspace roots for multi-repo session boot metadata */
|
|
74
|
+
sibling_repos?: Array<string | {
|
|
75
|
+
path: string;
|
|
76
|
+
label?: string;
|
|
77
|
+
}>;
|
|
78
|
+
/** Auto-run 3-agent confer at synthesis checkpoint */
|
|
79
|
+
confer_on_synthesis?: boolean;
|
|
80
|
+
confer?: {
|
|
81
|
+
enabled?: boolean;
|
|
82
|
+
on_synthesis?: boolean;
|
|
83
|
+
};
|
|
68
84
|
}
|
|
85
|
+
/** 0xRay 4.0 — nucleus SSOT. See docs-site/docs/guides/v3-temperament.md */
|
|
86
|
+
export type { SuitHost, SuitProfile, SuitTemperamentConfig };
|
|
69
87
|
/** Reflection triggers merged from legacy auto_reflection when synthesis is configured */
|
|
70
88
|
export interface SynthesisReflectionConfig {
|
|
71
89
|
mode?: AutoReflectionConfig['mode'];
|
|
72
90
|
triggers?: AutoReflectionConfig['triggers'];
|
|
73
91
|
thresholds?: AutoReflectionConfig['thresholds'];
|
|
74
92
|
}
|
|
75
|
-
/**
|
|
93
|
+
/** Periodic reflect & realign checkpoint (Synthesis) */
|
|
76
94
|
export interface SynthesisConfig {
|
|
77
95
|
enabled: boolean;
|
|
78
96
|
every_n_gates: number;
|
|
@@ -384,10 +402,20 @@ export interface FeaturesConfig {
|
|
|
384
402
|
auto_reflection?: AutoReflectionConfig;
|
|
385
403
|
inference?: InferenceConfig;
|
|
386
404
|
memory_routing?: MemoryRoutingConfig;
|
|
405
|
+
/** P2.2 — lightweight Grok write-tool postprocessor marker */
|
|
406
|
+
grok_postprocessor_light?: boolean;
|
|
407
|
+
/** P2 — git post-commit session inference capture */
|
|
408
|
+
inference_session_capture?: {
|
|
409
|
+
enabled?: boolean;
|
|
410
|
+
min_commits?: number;
|
|
411
|
+
lookback_commits?: number;
|
|
412
|
+
};
|
|
387
413
|
synthesis: SynthesisConfig;
|
|
388
414
|
kernel?: KernelConfig;
|
|
389
415
|
processors?: ProcessorsConfig;
|
|
390
416
|
enforcement?: EnforcementConfig;
|
|
417
|
+
/** v3 temperament — missing key means guided (existing consumers unchanged) */
|
|
418
|
+
suit_temperament?: SuitTemperamentConfig;
|
|
391
419
|
}
|
|
392
420
|
export type TaskType = "file_read" | "grep_search" | "simple_edit" | "bulk_refactor" | "architecture_review" | "security_audit" | "git_operations" | "documentation" | "code_generation" | "debugging" | "unknown";
|
|
393
421
|
/**
|
|
@@ -29,6 +29,7 @@ export declare class GovernanceService {
|
|
|
29
29
|
* Dynamo Solar SSOT is treated as a hard requirement by default.
|
|
30
30
|
*/
|
|
31
31
|
govern(request: GovernanceRequest): Promise<GovernanceResponse>;
|
|
32
|
+
private resolveRequireExternalDynamo;
|
|
32
33
|
private runGovernanceWithTimeout;
|
|
33
34
|
private callSkillServer;
|
|
34
35
|
private callExternalDynamo;
|