0xray 3.1.1 → 3.2.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/.opencode/codex.codex +1 -1
- package/.opencode/commands/auto-format.md +3 -3
- package/.opencode/commands/auto-summary-capture.md +2 -2
- package/.opencode/commands/enforcer-daily-scan.md +3 -3
- package/.opencode/commands/framework-compliance-audit.md +4 -4
- package/.opencode/commands/interactive-validator.md +2 -2
- package/.opencode/commands/job-summary-logger.md +2 -2
- package/.opencode/commands/mode-switch.md +1 -1
- package/.opencode/commands/model-health-check.md +2 -2
- package/.opencode/commands/performance-analysis.md +2 -2
- package/.opencode/commands/pre-commit-introspection.md +3 -3
- package/.opencode/commands/security-scan.md +3 -3
- package/.opencode/commands/sisyphus-validation.md +3 -3
- package/.opencode/commands/summary-logger.md +2 -2
- package/AGENTS.md +3 -13
- package/README.md +3 -3
- package/dist/AGENTS.md +3 -13
- package/dist/CHANGELOG.md +29 -0
- package/dist/README.md +3 -3
- package/dist/analytics/consent-manager.js +0 -1
- package/dist/analytics/emerging-pattern-detector.js +0 -1
- package/dist/analytics/pattern-learning-engine.js +0 -1
- package/dist/analytics/pattern-performance-tracker.js +0 -1
- package/dist/analytics/predictive-analytics.js +0 -1
- package/dist/analytics/prompt-pattern-analyzer.js +0 -1
- package/dist/analytics/routing-performance-analyzer.js +0 -1
- package/dist/analytics/routing-refiner.js +0 -1
- package/dist/analytics/simple-pattern-analyzer.js +0 -1
- package/dist/cli/commands/archive-logs.js +0 -1
- package/dist/cli/commands/opencode-install.js +13 -0
- package/dist/cli/commands/plugin-commands.js +0 -1
- package/dist/cli/commands/status.js +11 -13
- package/dist/cli/index.js +2 -7
- package/dist/core/activity-logger.js +0 -1
- package/dist/core/adaptive-kernel.js +0 -1
- package/dist/core/boot-orchestrator.js +2 -12
- package/dist/core/bridge.mjs +0 -1
- package/dist/core/codex-formatter.js +0 -1
- package/dist/core/codex-injector.js +0 -1
- package/dist/core/config-loader.js +36 -28
- package/dist/core/context-loader.js +0 -1
- package/dist/core/context-validator.js +0 -1
- package/dist/core/features-config.js +37 -1
- package/dist/core/kernel-patterns.js +0 -1
- package/dist/core/model-router.js +23 -64
- package/dist/core/system-prompt-generator.js +0 -1
- package/dist/delegation/agent-delegator.js +0 -1
- package/dist/delegation/agent-expertise.js +0 -1
- package/dist/delegation/analytics/index.js +0 -1
- package/dist/delegation/analytics/learning-engine.js +0 -1
- package/dist/delegation/analytics/outcome-tracker.js +0 -1
- package/dist/delegation/analytics/routing-analytics.js +0 -1
- package/dist/delegation/ast-code-parser.js +0 -1
- package/dist/delegation/complexity-analyzer.js +0 -1
- package/dist/delegation/dependency-graph-builder.js +0 -1
- package/dist/delegation/index.js +0 -1
- package/dist/delegation/metrics-aggregator.js +0 -1
- package/dist/delegation/session-coordinator.js +0 -1
- package/dist/delegation/strategy-selector.js +0 -1
- package/dist/delegation/voting-coordinator.js +0 -1
- package/dist/delegation/voting-types.js +0 -1
- package/dist/delegation/weighted-voting-aggregator.js +0 -1
- package/dist/enforcement/core/index.js +0 -1
- package/dist/enforcement/core/rule-executor.js +0 -1
- package/dist/enforcement/core/rule-hierarchy.js +0 -1
- package/dist/enforcement/core/rule-registry.js +0 -1
- package/dist/enforcement/core/violation-fixer.js +0 -1
- package/dist/enforcement/index.js +0 -1
- package/dist/enforcement/loaders/agent-triage-loader.js +0 -1
- package/dist/enforcement/loaders/agents-md-validation-loader.js +0 -1
- package/dist/enforcement/loaders/base-loader.js +0 -1
- package/dist/enforcement/loaders/codex-loader.js +0 -1
- package/dist/enforcement/loaders/index.js +0 -1
- package/dist/enforcement/loaders/loader-orchestrator.js +0 -1
- package/dist/enforcement/loaders/processor-loader.js +0 -1
- package/dist/enforcement/types.js +0 -1
- package/dist/enforcement/validators/architecture-validators.js +0 -1
- package/dist/enforcement/validators/base-validator.js +0 -1
- package/dist/enforcement/validators/code-quality-validators.js +0 -1
- package/dist/enforcement/validators/index.js +0 -1
- package/dist/enforcement/validators/security-validators.js +0 -1
- package/dist/enforcement/validators/testing-validators.js +0 -1
- package/dist/enforcement/validators/validator-registry.js +0 -1
- package/dist/governance/codex-policy.service.js +0 -1
- package/dist/inference/inference-agent-invoker.js +67 -0
- package/dist/inference/inference-applier.js +178 -0
- package/dist/inference/inference-cycle.js +51 -827
- package/dist/inference/inference-proposal-generator.js +149 -0
- package/dist/infrastructure/iac-validator.js +465 -0
- package/dist/infrastructure/schemas/cloud-schemas.js +488 -0
- package/dist/integrations/base/ExampleIntegration.js +0 -1
- package/dist/integrations/base/Integration.js +0 -1
- package/dist/integrations/base/index.js +0 -1
- package/dist/integrations/base/registry.js +0 -1
- package/dist/integrations/base/types.js +0 -1
- package/dist/integrations/enforcement-gate.js +3 -3
- package/dist/integrations/governance/governance-client.js +0 -1
- package/dist/integrations/governance/index.js +11 -19
- package/dist/integrations/governance/types.js +0 -1
- package/dist/integrations/hermes-agent/__init__.py +4 -0
- package/dist/integrations/hermes-agent/bridge.mjs +37 -0
- package/dist/integrations/openclaw/api-server.js +0 -1
- package/dist/integrations/openclaw/client.js +0 -1
- package/dist/integrations/openclaw/config.js +0 -1
- package/dist/integrations/openclaw/hooks/xray-hooks.js +0 -1
- package/dist/integrations/openclaw/index.js +0 -1
- package/dist/integrations/openclaw/types.js +0 -1
- package/dist/integrations/plugins/index.js +0 -1
- package/dist/integrations/plugins/plugin-integration.js +0 -1
- package/dist/integrations/plugins/plugin-registry.js +0 -1
- package/dist/mcps/agent-resolver.js +0 -1
- package/dist/mcps/architect-tools.server.js +119 -185
- package/dist/mcps/auto-format.server.js +56 -74
- package/dist/mcps/boot-orchestrator.server.js +67 -85
- package/dist/mcps/config/config-loader.js +6 -0
- package/dist/mcps/config/plugin-server-registry.js +0 -1
- package/dist/mcps/enforcer-tools.server.js +207 -273
- package/dist/mcps/estimation.server.js +63 -107
- package/dist/mcps/framework-compliance-audit.server.js +52 -81
- package/dist/mcps/framework-help.server.js +71 -89
- package/dist/mcps/governance.server.js +97 -149
- package/dist/mcps/knowledge-skills/api-design.server.js +33 -65
- package/dist/mcps/knowledge-skills/architecture-patterns.server.js +33 -65
- package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +123 -163
- package/dist/mcps/knowledge-skills/code-analyzer.server.js +210 -237
- package/dist/mcps/knowledge-skills/code-review.server.js +108 -142
- package/dist/mcps/knowledge-skills/content-creator.server.js +203 -225
- package/dist/mcps/knowledge-skills/database-design.server.js +116 -150
- package/dist/mcps/knowledge-skills/devops-deployment.server.js +123 -157
- package/dist/mcps/knowledge-skills/git-workflow.server.js +34 -67
- package/dist/mcps/knowledge-skills/growth-strategist.server.js +301 -323
- package/dist/mcps/knowledge-skills/log-monitor.server.js +139 -159
- package/dist/mcps/knowledge-skills/mobile-development.server.js +170 -200
- package/dist/mcps/knowledge-skills/multimodal-looker.server.js +122 -158
- package/dist/mcps/knowledge-skills/performance-optimization.server.js +88 -138
- package/dist/mcps/knowledge-skills/project-analysis.server.js +131 -218
- package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +115 -150
- package/dist/mcps/knowledge-skills/security-audit.server.js +16 -143
- package/dist/mcps/knowledge-skills/seo-consultant.server.js +20 -213
- package/dist/mcps/knowledge-skills/session-management.server.js +13 -90
- package/dist/mcps/knowledge-skills/skill-invocation.server.js +43 -421
- package/dist/mcps/knowledge-skills/strategist.server.js +10 -55
- package/dist/mcps/knowledge-skills/tech-writer.server.js +16 -191
- package/dist/mcps/knowledge-skills/testing-best-practices.server.js +18 -191
- package/dist/mcps/knowledge-skills/testing-strategy.server.js +18 -156
- package/dist/mcps/knowledge-skills/ui-ux-design.server.js +22 -296
- package/dist/mcps/lint.server.js +50 -91
- package/dist/mcps/model-health-check.server.js +32 -60
- package/dist/mcps/orchestrator/aside-context.js +207 -0
- package/dist/mcps/orchestrator/handlers/complexity-handler.js +5 -1
- package/dist/mcps/orchestrator/handlers/status-handler.js +8 -1
- package/dist/mcps/orchestrator/handlers/task-handler.js +5 -0
- package/dist/mcps/orchestrator/index.js +5 -0
- package/dist/mcps/orchestrator/server.js +63 -8
- package/dist/mcps/performance-analysis.server.js +56 -87
- package/dist/mcps/processor-pipeline.server.js +68 -99
- package/dist/mcps/researcher.server.js +80 -153
- package/dist/mcps/security-scan.server.js +56 -70
- package/dist/mcps/shared/knowledge-skill-base.js +11 -4
- package/dist/mcps/state-manager.server.js +124 -152
- package/dist/monitoring/nudge-watchdog.js +0 -1
- package/dist/nucleus/default-plugins.js +13 -19
- package/dist/nucleus/index.js +0 -1
- package/dist/orchestrator/agent-spawn-governor.js +0 -1
- package/dist/orchestrator/intelligent-commit-batcher.js +2 -10
- package/dist/orchestrator/multi-agent-orchestration-coordinator.js +0 -1
- package/dist/orchestrator/orchestrator.js +8 -18
- package/dist/orchestrator/self-direction-activation.js +0 -1
- package/dist/orchestrator/universal-registry-bridge.js +0 -1
- package/dist/performance/performance-budget-enforcer.js +0 -1
- package/dist/performance/performance-regression-tester.js +0 -1
- package/dist/plugin/plugin-codex-context.js +87 -0
- package/dist/plugin/plugin-helpers.js +155 -0
- package/dist/plugin/plugin-logger.js +46 -0
- package/dist/plugin/plugin-modules.js +144 -0
- package/dist/plugin/plugin-quality-gate.js +88 -0
- package/dist/plugin/plugin-types.js +1 -0
- package/dist/plugin/xray-codex-injection.js +338 -0
- package/dist/postprocessor/PostProcessor.js +3 -9
- package/dist/postprocessor/analysis/CodeChangeAnalyzer.js +50 -0
- package/dist/postprocessor/config/ProcessorConfigLoader.js +16 -0
- package/dist/postprocessor/integration.js +194 -0
- package/dist/postprocessor/metamorphosis/SelfProposalEngine.js +472 -0
- package/dist/postprocessor/metamorphosis/index.js +1 -0
- package/dist/postprocessor/redeploy/RetryHandler.js +118 -0
- package/dist/postprocessor/services/RegressionAnalysisService.js +0 -1
- package/dist/postprocessor/triggers/APITrigger.js +0 -1
- package/dist/postprocessor/triggers/WebhookTrigger.js +0 -1
- package/dist/processors/implementations/agents-md-validation-processor.js +0 -1
- package/dist/processors/implementations/async-pattern-processor.js +0 -1
- package/dist/processors/implementations/console-log-guard-processor.js +0 -1
- package/dist/processors/implementations/coverage-analysis-processor.js +0 -1
- package/dist/processors/implementations/inference-improvement-processor.js +2 -9
- package/dist/processors/implementations/log-protection-processor.js +0 -1
- package/dist/processors/implementations/nudge-processor.js +0 -1
- package/dist/processors/implementations/performance-budget-processor.js +0 -1
- package/dist/processors/implementations/postprocessor-chain-validator.js +0 -1
- package/dist/processors/implementations/publish-preflight-processor.js +4 -12
- package/dist/processors/implementations/session-summary-processor.js +8 -16
- package/dist/processors/implementations/spawn-governance-processor.js +0 -1
- package/dist/processors/implementations/storytelling-trigger-processor.js +3 -28
- package/dist/processors/implementations/test-auto-creation-processor.js +0 -1
- package/dist/processors/implementations/typescript-compilation-processor.js +0 -1
- package/dist/processors/implementations/version-compliance-processor.js +0 -1
- package/dist/processors/processor-interfaces.js +0 -1
- package/dist/processors/processor-types.js +0 -1
- package/dist/scripts/integration.js +0 -1
- package/dist/security/comprehensive-security-audit.js +0 -1
- package/dist/security/security-agent-coordinator.js +0 -1
- package/dist/security/security-auditor.js +0 -1
- package/dist/security/security-hardener.js +0 -1
- package/dist/security/security-hardening-system.js +0 -1
- package/dist/security/security-headers.js +0 -1
- package/dist/security/security-orchestration-layer.js +0 -1
- package/dist/services/inference-tuner.js +0 -1
- package/dist/session/session-cleanup-manager.js +0 -1
- package/dist/session/session-monitor.js +0 -1
- package/dist/session/session-state-manager.js +0 -1
- package/dist/skills/xray-orchestrator/index.js +0 -1
- package/dist/utils/codex-parser.js +0 -1
- package/dist/utils/language-detector.js +0 -1
- package/dist/utils/shutdown-handler.js +0 -1
- package/dist/validation/agent-config-validator.js +280 -0
- package/dist/validation/orchestration-flow-validator.js +606 -0
- package/package.json +1 -1
- package/scripts/node/release.mjs +2 -2
- package/scripts/node/setup.cjs +28 -0
- package/scripts/node/universal-version-manager.js +1 -1
- package/src/mcps/agent-resolver.ts +0 -1
- package/src/mcps/architect-tools.server.ts +129 -211
- package/src/mcps/auto-format.server.ts +74 -103
- package/src/mcps/boot-orchestrator.server.ts +71 -96
- package/src/mcps/config/__tests__/config-loader.test.ts +6 -6
- package/src/mcps/config/config-loader.ts +7 -0
- package/src/mcps/config/plugin-server-registry.ts +0 -1
- package/src/mcps/enforcer-tools.server.ts +217 -294
- package/src/mcps/estimation.server.ts +62 -122
- package/src/mcps/framework-compliance-audit.server.ts +53 -95
- package/src/mcps/framework-help.server.ts +74 -96
- package/src/mcps/governance.server.ts +97 -162
- package/src/mcps/knowledge-skills/api-design.server.ts +33 -72
- package/src/mcps/knowledge-skills/architecture-patterns.server.ts +33 -72
- package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +148 -193
- package/src/mcps/knowledge-skills/code-analyzer.server.ts +222 -254
- package/src/mcps/knowledge-skills/code-review.server.ts +115 -157
- package/src/mcps/knowledge-skills/content-creator.server.ts +219 -246
- package/src/mcps/knowledge-skills/database-design.server.ts +119 -160
- package/src/mcps/knowledge-skills/devops-deployment.server.ts +126 -167
- package/src/mcps/knowledge-skills/git-workflow.server.ts +32 -77
- package/src/mcps/knowledge-skills/growth-strategist.server.ts +322 -360
- package/src/mcps/knowledge-skills/log-monitor.server.ts +68 -95
- package/src/mcps/knowledge-skills/mobile-development.server.ts +16 -56
- package/src/mcps/knowledge-skills/multimodal-looker.server.ts +13 -59
- package/src/mcps/knowledge-skills/performance-optimization.server.ts +13 -74
- package/src/mcps/knowledge-skills/project-analysis.server.ts +13 -120
- package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +13 -60
- package/src/mcps/knowledge-skills/security-audit.server.ts +19 -157
- package/src/mcps/knowledge-skills/seo-consultant.server.ts +23 -227
- package/src/mcps/knowledge-skills/session-management.server.ts +17 -106
- package/src/mcps/knowledge-skills/skill-invocation.server.ts +45 -446
- package/src/mcps/knowledge-skills/strategist.server.ts +13 -63
- package/src/mcps/knowledge-skills/tech-writer.server.ts +19 -204
- package/src/mcps/knowledge-skills/testing-best-practices.server.ts +21 -204
- package/src/mcps/knowledge-skills/testing-strategy.server.ts +21 -165
- package/src/mcps/knowledge-skills/ui-ux-design.server.ts +25 -342
- package/src/mcps/lint.server.ts +52 -105
- package/src/mcps/model-health-check.server.ts +34 -70
- package/src/mcps/orchestrator/aside-context.ts +245 -0
- package/src/mcps/orchestrator/handlers/complexity-handler.ts +9 -3
- package/src/mcps/orchestrator/handlers/status-handler.ts +11 -1
- package/src/mcps/orchestrator/handlers/task-handler.ts +8 -1
- package/src/mcps/orchestrator/index.ts +29 -0
- package/src/mcps/orchestrator/server.ts +79 -24
- package/src/mcps/orchestrator/types.ts +37 -0
- package/src/mcps/performance-analysis.server.ts +59 -102
- package/src/mcps/processor-pipeline.server.ts +70 -108
- package/src/mcps/researcher.server.ts +87 -175
- package/src/mcps/security-scan.server.ts +57 -76
- package/src/mcps/shared/knowledge-skill-base.ts +12 -4
- package/src/mcps/state-manager.server.ts +129 -169
- package/src/opencode/codex.codex +1 -1
- package/src/opencode/commands/auto-format.md +3 -3
- package/src/opencode/commands/auto-summary-capture.md +2 -2
- package/src/opencode/commands/enforcer-daily-scan.md +3 -3
- package/src/opencode/commands/framework-compliance-audit.md +4 -4
- package/src/opencode/commands/interactive-validator.md +2 -2
- package/src/opencode/commands/job-summary-logger.md +2 -2
- package/src/opencode/commands/mode-switch.md +1 -1
- package/src/opencode/commands/model-health-check.md +2 -2
- package/src/opencode/commands/performance-analysis.md +2 -2
- package/src/opencode/commands/pre-commit-introspection.md +3 -3
- package/src/opencode/commands/security-scan.md +3 -3
- package/src/opencode/commands/sisyphus-validation.md +3 -3
- package/src/opencode/commands/summary-logger.md +2 -2
- package/src/skills/xray-orchestrator/index.ts +0 -1
- package/dist/nucleus/orchestrator.js +0 -479
|
@@ -3,28 +3,132 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Advanced state management with persistence, synchronization, and conflict resolution
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
6
|
+
import { CallToolRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
7
|
+
import { XrayKnowledgeSkillBase } from "./shared/knowledge-skill-base.js";
|
|
9
8
|
import fs from "fs";
|
|
10
9
|
import path from "path";
|
|
11
10
|
import { frameworkLogger, generateJobId } from "../core/framework-logger.js";
|
|
12
|
-
class XrayStateManagerServer {
|
|
13
|
-
server;
|
|
11
|
+
class XrayStateManagerServer extends XrayKnowledgeSkillBase {
|
|
14
12
|
state = new Map();
|
|
15
13
|
stateFile;
|
|
16
14
|
backups = new Map();
|
|
17
15
|
constructor() {
|
|
18
|
-
|
|
19
|
-
name: "state-manager", version: "3.1.0",
|
|
20
|
-
}, {
|
|
21
|
-
capabilities: {
|
|
22
|
-
tools: {},
|
|
23
|
-
},
|
|
24
|
-
});
|
|
16
|
+
super("state-manager", "3.1.0");
|
|
25
17
|
this.stateFile = path.join(process.cwd(), ".opencode", "state", "mcp-state.json");
|
|
26
18
|
this.ensureStateDirectory();
|
|
27
19
|
this.loadState();
|
|
20
|
+
this.tools = [
|
|
21
|
+
{
|
|
22
|
+
name: "get-state",
|
|
23
|
+
description: "Get state value by key with type safety and validation",
|
|
24
|
+
inputSchema: {
|
|
25
|
+
type: "object",
|
|
26
|
+
properties: {
|
|
27
|
+
key: { type: "string" },
|
|
28
|
+
defaultValue: {
|
|
29
|
+
oneOf: [
|
|
30
|
+
{ type: "string" },
|
|
31
|
+
{ type: "number" },
|
|
32
|
+
{ type: "boolean" },
|
|
33
|
+
{ type: "object" },
|
|
34
|
+
{ type: "array" },
|
|
35
|
+
],
|
|
36
|
+
},
|
|
37
|
+
validate: { type: "boolean", default: true },
|
|
38
|
+
},
|
|
39
|
+
required: ["key"],
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: "set-state",
|
|
44
|
+
description: "Set state value by key with conflict resolution and persistence",
|
|
45
|
+
inputSchema: {
|
|
46
|
+
type: "object",
|
|
47
|
+
properties: {
|
|
48
|
+
key: { type: "string" },
|
|
49
|
+
value: {
|
|
50
|
+
oneOf: [
|
|
51
|
+
{ type: "string" },
|
|
52
|
+
{ type: "number" },
|
|
53
|
+
{ type: "boolean" },
|
|
54
|
+
{ type: "object" },
|
|
55
|
+
{ type: "array" },
|
|
56
|
+
],
|
|
57
|
+
},
|
|
58
|
+
persist: { type: "boolean", default: true },
|
|
59
|
+
backup: { type: "boolean", default: false },
|
|
60
|
+
},
|
|
61
|
+
required: ["key", "value"],
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: "delete-state",
|
|
66
|
+
description: "Delete state value by key with cleanup and validation",
|
|
67
|
+
inputSchema: {
|
|
68
|
+
type: "object",
|
|
69
|
+
properties: {
|
|
70
|
+
key: { type: "string" },
|
|
71
|
+
force: { type: "boolean", default: false },
|
|
72
|
+
},
|
|
73
|
+
required: ["key"],
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: "list-state",
|
|
78
|
+
description: "List all state keys with filtering and metadata",
|
|
79
|
+
inputSchema: {
|
|
80
|
+
type: "object",
|
|
81
|
+
properties: {
|
|
82
|
+
prefix: { type: "string" },
|
|
83
|
+
includeValues: { type: "boolean", default: false },
|
|
84
|
+
limit: { type: "number", default: 100 },
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: "backup-state",
|
|
90
|
+
description: "Create backup of current state or specific keys",
|
|
91
|
+
inputSchema: {
|
|
92
|
+
type: "object",
|
|
93
|
+
properties: {
|
|
94
|
+
keys: { type: "array", items: { type: "string" } },
|
|
95
|
+
name: { type: "string" },
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
name: "restore-state",
|
|
101
|
+
description: "Restore state from backup",
|
|
102
|
+
inputSchema: {
|
|
103
|
+
type: "object",
|
|
104
|
+
properties: {
|
|
105
|
+
name: { type: "string" },
|
|
106
|
+
keys: { type: "array", items: { type: "string" } },
|
|
107
|
+
},
|
|
108
|
+
required: ["name"],
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
name: "validate-state",
|
|
113
|
+
description: "Validate state integrity and consistency",
|
|
114
|
+
inputSchema: {
|
|
115
|
+
type: "object",
|
|
116
|
+
properties: {
|
|
117
|
+
deep: { type: "boolean", default: false },
|
|
118
|
+
repair: { type: "boolean", default: false },
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
];
|
|
123
|
+
this.handlers = {
|
|
124
|
+
"get-state": async (args) => this.handleGetState(args),
|
|
125
|
+
"set-state": async (args) => this.handleSetState(args),
|
|
126
|
+
"delete-state": async (args) => this.handleDeleteState(args),
|
|
127
|
+
"list-state": async (args) => this.handleListState(args),
|
|
128
|
+
"backup-state": async (args) => this.handleBackupState(args),
|
|
129
|
+
"restore-state": async (args) => this.handleRestoreState(args),
|
|
130
|
+
"validate-state": async (args) => this.handleValidateState(args),
|
|
131
|
+
};
|
|
28
132
|
this.setupToolHandlers();
|
|
29
133
|
const jobId = generateJobId("mcp-state-manager-init");
|
|
30
134
|
frameworkLogger.log("mcps/state-manager", "initialize", "info", {}, undefined, jobId);
|
|
@@ -62,144 +166,18 @@ class XrayStateManagerServer {
|
|
|
62
166
|
}
|
|
63
167
|
}
|
|
64
168
|
setupToolHandlers() {
|
|
65
|
-
|
|
66
|
-
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
67
|
-
return {
|
|
68
|
-
tools: [
|
|
69
|
-
{
|
|
70
|
-
name: "get-state",
|
|
71
|
-
description: "Get state value by key with type safety and validation",
|
|
72
|
-
inputSchema: {
|
|
73
|
-
type: "object",
|
|
74
|
-
properties: {
|
|
75
|
-
key: { type: "string" },
|
|
76
|
-
defaultValue: {
|
|
77
|
-
oneOf: [
|
|
78
|
-
{ type: "string" },
|
|
79
|
-
{ type: "number" },
|
|
80
|
-
{ type: "boolean" },
|
|
81
|
-
{ type: "object" },
|
|
82
|
-
{ type: "array" },
|
|
83
|
-
],
|
|
84
|
-
},
|
|
85
|
-
validate: { type: "boolean", default: true },
|
|
86
|
-
},
|
|
87
|
-
required: ["key"],
|
|
88
|
-
},
|
|
89
|
-
},
|
|
90
|
-
{
|
|
91
|
-
name: "set-state",
|
|
92
|
-
description: "Set state value by key with conflict resolution and persistence",
|
|
93
|
-
inputSchema: {
|
|
94
|
-
type: "object",
|
|
95
|
-
properties: {
|
|
96
|
-
key: { type: "string" },
|
|
97
|
-
value: {
|
|
98
|
-
oneOf: [
|
|
99
|
-
{ type: "string" },
|
|
100
|
-
{ type: "number" },
|
|
101
|
-
{ type: "boolean" },
|
|
102
|
-
{ type: "object" },
|
|
103
|
-
{ type: "array" },
|
|
104
|
-
],
|
|
105
|
-
},
|
|
106
|
-
persist: { type: "boolean", default: true },
|
|
107
|
-
backup: { type: "boolean", default: false },
|
|
108
|
-
},
|
|
109
|
-
required: ["key", "value"],
|
|
110
|
-
},
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
name: "delete-state",
|
|
114
|
-
description: "Delete state value by key with cleanup and validation",
|
|
115
|
-
inputSchema: {
|
|
116
|
-
type: "object",
|
|
117
|
-
properties: {
|
|
118
|
-
key: { type: "string" },
|
|
119
|
-
force: { type: "boolean", default: false },
|
|
120
|
-
},
|
|
121
|
-
required: ["key"],
|
|
122
|
-
},
|
|
123
|
-
},
|
|
124
|
-
{
|
|
125
|
-
name: "list-state",
|
|
126
|
-
description: "List all state keys with filtering and metadata",
|
|
127
|
-
inputSchema: {
|
|
128
|
-
type: "object",
|
|
129
|
-
properties: {
|
|
130
|
-
prefix: { type: "string" },
|
|
131
|
-
includeValues: { type: "boolean", default: false },
|
|
132
|
-
limit: { type: "number", default: 100 },
|
|
133
|
-
},
|
|
134
|
-
},
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
name: "backup-state",
|
|
138
|
-
description: "Create backup of current state or specific keys",
|
|
139
|
-
inputSchema: {
|
|
140
|
-
type: "object",
|
|
141
|
-
properties: {
|
|
142
|
-
keys: { type: "array", items: { type: "string" } },
|
|
143
|
-
name: { type: "string" },
|
|
144
|
-
},
|
|
145
|
-
},
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
name: "restore-state",
|
|
149
|
-
description: "Restore state from backup",
|
|
150
|
-
inputSchema: {
|
|
151
|
-
type: "object",
|
|
152
|
-
properties: {
|
|
153
|
-
name: { type: "string" },
|
|
154
|
-
keys: { type: "array", items: { type: "string" } },
|
|
155
|
-
},
|
|
156
|
-
required: ["name"],
|
|
157
|
-
},
|
|
158
|
-
},
|
|
159
|
-
{
|
|
160
|
-
name: "validate-state",
|
|
161
|
-
description: "Validate state integrity and consistency",
|
|
162
|
-
inputSchema: {
|
|
163
|
-
type: "object",
|
|
164
|
-
properties: {
|
|
165
|
-
deep: { type: "boolean", default: false },
|
|
166
|
-
repair: { type: "boolean", default: false },
|
|
167
|
-
},
|
|
168
|
-
},
|
|
169
|
-
},
|
|
170
|
-
],
|
|
171
|
-
};
|
|
172
|
-
});
|
|
173
|
-
// Handle tool calls
|
|
169
|
+
this.setupListToolsHandler();
|
|
174
170
|
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
171
|
+
const { name, arguments: args } = request.params;
|
|
172
|
+
const handler = this.handlers[name];
|
|
173
|
+
if (!handler)
|
|
174
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
175
175
|
try {
|
|
176
|
-
|
|
177
|
-
switch (name) {
|
|
178
|
-
case "get-state":
|
|
179
|
-
return await this.handleGetState(args);
|
|
180
|
-
case "set-state":
|
|
181
|
-
return await this.handleSetState(args);
|
|
182
|
-
case "delete-state":
|
|
183
|
-
return await this.handleDeleteState(args);
|
|
184
|
-
case "list-state":
|
|
185
|
-
return await this.handleListState(args);
|
|
186
|
-
case "backup-state":
|
|
187
|
-
return await this.handleBackupState(args);
|
|
188
|
-
case "restore-state":
|
|
189
|
-
return await this.handleRestoreState(args);
|
|
190
|
-
case "validate-state":
|
|
191
|
-
return await this.handleValidateState(args);
|
|
192
|
-
default:
|
|
193
|
-
throw new Error(`Unknown tool: ${name}`);
|
|
194
|
-
}
|
|
176
|
+
return await handler(args);
|
|
195
177
|
}
|
|
196
178
|
catch (error) {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
type: "text",
|
|
200
|
-
text: `Error handling tool '${request.params.name}': ${error instanceof Error ? error.message : String(error)}`,
|
|
201
|
-
}],
|
|
202
|
-
};
|
|
179
|
+
frameworkLogger.log("mcps/state-manager", "tool", "error", { tool: name, error: String(error) });
|
|
180
|
+
throw error;
|
|
203
181
|
}
|
|
204
182
|
});
|
|
205
183
|
}
|
|
@@ -622,12 +600,6 @@ ${results.repairedKeys.length > 0 ? `**Repaired Keys:**\n${results.repairedKeys.
|
|
|
622
600
|
}
|
|
623
601
|
return dependents;
|
|
624
602
|
}
|
|
625
|
-
async run() {
|
|
626
|
-
const transport = new StdioServerTransport();
|
|
627
|
-
await this.server.connect(transport);
|
|
628
|
-
const jobId = generateJobId("mcp-state-manager-start");
|
|
629
|
-
frameworkLogger.log("mcps/state-manager", "start", "success", {}, undefined, jobId);
|
|
630
|
-
}
|
|
631
603
|
}
|
|
632
604
|
// Start the server if run directly
|
|
633
605
|
if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {
|
|
@@ -8,18 +8,10 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { frameworkLogger } from '../core/framework-logger.js';
|
|
10
10
|
import { pluginRegistry } from './plugin-registry.js';
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
if (schema === ListToolsRequestSchema) {
|
|
16
|
-
this.__xrayListToolsHandler = handler;
|
|
17
|
-
}
|
|
18
|
-
if (schema === CallToolRequestSchema) {
|
|
19
|
-
this.__xrayCallToolHandler = handler;
|
|
20
|
-
}
|
|
21
|
-
return origSetRequestHandler.call(this, schema, handler);
|
|
22
|
-
};
|
|
11
|
+
// Note: handlers are extracted directly from the SDK's Server internal
|
|
12
|
+
// _requestHandlers Map (keyed by method literal) instead of patching
|
|
13
|
+
// Server.prototype.setRequestHandler. This avoids global prototype mutation
|
|
14
|
+
// while preserving access to the same tool/handler metadata.
|
|
23
15
|
// ── Named exports (17 servers) ──────────────────────────────────────────────
|
|
24
16
|
import { XrayCodeReviewServer } from '../mcps/knowledge-skills/code-review.server.js';
|
|
25
17
|
import { XraySecurityAuditServer } from '../mcps/knowledge-skills/security-audit.server.js';
|
|
@@ -54,13 +46,14 @@ async function toServerDescriptor(instance, serverName) {
|
|
|
54
46
|
const srv = instance;
|
|
55
47
|
const tools = srv.tools ?? [];
|
|
56
48
|
const handlers = srv.handlers ?? {};
|
|
57
|
-
//
|
|
49
|
+
// Read handlers from SDK's internal _requestHandlers Map (keyed by method literal)
|
|
58
50
|
const mcp = srv.server;
|
|
59
|
-
const
|
|
60
|
-
const
|
|
51
|
+
const requestHandlers = mcp?._requestHandlers;
|
|
52
|
+
const listHandler = requestHandlers?.get('tools/list');
|
|
53
|
+
const callHandler = requestHandlers?.get('tools/call');
|
|
61
54
|
if (tools.length === 0 && listHandler) {
|
|
62
55
|
try {
|
|
63
|
-
const listResult = await listHandler();
|
|
56
|
+
const listResult = await listHandler({ method: 'tools/list', params: {} }, {});
|
|
64
57
|
if (listResult?.tools?.length) {
|
|
65
58
|
return {
|
|
66
59
|
name: serverName,
|
|
@@ -69,7 +62,8 @@ async function toServerDescriptor(instance, serverName) {
|
|
|
69
62
|
if (!callHandler) {
|
|
70
63
|
throw new Error(`Unknown tool '${toolName}' on server '${serverName}'`);
|
|
71
64
|
}
|
|
72
|
-
|
|
65
|
+
const result = await callHandler({ method: 'tools/call', params: { name: toolName, arguments: args } }, {});
|
|
66
|
+
return result;
|
|
73
67
|
},
|
|
74
68
|
};
|
|
75
69
|
}
|
|
@@ -154,7 +148,7 @@ export async function registerDefaultPlugins() {
|
|
|
154
148
|
{ label: 'git-workflow', create: () => new XrayGitWorkflowServer(), serverName: 'git-workflow' },
|
|
155
149
|
{ label: 'log-monitor', create: () => new LogMonitorServer(), serverName: 'log-monitor' },
|
|
156
150
|
{ label: 'session-management', create: () => new SessionManagementServer(), serverName: 'session-management' },
|
|
157
|
-
{ label: 'strategist', create: () => new StrategistServer(), serverName: '
|
|
151
|
+
{ label: 'strategist', create: () => new StrategistServer(), serverName: 'strategist' },
|
|
158
152
|
]);
|
|
159
153
|
// ── Batch 5: Content & Growth ──
|
|
160
154
|
const batch5Count = await registerBatch('content-growth', [
|
|
@@ -167,7 +161,7 @@ export async function registerDefaultPlugins() {
|
|
|
167
161
|
// ── Batch 6: Specialized ──
|
|
168
162
|
const batch6Count = await registerBatch('specialized', [
|
|
169
163
|
{ label: 'bug-triage-specialist', create: () => new BugTriageSpecialistServer(), serverName: 'bug-triage-specialist' },
|
|
170
|
-
{ label: 'skill-invocation', create: () => new SkillInvocationServer(), serverName: '
|
|
164
|
+
{ label: 'skill-invocation', create: () => new SkillInvocationServer(), serverName: 'skill-invocation' },
|
|
171
165
|
{ label: 'testing-best-practices', create: () => new XrayTestingBestPracticesServer(), serverName: 'testing-best-practices' },
|
|
172
166
|
]);
|
|
173
167
|
const registered = batch1Count + batch2Count + batch3Count + batch4Count + batch5Count + batch6Count;
|
package/dist/nucleus/index.js
CHANGED
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export { handleGovernRequest, governSingle, getGovernanceService, GovernHTTPAdapter, NUCLEUS_VERSION, NUCLEUS_DESCRIPTION, } from './kernel.js';
|
|
8
8
|
export { pluginRegistry, } from './plugin-registry.js';
|
|
9
|
-
export { NucleusOrchestrator } from './orchestrator.js';
|
|
10
9
|
export { scoreComplexity, routeToAgent, scoreAndRoute } from './thin-dispatch.js';
|
|
11
10
|
export { NUCLEUS_THIN_DISPATCH_VERSION } from './thin-dispatch.js';
|
|
12
11
|
export { registerDefaultPlugins } from './default-plugins.js';
|
|
@@ -4,9 +4,8 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Configuration is read from .xray/features.json -> commit_cycle
|
|
6
6
|
*/
|
|
7
|
-
import * as fs from "fs";
|
|
8
|
-
import * as path from "path";
|
|
9
7
|
import { frameworkLogger } from "../core/framework-logger.js";
|
|
8
|
+
import { featuresConfigLoader } from "../core/features-config.js";
|
|
10
9
|
import { runCommandSafe } from "../utils/command-runner.js";
|
|
11
10
|
export class IntelligentCommitBatcher {
|
|
12
11
|
pendingChanges = [];
|
|
@@ -35,14 +34,7 @@ export class IntelligentCommitBatcher {
|
|
|
35
34
|
}
|
|
36
35
|
loadFeaturesConfig() {
|
|
37
36
|
try {
|
|
38
|
-
|
|
39
|
-
path.join(process.cwd(), ".xray", "features.json"),
|
|
40
|
-
];
|
|
41
|
-
for (const configPath of configPaths) {
|
|
42
|
-
if (fs.existsSync(configPath)) {
|
|
43
|
-
return JSON.parse(fs.readFileSync(configPath, "utf-8"));
|
|
44
|
-
}
|
|
45
|
-
}
|
|
37
|
+
return featuresConfigLoader.loadConfig();
|
|
46
38
|
}
|
|
47
39
|
catch (e) {
|
|
48
40
|
frameworkLogger.log("intelligent-commit-batcher", "config-load-failed", "warning", { error: e instanceof Error ? e.message : String(e) });
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
* Central coordinator for multi-agent orchestration that integrates all orchestration components
|
|
5
5
|
* for comprehensive E2E workflow management and coordination.
|
|
6
6
|
*
|
|
7
|
-
* @version 1.1.0
|
|
8
7
|
* @since 2026-01-23
|
|
9
8
|
*/
|
|
10
9
|
import { KernelOrchestrator } from "../core/orchestrator.js";
|
|
@@ -4,17 +4,16 @@
|
|
|
4
4
|
* Coordinates multi-step tasks and delegates to specialized subagents.
|
|
5
5
|
* Implements Sisyphus integration for relentless execution.
|
|
6
6
|
*
|
|
7
|
-
* @version 1.0.0
|
|
8
7
|
* @since 2026-01-07
|
|
9
8
|
*/
|
|
10
9
|
import { enhancedMultiAgentOrchestrator } from "./enhanced-multi-agent-orchestrator.js";
|
|
10
|
+
import { featuresConfigLoader } from "../core/features-config.js";
|
|
11
11
|
import { frameworkLogger } from "../core/framework-logger.js";
|
|
12
12
|
import { routingOutcomeTracker } from "../delegation/analytics/outcome-tracker.js";
|
|
13
13
|
import { patternPerformanceTracker } from "../analytics/pattern-performance-tracker.js";
|
|
14
14
|
import { VotingCoordinator } from "../delegation/voting-coordinator.js";
|
|
15
15
|
import { getAgentExpertiseLevel } from "../delegation/agent-expertise.js";
|
|
16
16
|
import { XrayStateManager } from "../state/state-manager.js";
|
|
17
|
-
import fs from "fs";
|
|
18
17
|
export class XrayOrchestrator {
|
|
19
18
|
config;
|
|
20
19
|
activeTasks = new Map();
|
|
@@ -35,22 +34,13 @@ export class XrayOrchestrator {
|
|
|
35
34
|
*/
|
|
36
35
|
loadOrchestratorConfig() {
|
|
37
36
|
try {
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
const features = JSON.parse(content);
|
|
46
|
-
if (features.multi_agent_orchestration) {
|
|
47
|
-
const ma = features.multi_agent_orchestration;
|
|
48
|
-
return {
|
|
49
|
-
maxConcurrentTasks: ma.max_concurrent_agents,
|
|
50
|
-
conflictResolutionStrategy: this.mapConflictResolution(ma.conflict_resolution),
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
}
|
|
37
|
+
const features = featuresConfigLoader.loadConfig();
|
|
38
|
+
if (features.multi_agent_orchestration) {
|
|
39
|
+
const ma = features.multi_agent_orchestration;
|
|
40
|
+
return {
|
|
41
|
+
maxConcurrentTasks: ma.max_concurrent_agents,
|
|
42
|
+
conflictResolutionStrategy: this.mapConflictResolution(ma.conflict_resolution),
|
|
43
|
+
};
|
|
54
44
|
}
|
|
55
45
|
}
|
|
56
46
|
catch (e) {
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
import { resolveCodexPath } from "./plugin-modules.js";
|
|
4
|
+
import { PluginLogger } from "./plugin-logger.js";
|
|
5
|
+
let cachedCodexContexts = null;
|
|
6
|
+
async function getCodexFileLocations(directory) {
|
|
7
|
+
const root = directory || process.cwd();
|
|
8
|
+
const resolved = await resolveCodexPath(root);
|
|
9
|
+
resolved.push(path.join(root, ".opencode", "codex.codex"), path.join(root, ".xray", "agents_template.md"), path.join(root, "AGENTS.md"));
|
|
10
|
+
return resolved;
|
|
11
|
+
}
|
|
12
|
+
function readFileContent(filePath) {
|
|
13
|
+
try {
|
|
14
|
+
return fs.readFileSync(filePath, "utf-8");
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
const logger = new PluginLogger(process.cwd());
|
|
18
|
+
logger.error(`Failed to read file ${filePath}`, error);
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export function extractCodexMetadata(content) {
|
|
23
|
+
if (content.trim().startsWith("{")) {
|
|
24
|
+
try {
|
|
25
|
+
const parsed = JSON.parse(content);
|
|
26
|
+
const version = parsed.version || "1.6.0";
|
|
27
|
+
const terms = parsed.terms || {};
|
|
28
|
+
const termCount = Object.keys(terms).length;
|
|
29
|
+
return { version, termCount };
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
// Not valid JSON, try markdown format
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const versionMatch = content.match(/\*\*Version\*\*:\s*(\d+\.\d+\.\d+)/);
|
|
36
|
+
const version = versionMatch?.[1] ?? "1.6.0";
|
|
37
|
+
const termMatches = content.match(/####\s*\d+\.\s/g);
|
|
38
|
+
const termCount = termMatches ? termMatches.length : 0;
|
|
39
|
+
return { version, termCount };
|
|
40
|
+
}
|
|
41
|
+
export function createCodexContextEntry(filePath, content) {
|
|
42
|
+
const metadata = extractCodexMetadata(content);
|
|
43
|
+
return {
|
|
44
|
+
id: `xray-codex-${path.basename(filePath)}`,
|
|
45
|
+
source: filePath,
|
|
46
|
+
content,
|
|
47
|
+
priority: "critical",
|
|
48
|
+
metadata: {
|
|
49
|
+
version: metadata.version,
|
|
50
|
+
termCount: metadata.termCount,
|
|
51
|
+
loadedAt: new Date().toISOString(),
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export async function loadCodexContext(directory) {
|
|
56
|
+
if (cachedCodexContexts) {
|
|
57
|
+
return cachedCodexContexts;
|
|
58
|
+
}
|
|
59
|
+
const codexContexts = [];
|
|
60
|
+
const locations = await getCodexFileLocations(directory);
|
|
61
|
+
for (const fileLocation of locations) {
|
|
62
|
+
const fullPath = path.isAbsolute(fileLocation) ? fileLocation : path.join(directory, fileLocation);
|
|
63
|
+
const content = readFileContent(fullPath);
|
|
64
|
+
if (content && content.trim().length > 0) {
|
|
65
|
+
const entry = createCodexContextEntry(fullPath, content);
|
|
66
|
+
if (entry.metadata.termCount > 0) {
|
|
67
|
+
codexContexts.push(entry);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
cachedCodexContexts = codexContexts;
|
|
72
|
+
if (codexContexts.length === 0) {
|
|
73
|
+
const { getOrCreateLogger } = await import("./plugin-logger.js");
|
|
74
|
+
void getOrCreateLogger(directory).then((l) => l.error(`No valid codex files found. Checked: ${locations.join(", ")}`));
|
|
75
|
+
}
|
|
76
|
+
return codexContexts;
|
|
77
|
+
}
|
|
78
|
+
export function formatCodexContext(contexts) {
|
|
79
|
+
if (contexts.length === 0) {
|
|
80
|
+
return "";
|
|
81
|
+
}
|
|
82
|
+
const parts = [];
|
|
83
|
+
for (const context of contexts) {
|
|
84
|
+
parts.push(`# 0xRay Codex Context v${context.metadata.version}`, `Source: ${context.source}`, `Terms Loaded: ${context.metadata.termCount}`, `Loaded At: ${context.metadata.loadedAt}`, "", context.content, "", "---", "");
|
|
85
|
+
}
|
|
86
|
+
return parts.join("\n");
|
|
87
|
+
}
|