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
|
@@ -5,16 +5,10 @@
|
|
|
5
5
|
* and pattern recognition - provides deep project intelligence
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
9
|
-
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
10
|
-
import {
|
|
11
|
-
CallToolRequestSchema,
|
|
12
|
-
ListToolsRequestSchema,
|
|
13
|
-
type CallToolResult,
|
|
14
|
-
} from "@modelcontextprotocol/sdk/types.js";
|
|
15
8
|
import * as fs from "fs";
|
|
16
9
|
import * as path from "path";
|
|
17
10
|
import { frameworkLogger } from "../../core/framework-logger.js";
|
|
11
|
+
import { XrayKnowledgeSkillBase } from "../shared/knowledge-skill-base.js";
|
|
18
12
|
|
|
19
13
|
interface ProjectMetrics {
|
|
20
14
|
totalFiles: number;
|
|
@@ -136,30 +130,10 @@ interface McpToolResponse {
|
|
|
136
130
|
content: Array<{ type: "text"; text: string }>;
|
|
137
131
|
}
|
|
138
132
|
|
|
139
|
-
class ProjectAnalysisServer {
|
|
140
|
-
private server: Server;
|
|
141
|
-
|
|
133
|
+
class ProjectAnalysisServer extends XrayKnowledgeSkillBase {
|
|
142
134
|
constructor() {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
name: "project-analysis", version: "3.1.0",
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
capabilities: {
|
|
149
|
-
tools: {},
|
|
150
|
-
},
|
|
151
|
-
},
|
|
152
|
-
);
|
|
153
|
-
|
|
154
|
-
this.setupToolHandlers();
|
|
155
|
-
// Server initialization - removed unnecessary startup logging
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
private setupToolHandlers() {
|
|
159
|
-
// List available tools
|
|
160
|
-
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
161
|
-
return {
|
|
162
|
-
tools: [
|
|
135
|
+
super("project-analysis", "3.1.0");
|
|
136
|
+
this.tools = [
|
|
163
137
|
{
|
|
164
138
|
name: "analyze-project-structure",
|
|
165
139
|
description:
|
|
@@ -295,34 +269,15 @@ class ProjectAnalysisServer {
|
|
|
295
269
|
required: ["proposalTitle", "proposalDescription"],
|
|
296
270
|
},
|
|
297
271
|
},
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
switch (name) {
|
|
308
|
-
case "analyze-project-structure":
|
|
309
|
-
return await this.analyzeProjectStructure(args as unknown as AnalyzeProjectStructureArgs) as CallToolResult;
|
|
310
|
-
case "assess-project-complexity":
|
|
311
|
-
return await this.assessProjectComplexity(args as unknown as AssessProjectComplexityArgs) as CallToolResult;
|
|
312
|
-
case "identify-project-patterns":
|
|
313
|
-
return await this.identifyProjectPatterns(args as unknown as IdentifyProjectPatternsArgs) as CallToolResult;
|
|
314
|
-
case "analyze-project-health":
|
|
315
|
-
return await this.analyzeProjectHealth(args as unknown as AnalyzeProjectHealthArgs) as CallToolResult;
|
|
316
|
-
case "analyze_proposal":
|
|
317
|
-
return await this.analyzeProposal(args as any) as CallToolResult;
|
|
318
|
-
default:
|
|
319
|
-
throw new Error(`Unknown tool: ${name}`);
|
|
320
|
-
}
|
|
321
|
-
} catch (error) {
|
|
322
|
-
frameworkLogger.log("mcps/project-analysis", "tool", "error", { tool: name, error: String(error) });
|
|
323
|
-
throw error;
|
|
324
|
-
}
|
|
325
|
-
});
|
|
272
|
+
];
|
|
273
|
+
this.handlers = {
|
|
274
|
+
"analyze-project-structure": async (args) => this.analyzeProjectStructure(args as unknown as AnalyzeProjectStructureArgs),
|
|
275
|
+
"assess-project-complexity": async (args) => this.assessProjectComplexity(args as unknown as AssessProjectComplexityArgs),
|
|
276
|
+
"identify-project-patterns": async (args) => this.identifyProjectPatterns(args as unknown as IdentifyProjectPatternsArgs),
|
|
277
|
+
"analyze-project-health": async (args) => this.analyzeProjectHealth(args as unknown as AnalyzeProjectHealthArgs),
|
|
278
|
+
"analyze_proposal": async (args) => this.analyzeProposal(args as any),
|
|
279
|
+
};
|
|
280
|
+
this.setupToolHandlers();
|
|
326
281
|
}
|
|
327
282
|
|
|
328
283
|
private async analyzeProjectStructure(args: AnalyzeProjectStructureArgs): Promise<McpToolResponse> {
|
|
@@ -1037,69 +992,7 @@ class ProjectAnalysisServer {
|
|
|
1037
992
|
};
|
|
1038
993
|
}
|
|
1039
994
|
|
|
1040
|
-
async run(): Promise<void> {
|
|
1041
|
-
const transport = new StdioServerTransport();
|
|
1042
|
-
await this.server.connect(transport);
|
|
1043
|
-
await frameworkLogger.log(
|
|
1044
|
-
"mcp-project-analysis",
|
|
1045
|
-
"server-started",
|
|
1046
|
-
"success",
|
|
1047
|
-
);
|
|
1048
|
-
|
|
1049
|
-
const cleanup = async (signal: string) => {
|
|
1050
|
-
frameworkLogger.log("mcps/project-analysis", "shutdown", "info", { signal });
|
|
1051
|
-
|
|
1052
|
-
// Set a timeout to force exit if graceful shutdown fails
|
|
1053
|
-
const timeout = setTimeout(() => {
|
|
1054
|
-
frameworkLogger.log("mcps/project-analysis", "shutdown", "error", { message: "Graceful shutdown timeout, forcing exit..." });
|
|
1055
|
-
process.exit(1);
|
|
1056
|
-
}, 5000); // 5 second timeout
|
|
1057
|
-
|
|
1058
|
-
try {
|
|
1059
|
-
if (this.server && typeof this.server.close === "function") {
|
|
1060
|
-
await this.server.close();
|
|
1061
|
-
}
|
|
1062
|
-
clearTimeout(timeout);
|
|
1063
|
-
frameworkLogger.log("mcps/project-analysis", "shutdown", "success");
|
|
1064
|
-
process.exit(0);
|
|
1065
|
-
} catch (error) {
|
|
1066
|
-
clearTimeout(timeout);
|
|
1067
|
-
frameworkLogger.log("mcps/project-analysis", "shutdown", "error", { message: `Error during server shutdown: ${String(error)}` });
|
|
1068
|
-
process.exit(1);
|
|
1069
|
-
}
|
|
1070
|
-
};
|
|
1071
|
-
|
|
1072
|
-
// Handle multiple shutdown signals
|
|
1073
|
-
process.on("SIGINT", () => cleanup("SIGINT"));
|
|
1074
|
-
process.on("SIGTERM", () => cleanup("SIGTERM"));
|
|
1075
|
-
process.on("SIGHUP", () => cleanup("SIGHUP"));
|
|
1076
995
|
|
|
1077
|
-
// Monitor parent process (opencode) and shutdown if it dies
|
|
1078
|
-
const checkParent = () => {
|
|
1079
|
-
try {
|
|
1080
|
-
process.kill(process.ppid, 0); // Check if parent is alive
|
|
1081
|
-
setTimeout(checkParent, 1000); // Check again in 1 second
|
|
1082
|
-
} catch (error) {
|
|
1083
|
-
// Parent process died, shut down gracefully
|
|
1084
|
-
frameworkLogger.log("mcps/project-analysis", "parent-death", "info");
|
|
1085
|
-
cleanup("parent-process-death");
|
|
1086
|
-
}
|
|
1087
|
-
};
|
|
1088
|
-
|
|
1089
|
-
// Start monitoring parent process
|
|
1090
|
-
setTimeout(checkParent, 2000); // Start checking after 2 seconds
|
|
1091
|
-
|
|
1092
|
-
// Handle uncaught exceptions and unhandled rejections
|
|
1093
|
-
process.on("uncaughtException", (error) => {
|
|
1094
|
-
frameworkLogger.log("mcps/project-analysis", "uncaughtException", "error", { error: String(error) });
|
|
1095
|
-
cleanup("uncaughtException");
|
|
1096
|
-
});
|
|
1097
|
-
|
|
1098
|
-
process.on("unhandledRejection", (reason, promise) => {
|
|
1099
|
-
frameworkLogger.log("mcps/project-analysis", "unhandledRejection", "error", { error: String(reason) });
|
|
1100
|
-
cleanup("unhandledRejection");
|
|
1101
|
-
});
|
|
1102
|
-
}
|
|
1103
996
|
}
|
|
1104
997
|
|
|
1105
998
|
// Start the server if run directly
|
|
@@ -5,16 +5,9 @@
|
|
|
5
5
|
* modernization, and code improvement patterns
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
9
|
-
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
10
8
|
import * as fs from "fs";
|
|
11
9
|
import { frameworkLogger } from "../../core/framework-logger.js";
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
CallToolRequestSchema,
|
|
15
|
-
ListToolsRequestSchema,
|
|
16
|
-
type CallToolResult,
|
|
17
|
-
} from "@modelcontextprotocol/sdk/types.js";
|
|
10
|
+
import { XrayKnowledgeSkillBase } from "../shared/knowledge-skill-base.js";
|
|
18
11
|
|
|
19
12
|
interface RefactoringOpportunity {
|
|
20
13
|
type:
|
|
@@ -155,29 +148,10 @@ interface RollbackPlan {
|
|
|
155
148
|
emergencyProcedures: string[];
|
|
156
149
|
}
|
|
157
150
|
|
|
158
|
-
class XrayRefactoringStrategiesServer {
|
|
159
|
-
private server: Server;
|
|
160
|
-
|
|
151
|
+
class XrayRefactoringStrategiesServer extends XrayKnowledgeSkillBase {
|
|
161
152
|
constructor() {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
name: "refactoring-strategies", version: "3.1.0",
|
|
165
|
-
},
|
|
166
|
-
{
|
|
167
|
-
capabilities: {
|
|
168
|
-
tools: {},
|
|
169
|
-
},
|
|
170
|
-
},
|
|
171
|
-
);
|
|
172
|
-
|
|
173
|
-
this.setupToolHandlers();
|
|
174
|
-
// Server initialization - removed unnecessary startup logging
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
private setupToolHandlers() {
|
|
178
|
-
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
179
|
-
return {
|
|
180
|
-
tools: [
|
|
153
|
+
super("refactoring-strategies", "3.1.0");
|
|
154
|
+
this.tools = [
|
|
181
155
|
{
|
|
182
156
|
name: "analyze_technical_debt",
|
|
183
157
|
description:
|
|
@@ -296,26 +270,14 @@ class XrayRefactoringStrategiesServer {
|
|
|
296
270
|
required: ["codePath"],
|
|
297
271
|
},
|
|
298
272
|
},
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
case "analyze_technical_debt":
|
|
308
|
-
return await this.analyzeTechnicalDebt(args as unknown as AnalyzeTechnicalDebtArgs) as CallToolResult;
|
|
309
|
-
case "suggest_refactoring":
|
|
310
|
-
return await this.suggestRefactoring(args as unknown as SuggestRefactoringArgs) as CallToolResult;
|
|
311
|
-
case "generate_refactoring_plan":
|
|
312
|
-
return await this.generateRefactoringPlan(args as unknown as GenerateRefactoringPlanArgs) as CallToolResult;
|
|
313
|
-
case "modernize_codebase":
|
|
314
|
-
return await this.modernizeCodebase(args as unknown as ModernizeCodebaseArgs) as CallToolResult;
|
|
315
|
-
default:
|
|
316
|
-
throw new Error(`Unknown tool: ${name}`);
|
|
317
|
-
}
|
|
318
|
-
});
|
|
273
|
+
];
|
|
274
|
+
this.handlers = {
|
|
275
|
+
"analyze_technical_debt": async (args) => this.analyzeTechnicalDebt(args as unknown as AnalyzeTechnicalDebtArgs),
|
|
276
|
+
"suggest_refactoring": async (args) => this.suggestRefactoring(args as unknown as SuggestRefactoringArgs),
|
|
277
|
+
"generate_refactoring_plan": async (args) => this.generateRefactoringPlan(args as unknown as GenerateRefactoringPlanArgs),
|
|
278
|
+
"modernize_codebase": async (args) => this.modernizeCodebase(args as unknown as ModernizeCodebaseArgs),
|
|
279
|
+
};
|
|
280
|
+
this.setupToolHandlers();
|
|
319
281
|
}
|
|
320
282
|
|
|
321
283
|
private async analyzeTechnicalDebt(args: AnalyzeTechnicalDebtArgs) {
|
|
@@ -1072,16 +1034,7 @@ class XrayRefactoringStrategiesServer {
|
|
|
1072
1034
|
return icons[effort as keyof typeof icons] || "❓";
|
|
1073
1035
|
}
|
|
1074
1036
|
|
|
1075
|
-
|
|
1076
|
-
const transport = new StdioServerTransport();
|
|
1077
|
-
await this.server.connect(transport);
|
|
1078
|
-
|
|
1079
|
-
// Use centralized shutdown handler
|
|
1080
|
-
createGracefulShutdown({
|
|
1081
|
-
serverName: "refactoring-strategies.server",
|
|
1082
|
-
server: this.server,
|
|
1083
|
-
});
|
|
1084
|
-
}
|
|
1037
|
+
|
|
1085
1038
|
}
|
|
1086
1039
|
|
|
1087
1040
|
// Run the server if this file is executed directly
|
|
@@ -5,16 +5,9 @@
|
|
|
5
5
|
* and compliance validation - ensures production-ready security posture
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
9
|
-
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
10
|
-
import {
|
|
11
|
-
CallToolRequestSchema,
|
|
12
|
-
ListToolsRequestSchema,
|
|
13
|
-
type CallToolResult,
|
|
14
|
-
} from "@modelcontextprotocol/sdk/types.js";
|
|
15
8
|
import * as fs from "fs";
|
|
16
9
|
import * as path from "path";
|
|
17
|
-
import {
|
|
10
|
+
import { XrayKnowledgeSkillBase } from "../shared/knowledge-skill-base.js";
|
|
18
11
|
import { tryLLMGovernance } from "../../governance/llm-governance-provider.js";
|
|
19
12
|
|
|
20
13
|
interface SecurityVulnerability {
|
|
@@ -85,151 +78,29 @@ interface AnalyzeProposalArgs {
|
|
|
85
78
|
proposalType?: string;
|
|
86
79
|
}
|
|
87
80
|
|
|
88
|
-
class XraySecurityAuditServer {
|
|
89
|
-
private server: Server;
|
|
81
|
+
class XraySecurityAuditServer extends XrayKnowledgeSkillBase {
|
|
90
82
|
|
|
91
83
|
constructor() {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
84
|
+
super("security-audit", "3.1.0");
|
|
85
|
+
|
|
86
|
+
this.tools = [
|
|
87
|
+
{ name: "audit_security", description: "Perform comprehensive security audit on codebase files", inputSchema: { type: "object", properties: { files: { type: "array", items: { type: "string" }, description: "List of file paths to audit" }, includeDependencies: { type: "boolean", description: "Include dependency vulnerability analysis", default: true }, complianceFrameworks: { type: "array", items: { type: "string", enum: ["owasp-top-10", "nist", "iso-27001", "pci-dss"] }, description: "Compliance frameworks to check against" } }, required: ["files"] } },
|
|
88
|
+
{ name: "check_vulnerability", description: "Check specific security vulnerability patterns in a file", inputSchema: { type: "object", properties: { filePath: { type: "string", description: "Path to the file to check" }, vulnerabilityType: { type: "string", enum: ["injection", "authentication", "authorization", "cryptography", "xss", "csrf", "secrets", "configuration"] }, severity: { type: "string", enum: ["critical", "high", "medium", "low", "info"], description: "Minimum severity level to report" } }, required: ["filePath", "vulnerabilityType"] } },
|
|
89
|
+
{ name: "generate_security_report", description: "Generate comprehensive security report with remediation steps", inputSchema: { type: "object", properties: { auditResults: { type: "object", description: "Results from audit_security tool" }, format: { type: "string", enum: ["markdown", "json", "html"], default: "markdown" }, includeRemediation: { type: "boolean", default: true } }, required: ["auditResults"] } },
|
|
90
|
+
{ name: "analyze_proposal", description: "Analyze an inference proposal (pattern/bug/refactor) from a security perspective and return a structured governance decision", inputSchema: { type: "object", properties: { proposalTitle: { type: "string" }, proposalDescription: { type: "string" }, evidence: { type: "array", items: { type: "string" } }, proposalType: { type: "string" } }, required: ["proposalTitle", "proposalDescription"] } },
|
|
91
|
+
];
|
|
92
|
+
|
|
93
|
+
this.handlers = {
|
|
94
|
+
audit_security: async (args) => this.auditSecurity(args as AuditSecurityArgs),
|
|
95
|
+
check_vulnerability: async (args) => this.checkVulnerability(args as CheckVulnerabilityArgs),
|
|
96
|
+
generate_security_report: async (args) => this.generateSecurityReport(args as GenerateSecurityReportArgs),
|
|
97
|
+
analyze_proposal: async (args) => this.analyzeProposal(args as AnalyzeProposalArgs),
|
|
98
|
+
};
|
|
102
99
|
|
|
103
100
|
this.setupToolHandlers();
|
|
104
|
-
// Server initialization - removed unnecessary startup logging
|
|
105
101
|
}
|
|
106
102
|
|
|
107
|
-
|
|
108
|
-
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
109
|
-
return {
|
|
110
|
-
tools: [
|
|
111
|
-
{
|
|
112
|
-
name: "audit_security",
|
|
113
|
-
description:
|
|
114
|
-
"Perform comprehensive security audit on codebase files",
|
|
115
|
-
inputSchema: {
|
|
116
|
-
type: "object",
|
|
117
|
-
properties: {
|
|
118
|
-
files: {
|
|
119
|
-
type: "array",
|
|
120
|
-
items: { type: "string" },
|
|
121
|
-
description: "List of file paths to audit",
|
|
122
|
-
},
|
|
123
|
-
includeDependencies: {
|
|
124
|
-
type: "boolean",
|
|
125
|
-
description: "Include dependency vulnerability analysis",
|
|
126
|
-
default: true,
|
|
127
|
-
},
|
|
128
|
-
complianceFrameworks: {
|
|
129
|
-
type: "array",
|
|
130
|
-
items: {
|
|
131
|
-
type: "string",
|
|
132
|
-
enum: ["owasp-top-10", "nist", "iso-27001", "pci-dss"],
|
|
133
|
-
},
|
|
134
|
-
description: "Compliance frameworks to check against",
|
|
135
|
-
},
|
|
136
|
-
},
|
|
137
|
-
required: ["files"],
|
|
138
|
-
},
|
|
139
|
-
},
|
|
140
|
-
{
|
|
141
|
-
name: "check_vulnerability",
|
|
142
|
-
description:
|
|
143
|
-
"Check specific security vulnerability patterns in a file",
|
|
144
|
-
inputSchema: {
|
|
145
|
-
type: "object",
|
|
146
|
-
properties: {
|
|
147
|
-
filePath: {
|
|
148
|
-
type: "string",
|
|
149
|
-
description: "Path to the file to check",
|
|
150
|
-
},
|
|
151
|
-
vulnerabilityType: {
|
|
152
|
-
type: "string",
|
|
153
|
-
enum: [
|
|
154
|
-
"injection",
|
|
155
|
-
"authentication",
|
|
156
|
-
"authorization",
|
|
157
|
-
"cryptography",
|
|
158
|
-
"xss",
|
|
159
|
-
"csrf",
|
|
160
|
-
"secrets",
|
|
161
|
-
"configuration",
|
|
162
|
-
],
|
|
163
|
-
},
|
|
164
|
-
severity: {
|
|
165
|
-
type: "string",
|
|
166
|
-
enum: ["critical", "high", "medium", "low", "info"],
|
|
167
|
-
description: "Minimum severity level to report",
|
|
168
|
-
},
|
|
169
|
-
},
|
|
170
|
-
required: ["filePath", "vulnerabilityType"],
|
|
171
|
-
},
|
|
172
|
-
},
|
|
173
|
-
{
|
|
174
|
-
name: "generate_security_report",
|
|
175
|
-
description:
|
|
176
|
-
"Generate comprehensive security report with remediation steps",
|
|
177
|
-
inputSchema: {
|
|
178
|
-
type: "object",
|
|
179
|
-
properties: {
|
|
180
|
-
auditResults: {
|
|
181
|
-
type: "object",
|
|
182
|
-
description: "Results from audit_security tool",
|
|
183
|
-
},
|
|
184
|
-
format: {
|
|
185
|
-
type: "string",
|
|
186
|
-
enum: ["markdown", "json", "html"],
|
|
187
|
-
default: "markdown",
|
|
188
|
-
},
|
|
189
|
-
includeRemediation: {
|
|
190
|
-
type: "boolean",
|
|
191
|
-
default: true,
|
|
192
|
-
},
|
|
193
|
-
},
|
|
194
|
-
required: ["auditResults"],
|
|
195
|
-
},
|
|
196
|
-
},
|
|
197
|
-
{
|
|
198
|
-
name: "analyze_proposal",
|
|
199
|
-
description:
|
|
200
|
-
"Analyze an inference proposal (pattern/bug/refactor) from a security perspective and return a structured governance decision",
|
|
201
|
-
inputSchema: {
|
|
202
|
-
type: "object",
|
|
203
|
-
properties: {
|
|
204
|
-
proposalTitle: { type: "string" },
|
|
205
|
-
proposalDescription: { type: "string" },
|
|
206
|
-
evidence: { type: "array", items: { type: "string" } },
|
|
207
|
-
proposalType: { type: "string" },
|
|
208
|
-
},
|
|
209
|
-
required: ["proposalTitle", "proposalDescription"],
|
|
210
|
-
},
|
|
211
|
-
},
|
|
212
|
-
],
|
|
213
|
-
};
|
|
214
|
-
});
|
|
215
|
-
|
|
216
|
-
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
217
|
-
const { name, arguments: args } = request.params;
|
|
218
|
-
|
|
219
|
-
switch (name) {
|
|
220
|
-
case "audit_security":
|
|
221
|
-
return await this.auditSecurity(args as unknown as AuditSecurityArgs);
|
|
222
|
-
case "check_vulnerability":
|
|
223
|
-
return await this.checkVulnerability(args as unknown as CheckVulnerabilityArgs);
|
|
224
|
-
case "generate_security_report":
|
|
225
|
-
return await this.generateSecurityReport(args as unknown as GenerateSecurityReportArgs);
|
|
226
|
-
case "analyze_proposal":
|
|
227
|
-
return await this.analyzeProposal(args as AnalyzeProposalArgs) as CallToolResult;
|
|
228
|
-
default:
|
|
229
|
-
throw new Error(`Unknown tool: ${name}`);
|
|
230
|
-
}
|
|
231
|
-
});
|
|
232
|
-
}
|
|
103
|
+
// setupToolHandlers removed — handled by XrayKnowledgeSkillBase via this.tools + this.handlers
|
|
233
104
|
|
|
234
105
|
private async auditSecurity(args: AuditSecurityArgs) {
|
|
235
106
|
const {
|
|
@@ -1153,16 +1024,7 @@ class XraySecurityAuditServer {
|
|
|
1153
1024
|
};
|
|
1154
1025
|
}
|
|
1155
1026
|
|
|
1156
|
-
|
|
1157
|
-
const transport = new StdioServerTransport();
|
|
1158
|
-
await this.server.connect(transport);
|
|
1159
|
-
|
|
1160
|
-
// Use centralized shutdown handler
|
|
1161
|
-
createGracefulShutdown({
|
|
1162
|
-
serverName: "security-audit.server",
|
|
1163
|
-
server: this.server,
|
|
1164
|
-
});
|
|
1165
|
-
}
|
|
1027
|
+
// run() removed — handled by XrayKnowledgeSkillBase
|
|
1166
1028
|
}
|
|
1167
1029
|
|
|
1168
1030
|
// Run the server if this file is executed directly
|