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
|
@@ -47,9 +47,108 @@ export class TaskHandler {
|
|
|
47
47
|
sessionId?: string;
|
|
48
48
|
executionMode?: string;
|
|
49
49
|
timeout?: number;
|
|
50
|
+
confer?: boolean;
|
|
51
|
+
conferFixture?: boolean;
|
|
52
|
+
collocatedText?: string;
|
|
53
|
+
userAsideId?: string;
|
|
54
|
+
setActiveAside?: boolean;
|
|
55
|
+
clearActiveAside?: boolean;
|
|
50
56
|
},
|
|
51
57
|
deps: TaskHandlerDeps
|
|
52
58
|
): Promise<{ content: Array<{ type: string; text: string }> }> {
|
|
59
|
+
if (args.clearActiveAside === true) {
|
|
60
|
+
const projectRoot = process.cwd();
|
|
61
|
+
const { clearActiveAside, getActiveAsideId } = await import(
|
|
62
|
+
'../../../nucleus/user-aside.js',
|
|
63
|
+
);
|
|
64
|
+
const prior = getActiveAsideId(projectRoot, args.sessionId ?? null);
|
|
65
|
+
clearActiveAside(projectRoot);
|
|
66
|
+
return {
|
|
67
|
+
content: [
|
|
68
|
+
{
|
|
69
|
+
type: 'text',
|
|
70
|
+
text: prior
|
|
71
|
+
? `✅ Cleared active aside \`${prior}\` — spawns resume main lead-dev plan.`
|
|
72
|
+
: 'ℹ️ No active aside was set.',
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (args.userAsideId?.trim()) {
|
|
79
|
+
const projectRoot = process.cwd();
|
|
80
|
+
const {
|
|
81
|
+
setActiveAsideId,
|
|
82
|
+
loadUserAside,
|
|
83
|
+
formatUserAsideSummary,
|
|
84
|
+
isUserAsidesEnabled,
|
|
85
|
+
UserAsideValidationError,
|
|
86
|
+
} = await import('../../../nucleus/user-aside.js');
|
|
87
|
+
const { clearPendingDelegations } = await import(
|
|
88
|
+
'../../../nucleus/pending-delegations.js',
|
|
89
|
+
);
|
|
90
|
+
if (!isUserAsidesEnabled(projectRoot)) {
|
|
91
|
+
return {
|
|
92
|
+
content: [{ type: 'text', text: '❌ User asides disabled in features.json' }],
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
const asideId = args.userAsideId.trim();
|
|
96
|
+
const aside = loadUserAside(asideId, projectRoot);
|
|
97
|
+
if (!aside) {
|
|
98
|
+
return {
|
|
99
|
+
content: [
|
|
100
|
+
{
|
|
101
|
+
type: 'text',
|
|
102
|
+
text: `❌ User aside \`${asideId}\` not found — run analyze-complexity with userAsideId first.`,
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
if (args.setActiveAside !== false) {
|
|
108
|
+
try {
|
|
109
|
+
clearPendingDelegations(projectRoot);
|
|
110
|
+
setActiveAsideId(asideId, projectRoot, args.sessionId ?? null);
|
|
111
|
+
} catch (err) {
|
|
112
|
+
const message = err instanceof UserAsideValidationError ? err.message : String(err);
|
|
113
|
+
return { content: [{ type: 'text', text: `❌ ${message}` }] };
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return {
|
|
117
|
+
content: [
|
|
118
|
+
{
|
|
119
|
+
type: 'text',
|
|
120
|
+
text:
|
|
121
|
+
`✅ Active aside: \`${asideId}\`\n\n${formatUserAsideSummary(aside)}`,
|
|
122
|
+
},
|
|
123
|
+
],
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
if (args.confer === true) {
|
|
128
|
+
const { runConferQuorum, formatConferQuorumReport, isConferEnabled } = await import(
|
|
129
|
+
'../../../nucleus/confer.js',
|
|
130
|
+
);
|
|
131
|
+
const sid = args.sessionId ?? `confer_${Date.now()}`;
|
|
132
|
+
if (!isConferEnabled()) {
|
|
133
|
+
return {
|
|
134
|
+
content: [{ type: 'text', text: '❌ Confer disabled in features.json' }],
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
const conferOpts: {
|
|
138
|
+
dueReason?: string | null;
|
|
139
|
+
fixture?: boolean;
|
|
140
|
+
collocatedText?: string;
|
|
141
|
+
} = {
|
|
142
|
+
dueReason: args.description,
|
|
143
|
+
fixture: args.conferFixture === true,
|
|
144
|
+
};
|
|
145
|
+
if (args.collocatedText) conferOpts.collocatedText = args.collocatedText;
|
|
146
|
+
const result = await runConferQuorum(process.cwd(), sid, conferOpts);
|
|
147
|
+
return {
|
|
148
|
+
content: [{ type: 'text', text: formatConferQuorumReport(result) }],
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
|
|
53
152
|
const { description, tasks = [], sessionId = `session_${Date.now()}`, executionMode = 'optimized', timeout = 300000 } = args;
|
|
54
153
|
|
|
55
154
|
await frameworkLogger.log(
|
|
@@ -133,14 +133,39 @@ export class OrchestratorServer {
|
|
|
133
133
|
default: 'optimized',
|
|
134
134
|
},
|
|
135
135
|
timeout: { type: 'number', default: 300000 },
|
|
136
|
+
confer: {
|
|
137
|
+
type: 'boolean',
|
|
138
|
+
description:
|
|
139
|
+
'Run mandatory 3-agent confer quorum (researcher, architect-tools, code-review) instead of task execution',
|
|
140
|
+
},
|
|
141
|
+
conferFixture: {
|
|
142
|
+
type: 'boolean',
|
|
143
|
+
description: 'Use fixture confer receipts (CI/verify)',
|
|
144
|
+
},
|
|
145
|
+
collocatedText: {
|
|
146
|
+
type: 'string',
|
|
147
|
+
description: 'Collocated synthesis context for confer prompts',
|
|
148
|
+
},
|
|
149
|
+
userAsideId: {
|
|
150
|
+
type: 'string',
|
|
151
|
+
description: 'Activate an existing user aside for spawn routing',
|
|
152
|
+
},
|
|
153
|
+
setActiveAside: {
|
|
154
|
+
type: 'boolean',
|
|
155
|
+
description: 'Set userAsideId as the active aside (default true)',
|
|
156
|
+
},
|
|
157
|
+
clearActiveAside: {
|
|
158
|
+
type: 'boolean',
|
|
159
|
+
description: 'Clear active aside — resume main lead-dev plan spawns',
|
|
160
|
+
},
|
|
136
161
|
},
|
|
137
|
-
required: ['description'
|
|
162
|
+
required: ['description'],
|
|
138
163
|
},
|
|
139
164
|
},
|
|
140
165
|
{
|
|
141
166
|
name: 'analyze-complexity',
|
|
142
167
|
description:
|
|
143
|
-
'Analyze task complexity and recommend orchestration strategy. When lead_dev_mode is on (features.json), includes phased plan + todos + subagent routes. During synthesis checkpoint, returns collocated context and mandatory-consult realignment plan — pass sessionId from the active session.',
|
|
168
|
+
'Analyze task complexity and recommend orchestration strategy. When lead_dev_mode is on (features.json), includes phased plan + todos + subagent routes. Pass userAsideId to intake a parallel user aside ({asideId}.a.* namespaced todos, worktree-like). During synthesis checkpoint, returns collocated context and mandatory-consult realignment plan — pass sessionId from the active session.',
|
|
144
169
|
inputSchema: {
|
|
145
170
|
type: 'object',
|
|
146
171
|
properties: {
|
|
@@ -149,6 +174,27 @@ export class OrchestratorServer {
|
|
|
149
174
|
description:
|
|
150
175
|
'Active session id (required to clear synthesis checkpoint; inferred from checkpoint state when omitted)',
|
|
151
176
|
},
|
|
177
|
+
userAsideId: {
|
|
178
|
+
type: 'string',
|
|
179
|
+
description:
|
|
180
|
+
'User aside id — persists .xray/state/asides/{id}.json with {asideId}.a.* todos (parallel track)',
|
|
181
|
+
},
|
|
182
|
+
userAsideTitle: {
|
|
183
|
+
type: 'string',
|
|
184
|
+
description: 'Display title for the user aside (defaults to userAsideId)',
|
|
185
|
+
},
|
|
186
|
+
worktree: {
|
|
187
|
+
type: 'string',
|
|
188
|
+
description: 'Optional worktree path for aside isolation',
|
|
189
|
+
},
|
|
190
|
+
branch: {
|
|
191
|
+
type: 'string',
|
|
192
|
+
description: 'Optional git branch for the aside',
|
|
193
|
+
},
|
|
194
|
+
setActiveAside: {
|
|
195
|
+
type: 'boolean',
|
|
196
|
+
description: 'Activate aside for spawn routing (default true when userAsideId set)',
|
|
197
|
+
},
|
|
152
198
|
tasks: {
|
|
153
199
|
type: 'array',
|
|
154
200
|
items: {
|
|
@@ -391,7 +437,12 @@ export class OrchestratorServer {
|
|
|
391
437
|
...complexityArgs,
|
|
392
438
|
...(sessionId ? { sessionId } : {}),
|
|
393
439
|
...(synthesisDue
|
|
394
|
-
? {
|
|
440
|
+
? {
|
|
441
|
+
synthesisCheckpoint: true,
|
|
442
|
+
synthesisDueReason: dueReason,
|
|
443
|
+
collocatedText: collocated?.collatedText ?? null,
|
|
444
|
+
conferFixture: process.env.XRAY_CONFER_FIXTURE === '1',
|
|
445
|
+
}
|
|
395
446
|
: {}),
|
|
396
447
|
},
|
|
397
448
|
aside.asideId,
|
|
@@ -402,13 +453,13 @@ export class OrchestratorServer {
|
|
|
402
453
|
content = appendSynthesisContextToResponse(content, collocated.collatedText);
|
|
403
454
|
}
|
|
404
455
|
|
|
405
|
-
if (synthesisDue && result.ok) {
|
|
456
|
+
if (synthesisDue && result.ok && !result.content[0]?.text?.includes('Confer quorum')) {
|
|
406
457
|
content = content.map((block, index) =>
|
|
407
458
|
index === 0
|
|
408
459
|
? {
|
|
409
460
|
...block,
|
|
410
461
|
text:
|
|
411
|
-
`${block.text}\n\n**
|
|
462
|
+
`${block.text}\n\n**Confer** runs automatically at synthesis checkpoint (researcher → architect-tools → code-review). Checkpoint clears when all consult todos complete.`,
|
|
412
463
|
}
|
|
413
464
|
: block,
|
|
414
465
|
);
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# 0xRay AI Agents
|
|
2
|
+
|
|
3
|
+
Quick reference for the 0xRay AI orchestration framework (shipped to your project on `npm install 0xray`).
|
|
4
|
+
|
|
5
|
+
**v3.4.5** — 7 MCP servers · 45 skills · 68 codex terms · 4 platform bridges
|
|
6
|
+
|
|
7
|
+
## Postinstall (automatic)
|
|
8
|
+
|
|
9
|
+
`npm install 0xray` runs `install-bridges.cjs` and:
|
|
10
|
+
|
|
11
|
+
- Copies this file → **`AGENTS.md`** in your project root
|
|
12
|
+
- Ships root **`SKILLS.md`** and syncs **45 skills** to platform skill directories
|
|
13
|
+
- Seeds **`.gitignore`** (from template, if absent)
|
|
14
|
+
- Deploys **`.xray/`** (`codex.json`, `features.json`, `config.json`)
|
|
15
|
+
- Writes **`.mcp.json`** with 7 MCPs servers (`npx -y 0xray mcp …`)
|
|
16
|
+
- Installs bridges: **OpenCode**, **Grok**, **Hermes**, **OpenClaw**
|
|
17
|
+
|
|
18
|
+
Optional extras: `npx 0xray setup`
|
|
19
|
+
|
|
20
|
+
## Available MCP Servers
|
|
21
|
+
|
|
22
|
+
All seven servers use `npx -y 0xray mcp <cmd>` — configured in your project `.mcp.json`:
|
|
23
|
+
|
|
24
|
+
| Server | Role |
|
|
25
|
+
|--------|------|
|
|
26
|
+
| `xray-governance` | Proposal governance, codex snapshot, quality gates |
|
|
27
|
+
| `xray-skills` | Skill invocation, 45 knowledge skills |
|
|
28
|
+
| `xray-orchestrator` | thinDispatch routing, AsideContext, confidence gate |
|
|
29
|
+
| `xray-enforcer` | Codex compliance enforcement, rule validation |
|
|
30
|
+
| `xray-researcher` | Codebase exploration, memory-routing enrichment |
|
|
31
|
+
| `xray-code-review` | Proposal quality, code review deliberation |
|
|
32
|
+
| `xray-architect-tools` | System design, architecture decisions |
|
|
33
|
+
|
|
34
|
+
Governance deliberation uses **code-review**, **security-audit** (via enforcer/skills), and **researcher** within this 7-server surface.
|
|
35
|
+
|
|
36
|
+
## CLI Commands
|
|
37
|
+
|
|
38
|
+
| Command | Description |
|
|
39
|
+
|---------|-------------|
|
|
40
|
+
| `npx 0xray setup` | Symlinks, hook extras, Hermes skill sync |
|
|
41
|
+
| `npx 0xray status` | Verify installation |
|
|
42
|
+
| `npx 0xray opencode install` | OpenCode bridge (also runs on postinstall) |
|
|
43
|
+
| `npx 0xray grok install` | Grok plugin + 7 MCPs servers + skill sync |
|
|
44
|
+
| `npx 0xray hermes install` | Hermes plugin bridge |
|
|
45
|
+
| `npx 0xray openclaw install` | OpenClaw config + skills |
|
|
46
|
+
| `npx 0xray skill:install` | Install starter skills |
|
|
47
|
+
| `npx 0xray validate` | Validate codex compliance |
|
|
48
|
+
| `npx 0xray codex check` | Check codex rules |
|
|
49
|
+
| `npx 0xray health` | Framework health check |
|
|
50
|
+
| `npx 0xray mcp <server>` | Start an MCP server (stdio) |
|
|
51
|
+
|
|
52
|
+
## Governance
|
|
53
|
+
|
|
54
|
+
xray operates under the three-subsystem model: **Inference** + **External Governance** (Dynamo Solar SSOT) + **Autonomous Engine** (thinDispatch 7-flow in MCP orchestrator). All actions are validated against the Universal Development Codex before execution.
|
|
55
|
+
|
|
56
|
+
**Codex**: `.xray/codex.json` — **68 terms** across all agent interactions.
|
|
57
|
+
|
|
58
|
+
## thinDispatch Routing
|
|
59
|
+
|
|
60
|
+
- Simple (≤15): Single agent
|
|
61
|
+
- Moderate (≤25): Single agent with tools
|
|
62
|
+
- Complex (≤50): Multi-agent coordination
|
|
63
|
+
- Enterprise (>50): Orchestrator-led team
|
|
64
|
+
|
|
65
|
+
## AsideContext (v3.2+)
|
|
66
|
+
|
|
67
|
+
Bounded orchestrator subcontexts via `xray-orchestrator` MCP — `spawnAside` / `closeAside` on multi-step tasks. Repertoire memory routing (when enabled) flows through `inheritedContext.memoryRouting`.
|
|
68
|
+
|
|
69
|
+
## Memory Routing + Repertoire (optional, v3.3+)
|
|
70
|
+
|
|
71
|
+
Configure in `.xray/features.json`:
|
|
72
|
+
|
|
73
|
+
```json
|
|
74
|
+
"memory_routing": {
|
|
75
|
+
"enabled": true,
|
|
76
|
+
"provider": "repertoire",
|
|
77
|
+
"module_path": "../repertoire/dist/provider/memory-routing-provider.js",
|
|
78
|
+
"config": {
|
|
79
|
+
"signalsPath": "../repertoire/data/curated_signals.json"
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Without Repertoire: `{ "enabled": false, "provider": "null" }`.
|
|
85
|
+
|
|
86
|
+
**External MCP** (Hermes/Grok): add Repertoire alongside 0xRay servers:
|
|
87
|
+
|
|
88
|
+
```json
|
|
89
|
+
"repertoire": {
|
|
90
|
+
"command": "npx",
|
|
91
|
+
"args": ["-y", "@0xray/repertoire", "mcp"]
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Tools: `repertoire__get_task_confidence`, `repertoire__get_high_confidence_signals`, `repertoire__search_primitives`, `repertoire__ingest_feedback`.
|
|
96
|
+
|
|
97
|
+
## Codex OS (always on — not optional)
|
|
98
|
+
|
|
99
|
+
The Universal Development Codex (`.xray/codex.json`, **69 terms**) is enforced by **PreToolUse** (blocks) and this section (brain). MCP enforcer is audit — not the gate.
|
|
100
|
+
|
|
101
|
+
| Term | Rule | Enforcement |
|
|
102
|
+
|------|------|-------------|
|
|
103
|
+
| 11 | No `any`, `@ts-ignore`, `@ts-expect-error` | PreToolUse deny on edits |
|
|
104
|
+
| 29 | Security by design — no `eval()` | PreToolUse deny |
|
|
105
|
+
| 59 | Complex work → orchestrator intake | PreToolUse deny `spawn_subagent` without plan |
|
|
106
|
+
| 67–68 | Best subagents + lead dev ownership | `analyze-complexity` + orchestrator skill |
|
|
107
|
+
| **69** | **No new MCP/skill/handler surface** | PreToolUse deny new `*.server.ts`, `SKILL.md` |
|
|
108
|
+
|
|
109
|
+
`features.json` → `multi_agent_orchestration.no_new_surface` (default **true**). Rewire existing hooks/MCPs/skills — do not add parallel APIs.
|
|
110
|
+
|
|
111
|
+
## Default operating mode: lead dev (rewired — no new MCP)
|
|
112
|
+
|
|
113
|
+
When the suit is worn, **lead dev mode** is ON via existing config + hooks:
|
|
114
|
+
|
|
115
|
+
| Layer | Existing piece | Rewire |
|
|
116
|
+
|-------|----------------|--------|
|
|
117
|
+
| Config | `features.json` → `multi_agent_orchestration.lead_dev_mode` | Extended, not new block |
|
|
118
|
+
| SessionStart + UserPromptSubmit | Grok hooks → `session-start.js` | Writes `.xray/state/session-boot.json` + `logs/framework/activity.log` |
|
|
119
|
+
| **OS gate** | **PreToolUse hook** | Codex patterns, surface area, spawn gate — `{"decision":"deny"}` + activity.log |
|
|
120
|
+
| Intake + plan | `xray-orchestrator` → **`analyze-complexity`** | Persists `.xray/state/lead-dev-plan.json` |
|
|
121
|
+
| Test triage | PreToolUse hook | Per-suite hint on full `npm test` |
|
|
122
|
+
| Playbook | **`orchestrator`** skill | Codex 59, 67–69 rules |
|
|
123
|
+
|
|
124
|
+
**First substantive task:** `analyze-complexity` with `tasks` array — **required before** `spawn_subagent`. You are the **lead developer**. Users speak in goals, not keywords.
|
|
125
|
+
|
|
126
|
+
| # | Rule |
|
|
127
|
+
|---|------|
|
|
128
|
+
| 1 | Phased plan + detailed todos; assign best subagent; monitor output |
|
|
129
|
+
| 2 | Take the helm — loop test fix until complete; no permission pings |
|
|
130
|
+
| 3 | Per-suite test triage after major changes; full suite last |
|
|
131
|
+
| 4 | Lead stays main thread; subagents execute; update todos continuously |
|
|
132
|
+
| 5 | Read all console and test output; triage fix rerun |
|
|
133
|
+
| 6 | Never defer errors as "pre-existing" — add todo and resolve |
|
|
134
|
+
| 7 | Resolve all errors before phase completion |
|
|
135
|
+
|
|
136
|
+
**Major work:** invoke `researcher` + `architect-tools` + `code-review` before planning/refactors — automatically.
|
|
137
|
+
|
|
138
|
+
## Skills
|
|
139
|
+
|
|
140
|
+
Full catalog in root **`SKILLS.md`** (shipped on postinstall). **`orchestrator`** skill documents lead-dev mode. Invoke via `@orchestrator` or `xray-skills` MCP (`invoke-skill`, `list-skills`).
|
|
141
|
+
|
|
142
|
+
## File Organization
|
|
143
|
+
|
|
144
|
+
| File Type | Save To |
|
|
145
|
+
|-----------|---------|
|
|
146
|
+
| Reflections | `docs/reflections/` |
|
|
147
|
+
| Logs | `logs/` |
|
|
148
|
+
| Scripts | `scripts/` or `scripts/bash/` |
|
|
149
|
+
| Test Files | `src/__tests__/` |
|
|
150
|
+
| Source Code | `src/` |
|
|
151
|
+
| Config | `config/` or `.xray/` |
|
|
152
|
+
|
|
153
|
+
## Documentation
|
|
154
|
+
|
|
155
|
+
| Topic | URL |
|
|
156
|
+
|-------|-----|
|
|
157
|
+
| Getting started | https://0xrayai.github.io/xray/docs/guides/getting-started |
|
|
158
|
+
| Platform integrations | https://0xrayai.github.io/xray/docs/guides/integrations |
|
|
159
|
+
| Features since 3.1 | https://0xrayai.github.io/xray/docs/guides/features-since-3.1 |
|
|
160
|
+
| AsideContext | https://0xrayai.github.io/xray/docs/guides/aside-context |
|
|
161
|
+
| Memory routing | https://0xrayai.github.io/xray/docs/guides/memory-routing |
|
|
162
|
+
| Repertoire | https://0xrayai.github.io/xray/docs/guides/repertoire |
|
|
163
|
+
| Autonomy command | https://0xrayai.github.io/xray/docs/guides/autonomy-command |
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 0xRay Framework Team
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# @0xray/repertoire
|
|
2
|
+
|
|
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
|
+
|
|
5
|
+
**v0.2.0** · 0xRay **4.0** wear. Runtime does **not** depend on `0xray` (optional peer for suit-verify scripts).
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @0xray/repertoire
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Does not install `0xray`. After 0xray wear, refresh Grok hooks:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npx 0xray grok install --force
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Restart Grok MCP sessions — hooks do not hot-reload.
|
|
20
|
+
|
|
21
|
+
## Suit + autonomy (Grok Build)
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm run confirm:suit # post-reboot: Layer 1 + 2a + 2b checklist
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Suit verify from any consumer** (project must have `.xray/` + `0xray` installed):
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npx repertoire-verify-suit # 30-check harness from any consumer project root
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Includes 3.5.0 delegation gate + PostToolUse assertions (steps 11–13). Full harness: clone this repo and `npm run confirm:suit`. Quick check: `npx 0xray health`.
|
|
34
|
+
|
|
35
|
+
Default operating model: **`autonomy-command`** — lead dev, phased todos, subagent dispatch, per-suite test triage. See [AGENTS.md](AGENTS.md) and [xray autonomy guide](https://0xrayai.github.io/xray/docs/guides/autonomy-command).
|
|
36
|
+
|
|
37
|
+
## MCP server (Hermes, Grok, OpenCode)
|
|
38
|
+
|
|
39
|
+
```json
|
|
40
|
+
"repertoire": {
|
|
41
|
+
"command": "npx",
|
|
42
|
+
"args": ["-y", "@0xray/repertoire", "mcp"]
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Bundled `data/curated_signals.json` is used by default. Override with env:
|
|
47
|
+
|
|
48
|
+
| Env | Default |
|
|
49
|
+
|-----|---------|
|
|
50
|
+
| `CURATED_SIGNALS_PATH` | `<package>/data/curated_signals.json` |
|
|
51
|
+
| `REPERTOIRE_DATA_DIR` | `<package>/data` |
|
|
52
|
+
| `REPERTOIRE_LOG_DIR` | `<package>/logs/groover-inference` |
|
|
53
|
+
|
|
54
|
+
### Tools
|
|
55
|
+
|
|
56
|
+
| Tool | Purpose |
|
|
57
|
+
|------|---------|
|
|
58
|
+
| `repertoire__get_task_confidence` | Trap detection, complexity boost, `recommendedAgent` |
|
|
59
|
+
| `repertoire__search_primitives` | Text search against curated signals |
|
|
60
|
+
| `repertoire__get_high_confidence_signals` | Validated signals above threshold |
|
|
61
|
+
| `repertoire__ingest_feedback` | Record orchestrator outcomes |
|
|
62
|
+
|
|
63
|
+
## 0xRay memory routing (in-process)
|
|
64
|
+
|
|
65
|
+
In `.xray/features.json` or `xray/features.json`:
|
|
66
|
+
|
|
67
|
+
```json
|
|
68
|
+
"memory_routing": {
|
|
69
|
+
"enabled": true,
|
|
70
|
+
"provider": "repertoire",
|
|
71
|
+
"module_path": "node_modules/@0xray/repertoire/dist/provider/memory-routing-provider.js"
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
`config` is optional when using the bundled registry. For a project-local registry:
|
|
76
|
+
|
|
77
|
+
```json
|
|
78
|
+
"config": {
|
|
79
|
+
"signalsPath": ".xray/curated_signals.json",
|
|
80
|
+
"logDir": "logs/groover-inference"
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Paths in `config` resolve relative to the consumer project root.
|
|
85
|
+
|
|
86
|
+
## Programmatic import
|
|
87
|
+
|
|
88
|
+
```ts
|
|
89
|
+
import { createMemoryRoutingProvider } from '@0xray/repertoire/provider/memory-routing-provider';
|
|
90
|
+
|
|
91
|
+
const provider = createMemoryRoutingProvider();
|
|
92
|
+
provider.getTaskConfidence?.({
|
|
93
|
+
id: 'task-1',
|
|
94
|
+
description: 'TYPE: ontological-trap attestation-as-map',
|
|
95
|
+
type: 'governance',
|
|
96
|
+
});
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Field actuation add-ons (optional)
|
|
100
|
+
|
|
101
|
+
Repertoire has **no Moltbook dependency**. It ingests **enriched JSONL** from any producer (`matched_primitives` + `match_confidence`) and closes the memory loop via consult, feedback, and post-tick ingest.
|
|
102
|
+
|
|
103
|
+
Each project activates its own public field surface if it wants one:
|
|
104
|
+
|
|
105
|
+
| Layer | Required? | Example |
|
|
106
|
+
|-------|-----------|---------|
|
|
107
|
+
| Repertoire + 0xRay memory routing | Core suit | `npm install @0xray/repertoire`, `features.json` |
|
|
108
|
+
| Engage pipeline (`consult → govern → log`) | Per producer | `groover/deploy/engage-core.ts` |
|
|
109
|
+
| Moltbook (or other social API) | **Add-on** | Groover's `deploy/moltbook-*.ts` + `MOLTBOOK_API_KEY` |
|
|
110
|
+
|
|
111
|
+
Jelly, ZigZag, or a custom cron worker can wire the same loop without Moltbook — point `logDir` at your JSONL and set `REPERTOIRE_ROOT`.
|
|
112
|
+
|
|
113
|
+
## Sibling-repo development
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
git clone https://github.com/0xRayAI/repertoire
|
|
117
|
+
cd repertoire && npm install && npm run build && npm test
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
See [AGENTS.md](./AGENTS.md) for stack integration details.
|