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
|
@@ -98,6 +98,30 @@ function logToActivity(logDir, message) {
|
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
+
function logRoutingOutcome(logDir, outcome) {
|
|
102
|
+
try {
|
|
103
|
+
const routingPath = join(logDir, "routing-outcomes.json");
|
|
104
|
+
let entries = [];
|
|
105
|
+
if (existsSync(routingPath)) {
|
|
106
|
+
try { entries = JSON.parse(readFileSync(routingPath, "utf-8")); } catch { entries = []; }
|
|
107
|
+
}
|
|
108
|
+
if (!Array.isArray(entries)) entries = [];
|
|
109
|
+
entries.push({
|
|
110
|
+
taskId: outcome.taskId || `bridge-${Date.now()}`,
|
|
111
|
+
taskDescription: outcome.taskDescription || outcome.tool || "unknown",
|
|
112
|
+
routedAgent: outcome.routedAgent || "direct",
|
|
113
|
+
routedSkill: outcome.routedSkill || outcome.tool || "unknown",
|
|
114
|
+
confidence: outcome.confidence || 0.8,
|
|
115
|
+
success: outcome.success !== false,
|
|
116
|
+
routingMethod: outcome.routingMethod || "bridge",
|
|
117
|
+
timestamp: new Date().toISOString(),
|
|
118
|
+
});
|
|
119
|
+
writeFileSync(routingPath, JSON.stringify(entries, null, 2), "utf-8");
|
|
120
|
+
} catch {
|
|
121
|
+
// Silent fail
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
101
125
|
function logToolEvent(logDir, eventType, tool, args = {}, result = null) {
|
|
102
126
|
try {
|
|
103
127
|
const eventsPath = join(logDir, "plugin-tool-events.log");
|
|
@@ -430,6 +454,15 @@ async function handlePostProcess(input, projectRoot, logDir) {
|
|
|
430
454
|
|
|
431
455
|
logToActivity(logDir, `post-process: complete duration=${duration}ms processors=${processorResult.success}`);
|
|
432
456
|
|
|
457
|
+
// Log routing outcome for test verification
|
|
458
|
+
logRoutingOutcome(logDir, {
|
|
459
|
+
tool,
|
|
460
|
+
taskDescription: `[post-process] ${tool}`,
|
|
461
|
+
routedAgent: "bridge",
|
|
462
|
+
routedSkill: tool,
|
|
463
|
+
success: processorResult.success !== false,
|
|
464
|
+
});
|
|
465
|
+
|
|
433
466
|
return {
|
|
434
467
|
duration,
|
|
435
468
|
processors: processorResult,
|
|
@@ -829,6 +862,10 @@ async function main() {
|
|
|
829
862
|
const projectRoot = findProjectRoot();
|
|
830
863
|
const logDir = ensureLogDir(projectRoot);
|
|
831
864
|
|
|
865
|
+
// Log session start for test verification
|
|
866
|
+
const sessionId = `bridge-${Date.now()}`;
|
|
867
|
+
logToActivity(logDir, `session-start: session=${sessionId} source=bridge`);
|
|
868
|
+
|
|
832
869
|
// Lazy-load framework on first call
|
|
833
870
|
if (!frameworkReady && !frameworkLoadAttempted) {
|
|
834
871
|
await loadFramework(projectRoot);
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
* Industrial-grade plugin system for 0xRay.
|
|
5
5
|
* Provides lifecycle management, security, metrics, and extensibility.
|
|
6
6
|
*
|
|
7
|
-
* @version 1.1.0
|
|
8
7
|
*/
|
|
9
8
|
export { PluginIntegration, PluginType, PluginState, DEFAULT_PLUGIN_CONFIG, parseYamlManifest, validatePluginManifest, satisfiesVersion, } from "./plugin-integration.js";
|
|
10
9
|
export { PluginRegistry, } from "./plugin-registry.js";
|
|
@@ -4,154 +4,141 @@
|
|
|
4
4
|
* Converts architect-tools.ts functions into MCP server tools
|
|
5
5
|
* Provides contextual analysis capabilities via MCP protocol
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
7
|
+
import { CallToolRequestSchema } from "@modelcontextprotocol/sdk/types.js";
|
|
8
|
+
import { XrayKnowledgeSkillBase } from "./shared/knowledge-skill-base.js";
|
|
10
9
|
import * as fs from "fs";
|
|
11
10
|
import { frameworkLogger } from "../core/framework-logger.js";
|
|
12
11
|
import { contextAnalysis as architectContextAnalysis, codebaseStructure as architectCodebaseStructure, dependencyAnalysis as architectDependencyAnalysis, architectureAssessment as architectArchitectureAssessment, } from "../architect/architect-tools.js";
|
|
13
|
-
class XrayArchitectToolsServer {
|
|
14
|
-
server;
|
|
12
|
+
class XrayArchitectToolsServer extends XrayKnowledgeSkillBase {
|
|
15
13
|
constructor() {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
description: "Root directory of the project to analyze",
|
|
39
|
-
},
|
|
40
|
-
depth: {
|
|
41
|
-
type: "string",
|
|
42
|
-
enum: ["overview", "detailed", "comprehensive"],
|
|
43
|
-
default: "detailed",
|
|
44
|
-
description: "Analysis depth level",
|
|
45
|
-
},
|
|
46
|
-
includeFiles: {
|
|
47
|
-
type: "array",
|
|
48
|
-
items: { type: "string" },
|
|
49
|
-
description: "Specific files to include in analysis",
|
|
50
|
-
},
|
|
51
|
-
},
|
|
52
|
-
required: ["projectRoot"],
|
|
14
|
+
super("architect-tools", "3.1.0");
|
|
15
|
+
this.tools = [
|
|
16
|
+
{
|
|
17
|
+
name: "context-analysis",
|
|
18
|
+
description: "Perform comprehensive codebase intelligence gathering including structure analysis, dependency mapping, and architectural pattern recognition",
|
|
19
|
+
inputSchema: {
|
|
20
|
+
type: "object",
|
|
21
|
+
properties: {
|
|
22
|
+
projectRoot: {
|
|
23
|
+
type: "string",
|
|
24
|
+
description: "Root directory of the project to analyze",
|
|
25
|
+
},
|
|
26
|
+
depth: {
|
|
27
|
+
type: "string",
|
|
28
|
+
enum: ["overview", "detailed", "comprehensive"],
|
|
29
|
+
default: "detailed",
|
|
30
|
+
description: "Analysis depth level",
|
|
31
|
+
},
|
|
32
|
+
includeFiles: {
|
|
33
|
+
type: "array",
|
|
34
|
+
items: { type: "string" },
|
|
35
|
+
description: "Specific files to include in analysis",
|
|
53
36
|
},
|
|
54
37
|
},
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
38
|
+
required: ["projectRoot"],
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: "codebase-structure",
|
|
43
|
+
description: "Analyze file organization, module distribution, and directory hierarchy with optional metrics",
|
|
44
|
+
inputSchema: {
|
|
45
|
+
type: "object",
|
|
46
|
+
properties: {
|
|
47
|
+
projectRoot: {
|
|
48
|
+
type: "string",
|
|
49
|
+
description: "Root directory of the project",
|
|
50
|
+
},
|
|
51
|
+
includeMetrics: {
|
|
52
|
+
type: "boolean",
|
|
53
|
+
default: true,
|
|
54
|
+
description: "Include detailed metrics",
|
|
55
|
+
},
|
|
56
|
+
maxDepth: {
|
|
57
|
+
type: "number",
|
|
58
|
+
default: 10,
|
|
59
|
+
description: "Maximum directory depth to analyze",
|
|
77
60
|
},
|
|
78
61
|
},
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
62
|
+
required: ["projectRoot"],
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: "dependency-analysis",
|
|
67
|
+
description: "Map component dependencies, identify coupling patterns, and assess architectural relationships",
|
|
68
|
+
inputSchema: {
|
|
69
|
+
type: "object",
|
|
70
|
+
properties: {
|
|
71
|
+
projectRoot: {
|
|
72
|
+
type: "string",
|
|
73
|
+
description: "Root directory of the project",
|
|
74
|
+
},
|
|
75
|
+
focusAreas: {
|
|
76
|
+
type: "array",
|
|
77
|
+
items: { type: "string" },
|
|
78
|
+
description: "Specific areas to focus dependency analysis on",
|
|
79
|
+
},
|
|
80
|
+
includeGraphs: {
|
|
81
|
+
type: "boolean",
|
|
82
|
+
default: true,
|
|
83
|
+
description: "Include dependency graphs in output",
|
|
101
84
|
},
|
|
102
85
|
},
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
86
|
+
required: ["projectRoot"],
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: "architecture-assessment",
|
|
91
|
+
description: "Evaluate overall architectural health with scores, issues, and improvement recommendations",
|
|
92
|
+
inputSchema: {
|
|
93
|
+
type: "object",
|
|
94
|
+
properties: {
|
|
95
|
+
projectRoot: {
|
|
96
|
+
type: "string",
|
|
97
|
+
description: "Root directory of the project",
|
|
98
|
+
},
|
|
99
|
+
assessmentType: {
|
|
100
|
+
type: "string",
|
|
101
|
+
enum: ["quick", "comprehensive"],
|
|
102
|
+
default: "comprehensive",
|
|
103
|
+
description: "Type of assessment to perform",
|
|
104
|
+
},
|
|
105
|
+
focusMetrics: {
|
|
106
|
+
type: "array",
|
|
107
|
+
items: {
|
|
108
|
+
type: "string",
|
|
109
|
+
enum: [
|
|
110
|
+
"complexity",
|
|
111
|
+
"coupling",
|
|
112
|
+
"cohesion",
|
|
113
|
+
"testability",
|
|
114
|
+
"scalability",
|
|
115
|
+
],
|
|
133
116
|
},
|
|
134
|
-
|
|
117
|
+
description: "Specific metrics to focus assessment on",
|
|
135
118
|
},
|
|
136
119
|
},
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
120
|
+
required: ["projectRoot"],
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
];
|
|
124
|
+
this.handlers = {
|
|
125
|
+
"context-analysis": async (args) => this.contextAnalysis(args),
|
|
126
|
+
"codebase-structure": async (args) => this.codebaseStructure(args),
|
|
127
|
+
"dependency-analysis": async (args) => this.dependencyAnalysis(args),
|
|
128
|
+
"architecture-assessment": async (args) => this.architectureAssessment(args),
|
|
129
|
+
};
|
|
130
|
+
this.setupToolHandlers();
|
|
131
|
+
frameworkLogger.log("mcps/architect-tools", "init", "info", { message: "0xRay Architect Tools MCP Server initialized" });
|
|
132
|
+
}
|
|
133
|
+
setupToolHandlers() {
|
|
134
|
+
this.setupListToolsHandler();
|
|
140
135
|
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
141
136
|
const { name, arguments: args } = request.params;
|
|
137
|
+
const handler = this.handlers[name];
|
|
138
|
+
if (!handler)
|
|
139
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
142
140
|
try {
|
|
143
|
-
|
|
144
|
-
case "context-analysis":
|
|
145
|
-
return await this.contextAnalysis(args);
|
|
146
|
-
case "codebase-structure":
|
|
147
|
-
return await this.codebaseStructure(args);
|
|
148
|
-
case "dependency-analysis":
|
|
149
|
-
return await this.dependencyAnalysis(args);
|
|
150
|
-
case "architecture-assessment":
|
|
151
|
-
return await this.architectureAssessment(args);
|
|
152
|
-
default:
|
|
153
|
-
throw new Error(`Unknown tool: ${name}`);
|
|
154
|
-
}
|
|
141
|
+
return await handler(args);
|
|
155
142
|
}
|
|
156
143
|
catch (error) {
|
|
157
144
|
frameworkLogger.log("mcps/architect-tools", "tool", "error", { tool: name, error: String(error) });
|
|
@@ -217,59 +204,6 @@ class XrayArchitectToolsServer {
|
|
|
217
204
|
],
|
|
218
205
|
};
|
|
219
206
|
}
|
|
220
|
-
async run() {
|
|
221
|
-
const transport = new StdioServerTransport();
|
|
222
|
-
await this.server.connect(transport);
|
|
223
|
-
frameworkLogger.log("mcps/architect-tools", "start", "info");
|
|
224
|
-
const cleanup = async (signal) => {
|
|
225
|
-
frameworkLogger.log("mcps/architect-tools", "shutdown", "info", { signal });
|
|
226
|
-
// Set a timeout to force exit if graceful shutdown fails
|
|
227
|
-
const timeout = setTimeout(() => {
|
|
228
|
-
frameworkLogger.log("mcps/architect-tools", "shutdown", "error", { message: "Graceful shutdown timeout, forcing exit..." });
|
|
229
|
-
process.exit(1);
|
|
230
|
-
}, 5000); // 5 second timeout
|
|
231
|
-
try {
|
|
232
|
-
if (this.server && typeof this.server.close === "function") {
|
|
233
|
-
await this.server.close();
|
|
234
|
-
}
|
|
235
|
-
clearTimeout(timeout);
|
|
236
|
-
frameworkLogger.log("mcps/architect-tools", "shutdown", "success");
|
|
237
|
-
process.exit(0);
|
|
238
|
-
}
|
|
239
|
-
catch (error) {
|
|
240
|
-
clearTimeout(timeout);
|
|
241
|
-
frameworkLogger.log("mcps/architect-tools", "shutdown", "error", { message: `Error during server shutdown: ${String(error)}` });
|
|
242
|
-
process.exit(1);
|
|
243
|
-
}
|
|
244
|
-
};
|
|
245
|
-
// Handle multiple shutdown signals
|
|
246
|
-
process.on("SIGINT", () => cleanup("SIGINT"));
|
|
247
|
-
process.on("SIGTERM", () => cleanup("SIGTERM"));
|
|
248
|
-
process.on("SIGHUP", () => cleanup("SIGHUP"));
|
|
249
|
-
// Monitor parent process (opencode) and shutdown if it dies
|
|
250
|
-
const checkParent = () => {
|
|
251
|
-
try {
|
|
252
|
-
process.kill(process.ppid, 0); // Check if parent is alive
|
|
253
|
-
setTimeout(checkParent, 1000); // Check again in 1 second
|
|
254
|
-
}
|
|
255
|
-
catch (error) {
|
|
256
|
-
// Parent process died, shut down gracefully
|
|
257
|
-
frameworkLogger.log("mcps/architect-tools", "parent-death", "info");
|
|
258
|
-
cleanup("parent-process-death");
|
|
259
|
-
}
|
|
260
|
-
};
|
|
261
|
-
// Start monitoring parent process
|
|
262
|
-
setTimeout(checkParent, 2000); // Start checking after 2 seconds
|
|
263
|
-
// Handle uncaught exceptions and unhandled rejections
|
|
264
|
-
process.on("uncaughtException", (error) => {
|
|
265
|
-
frameworkLogger.log("mcps/architect-tools", "uncaughtException", "error", { error: String(error) });
|
|
266
|
-
cleanup("uncaughtException");
|
|
267
|
-
});
|
|
268
|
-
process.on("unhandledRejection", (reason, promise) => {
|
|
269
|
-
frameworkLogger.log("mcps/architect-tools", "unhandledRejection", "error", { error: String(reason) });
|
|
270
|
-
cleanup("unhandledRejection");
|
|
271
|
-
});
|
|
272
|
-
}
|
|
273
207
|
}
|
|
274
208
|
if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {
|
|
275
209
|
const server = new XrayArchitectToolsServer();
|
|
@@ -3,87 +3,74 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Automated code formatting hook with Prettier and framework-specific formatters
|
|
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 { execFileSync } from "child_process";
|
|
10
9
|
import fs from "fs";
|
|
11
10
|
import { frameworkLogger } from "../core/framework-logger.js";
|
|
12
|
-
class XrayAutoFormatServer {
|
|
13
|
-
server;
|
|
11
|
+
class XrayAutoFormatServer extends XrayKnowledgeSkillBase {
|
|
14
12
|
constructor() {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
inputSchema: {
|
|
34
|
-
type: "object",
|
|
35
|
-
properties: {
|
|
36
|
-
files: {
|
|
37
|
-
type: "array",
|
|
38
|
-
items: { type: "string" },
|
|
39
|
-
description: "Specific files to format (optional - formats all if empty)",
|
|
40
|
-
},
|
|
41
|
-
formatters: {
|
|
42
|
-
type: "array",
|
|
43
|
-
items: {
|
|
44
|
-
type: "string",
|
|
45
|
-
enum: ["prettier", "eslint", "typescript", "all"],
|
|
46
|
-
},
|
|
47
|
-
default: ["all"],
|
|
48
|
-
description: "Formatters to apply",
|
|
49
|
-
},
|
|
50
|
-
checkOnly: {
|
|
51
|
-
type: "boolean",
|
|
52
|
-
default: false,
|
|
53
|
-
description: "Only check formatting without applying changes",
|
|
54
|
-
},
|
|
13
|
+
super("auto-format", "3.1.0");
|
|
14
|
+
this.tools = [
|
|
15
|
+
{
|
|
16
|
+
name: "auto-format",
|
|
17
|
+
description: "Automated code formatting hook with Prettier and framework-specific formatters",
|
|
18
|
+
inputSchema: {
|
|
19
|
+
type: "object",
|
|
20
|
+
properties: {
|
|
21
|
+
files: {
|
|
22
|
+
type: "array",
|
|
23
|
+
items: { type: "string" },
|
|
24
|
+
description: "Specific files to format (optional - formats all if empty)",
|
|
25
|
+
},
|
|
26
|
+
formatters: {
|
|
27
|
+
type: "array",
|
|
28
|
+
items: {
|
|
29
|
+
type: "string",
|
|
30
|
+
enum: ["prettier", "eslint", "typescript", "all"],
|
|
55
31
|
},
|
|
32
|
+
default: ["all"],
|
|
33
|
+
description: "Formatters to apply",
|
|
34
|
+
},
|
|
35
|
+
checkOnly: {
|
|
36
|
+
type: "boolean",
|
|
37
|
+
default: false,
|
|
38
|
+
description: "Only check formatting without applying changes",
|
|
56
39
|
},
|
|
57
40
|
},
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: "format-check",
|
|
45
|
+
description: "Check if code is properly formatted without making changes",
|
|
46
|
+
inputSchema: {
|
|
47
|
+
type: "object",
|
|
48
|
+
properties: {
|
|
49
|
+
files: {
|
|
50
|
+
type: "array",
|
|
51
|
+
items: { type: "string" },
|
|
52
|
+
description: "Files to check formatting for",
|
|
70
53
|
},
|
|
71
54
|
},
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
];
|
|
58
|
+
this.handlers = {
|
|
59
|
+
"auto-format": async (args) => this.handleAutoFormat(args),
|
|
60
|
+
"format-check": async (args) => this.handleFormatCheck(args),
|
|
61
|
+
};
|
|
62
|
+
this.setupToolHandlers();
|
|
63
|
+
frameworkLogger.log("mcps/auto-format", "initialize", "info");
|
|
64
|
+
}
|
|
65
|
+
setupToolHandlers() {
|
|
66
|
+
this.setupListToolsHandler();
|
|
76
67
|
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
77
68
|
const { name, arguments: args } = request.params;
|
|
69
|
+
const handler = this.handlers[name];
|
|
70
|
+
if (!handler)
|
|
71
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
78
72
|
try {
|
|
79
|
-
|
|
80
|
-
case "auto-format":
|
|
81
|
-
return await this.handleAutoFormat(args);
|
|
82
|
-
case "format-check":
|
|
83
|
-
return await this.handleFormatCheck(args);
|
|
84
|
-
default:
|
|
85
|
-
throw new Error(`Unknown tool: ${name}`);
|
|
86
|
-
}
|
|
73
|
+
return await handler(args);
|
|
87
74
|
}
|
|
88
75
|
catch (error) {
|
|
89
76
|
frameworkLogger.log("mcps/auto-format", "tool-call", "error", {
|
|
@@ -399,11 +386,6 @@ ${checkResults.details.map((d) => `• ${d}`).join("\n")}
|
|
|
399
386
|
- Errors: ${errorCount}
|
|
400
387
|
- Formatters Applied: ${Object.keys(results.changes).length}`;
|
|
401
388
|
}
|
|
402
|
-
async run() {
|
|
403
|
-
const transport = new StdioServerTransport();
|
|
404
|
-
await this.server.connect(transport);
|
|
405
|
-
frameworkLogger.log("mcps/auto-format", "start", "info");
|
|
406
|
-
}
|
|
407
389
|
}
|
|
408
390
|
// Start the server if run directly
|
|
409
391
|
if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {
|