0xray 3.1.0 → 3.1.1
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/.gitignore.default +59 -0
- package/.mcp.json +35 -0
- package/.opencode/codex.codex +1 -1
- package/.opencode/commands/dependency-audit.md +3 -3
- package/.opencode/commands/summary-logger.md +4 -4
- package/.opencode/enforcer-config.json +2 -2
- package/.opencode/hooks/post-commit +1 -1
- package/.opencode/init.sh +6 -0
- package/.plugin/plugin.json +11 -0
- package/AGENTS-consumer.md +46 -0
- package/AGENTS.md +8 -8
- package/LICENSE +1 -1
- package/README.md +8 -8
- package/SKILLS.md +140 -0
- package/dist/.gitignore.default +59 -0
- package/dist/AGENTS.md +8 -8
- package/dist/CHANGELOG.md +25 -0
- package/dist/LICENSE +1 -1
- package/dist/README.md +8 -8
- package/dist/SKILLS.md +140 -0
- package/dist/agents/index.js +3 -1
- package/dist/agents/registry.js +13 -0
- package/dist/analytics/routing-refiner.js +1 -1
- package/dist/architect/architectural-integrity.js +3 -3
- package/dist/benchmark/performance-benchmark.js +1 -2
- package/dist/cli/commands/antigravity-status.js +23 -23
- package/dist/cli/commands/credible-init.js +1 -1
- package/dist/cli/commands/hermes-install.js +8 -0
- package/dist/cli/commands/mcp-install.js +1 -1
- package/dist/cli/commands/openclaw-install.js +9 -0
- package/dist/cli/commands/opencode-install.js +22 -0
- package/dist/cli/commands/skill-install.js +39 -2
- package/dist/cli/commands/status.js +5 -0
- package/dist/cli/commands/storyteller.js +1 -1
- package/dist/cli/index.js +12 -6
- package/dist/core/activity-logger.js +4 -4
- package/dist/core/agent-spawn-gate.js +1 -1
- package/dist/core/boot-orchestrator.js +12 -13
- package/dist/core/bridge.mjs +4 -4
- package/dist/core/codex-formatter.js +1 -2
- package/dist/core/codex-injector.js +3 -3
- package/dist/core/config-loader.js +1 -2
- package/dist/core/config-paths.js +30 -23
- package/dist/core/context-loader.js +0 -3
- package/dist/core/features-config.js +1 -1
- package/dist/core/index.js +2 -2
- package/dist/core/logging-config.js +7 -7
- package/dist/core/orchestrator.js +1 -1
- package/dist/core/xray-activation.js +3 -4
- package/dist/delegation/agent-delegator.js +2 -2
- package/dist/enforcement/enforcer-tools.js +2 -2
- package/dist/enforcement/loaders/codex-loader.js +2 -2
- package/dist/execution/opencode-cli-invoker.js +1 -1
- package/dist/governance/governance-service.js +1 -1
- package/dist/governance/llm-governance-provider.js +14 -1
- package/dist/index.js +3 -5
- package/dist/inference/inference-cycle.js +11 -11
- package/dist/integrations/base/README.md +1 -1
- package/dist/integrations/enforcement-gate.js +2 -2
- package/dist/integrations/governance/index.js +1 -1
- package/dist/integrations/grok/grok-cli.js +20 -6
- package/dist/integrations/grok/hooks/pre-tool-use.js +3 -3
- package/dist/integrations/grok/plugin/0xray/.mcp.json +16 -4
- package/dist/integrations/grok/plugin/0xray/hooks/hooks.json +2 -2
- package/dist/integrations/hermes-agent/__init__.py +25 -14
- package/dist/integrations/hermes-agent/bridge.mjs +39 -4
- package/dist/integrations/hermes-agent/schemas.py +49 -0
- package/dist/integrations/hermes-agent/test_plugin.py +7 -7
- package/dist/integrations/hermes-agent/tools.py +107 -3
- package/dist/integrations/openclaw/README.md +6 -6
- package/dist/integrations/openclaw/config.js +1 -1
- package/dist/integrations/openclaw/index.js +2 -2
- package/dist/integrations/openclaw/types.js +3 -3
- package/dist/integrations/plugins/plugin-integration.js +1 -1
- package/dist/integrations/plugins/plugin-registry.js +1 -1
- package/dist/mcps/architect-tools.server.js +3 -2
- package/dist/mcps/auto-format.server.js +2 -2
- package/dist/mcps/boot-orchestrator.server.js +2 -2
- package/dist/mcps/config/config-loader.js +40 -9
- package/dist/mcps/enforcer-tools.server.js +2 -2
- package/dist/mcps/estimation.server.js +3 -2
- package/dist/mcps/framework-compliance-audit.server.js +2 -2
- package/dist/mcps/framework-help.server.js +3 -2
- package/dist/mcps/governance.server.js +8 -4
- package/dist/mcps/knowledge-skills/api-design.server.js +3 -2
- package/dist/mcps/knowledge-skills/architecture-patterns.server.js +3 -2
- package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +3 -3
- package/dist/mcps/knowledge-skills/code-analyzer.server.js +2 -2
- package/dist/mcps/knowledge-skills/code-review.server.js +2 -2
- package/dist/mcps/knowledge-skills/content-creator.server.js +3 -3
- package/dist/mcps/knowledge-skills/database-design.server.js +2 -2
- package/dist/mcps/knowledge-skills/devops-deployment.server.js +3 -2
- package/dist/mcps/knowledge-skills/git-workflow.server.js +3 -2
- package/dist/mcps/knowledge-skills/growth-strategist.server.js +3 -3
- package/dist/mcps/knowledge-skills/log-monitor.server.js +3 -3
- package/dist/mcps/knowledge-skills/mobile-development.server.js +3 -3
- package/dist/mcps/knowledge-skills/multimodal-looker.server.js +3 -3
- package/dist/mcps/knowledge-skills/performance-optimization.server.js +2 -2
- package/dist/mcps/knowledge-skills/project-analysis.server.js +2 -2
- package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +3 -2
- package/dist/mcps/knowledge-skills/security-audit.server.js +2 -2
- package/dist/mcps/knowledge-skills/seo-consultant.server.js +3 -2
- package/dist/mcps/knowledge-skills/session-management.server.js +3 -2
- package/dist/mcps/knowledge-skills/skill-invocation.server.js +105 -3
- package/dist/mcps/knowledge-skills/strategist.server.js +3 -3
- package/dist/mcps/knowledge-skills/tech-writer.server.js +3 -3
- package/dist/mcps/knowledge-skills/testing-best-practices.server.js +3 -2
- package/dist/mcps/knowledge-skills/testing-strategy.server.js +2 -2
- package/dist/mcps/knowledge-skills/ui-ux-design.server.js +3 -2
- package/dist/mcps/lint.server.js +2 -2
- package/dist/mcps/model-health-check.server.js +3 -2
- package/dist/mcps/orchestrator/server.js +2 -1
- package/dist/mcps/orchestrator.server.js +2 -1
- package/dist/mcps/performance-analysis.server.js +2 -2
- package/dist/mcps/processor-pipeline.server.js +3 -2
- package/dist/mcps/registry.json +1 -1
- package/dist/mcps/researcher.server.js +2 -2
- package/dist/mcps/security-scan.server.js +2 -2
- package/dist/mcps/state-manager.server.js +5 -5
- package/dist/metrics/agent-metrics.js +1 -1
- package/dist/orchestrator/enhanced-multi-agent-orchestrator.js +2 -2
- package/dist/orchestrator/intelligent-commit-batcher.js +0 -1
- package/dist/orchestrator/multi-agent-orchestration-coordinator.js +1 -1
- package/dist/orchestrator/orchestrator.js +1 -2
- package/dist/orchestrator/universal-registry-bridge.js +1 -1
- package/dist/postprocessor/PostProcessor.js +5 -5
- package/dist/postprocessor/services/RegressionAnalysisService.js +2 -2
- package/dist/postprocessor/triggers/GitHookTrigger.js +4 -4
- package/dist/processors/implementations/inference-improvement-processor.js +0 -1
- package/dist/processors/implementations/publish-preflight-processor.js +0 -1
- package/dist/processors/implementations/session-summary-processor.js +2 -2
- package/dist/processors/implementations/storytelling-trigger-processor.js +0 -1
- package/dist/public/about.html +6 -6
- package/dist/public/enterprise.html +1 -1
- package/dist/public/features.html +2 -2
- package/dist/public/index.html +4 -4
- package/dist/reporting/report-formatter.js +1 -1
- package/dist/scripts/activate-kernel-pipeline.js +2 -2
- package/dist/scripts/pre-command +1 -1
- package/dist/services/inference-tuner.js +1 -1
- package/dist/skills/api-design/SKILL.md +1 -1
- package/dist/skills/architect-tools/SKILL.md +1 -1
- package/dist/skills/architecture-patterns/SKILL.md +1 -1
- package/dist/skills/auto-format/SKILL.md +1 -1
- package/dist/skills/boot-orchestrator/SKILL.md +1 -1
- package/dist/skills/bug-triage/SKILL.md +1 -1
- package/dist/skills/code-analyzer/SKILL.md +1 -1
- package/dist/skills/code-review/SKILL.md +1 -1
- package/dist/skills/enforcer/SKILL.md +1 -1
- package/dist/skills/framework-compliance-audit/SKILL.md +1 -1
- package/dist/skills/git-workflow/SKILL.md +1 -1
- package/dist/skills/hermes-agent/SKILL.md +2 -2
- package/dist/skills/inference-improve/SKILL.md +1 -1
- package/dist/skills/lint/SKILL.md +1 -1
- package/dist/skills/log-monitor/SKILL.md +1 -1
- package/dist/skills/model-health-check/SKILL.md +1 -1
- package/dist/skills/multimodal-looker/SKILL.md +1 -1
- package/dist/skills/orchestrator/SKILL.md +1 -1
- package/dist/skills/performance-analysis/SKILL.md +1 -1
- package/dist/skills/performance-optimization/SKILL.md +1 -1
- package/dist/skills/processor-pipeline/SKILL.md +1 -1
- package/dist/skills/project-analysis/SKILL.md +1 -1
- package/dist/skills/refactoring-strategies/SKILL.md +1 -1
- package/dist/skills/registry.json +1 -1
- package/dist/skills/researcher/SKILL.md +1 -1
- package/dist/skills/security-audit/SKILL.md +1 -1
- package/dist/skills/security-scan/SKILL.md +1 -1
- package/dist/skills/session-management/SKILL.md +1 -1
- package/dist/skills/state-manager/SKILL.md +1 -1
- package/dist/skills/storyteller/SKILL.md +1 -1
- package/dist/skills/testing-best-practices/SKILL.md +1 -1
- package/dist/skills/testing-strategy/SKILL.md +1 -1
- package/dist/skills/ui-ux-design/SKILL.md +1 -1
- package/dist/state/index.js +0 -1
- package/dist/state/state-manager.js +1 -2
- package/dist/utils/import-resolver.js +1 -1
- package/dist/utils/path-resolver.js +2 -2
- package/package.json +10 -3
- package/scripts/hooks/pre-command +1 -1
- package/scripts/hooks/run-hook.js +2 -2
- package/scripts/node/auto-reflection-generator.mjs +30 -36
- package/scripts/node/govern-reflection.mjs +1 -1
- package/scripts/node/postinstall.cjs +37 -2
- package/scripts/node/setup-xai-oauth.mjs +244 -0
- package/scripts/node/universal-version-manager.js +8 -8
- package/scripts/node/version-manager.mjs +1 -1
- package/src/integrations/grok/plugin/0xray/.mcp.json +16 -4
- package/src/integrations/grok/plugin/0xray/hooks/hooks.json +2 -2
- package/src/mcps/architect-tools.server.ts +2 -2
- package/src/mcps/auto-format.server.ts +2 -2
- package/src/mcps/boot-orchestrator.server.ts +2 -2
- package/src/mcps/config/__tests__/config-loader.test.ts +29 -33
- package/src/mcps/config/config-loader.ts +50 -11
- package/src/mcps/enforcer-tools.server.ts +2 -2
- package/src/mcps/estimation.server.ts +3 -2
- package/src/mcps/framework-compliance-audit.server.ts +2 -2
- package/src/mcps/framework-help.server.ts +3 -2
- package/src/mcps/governance.server.ts +8 -3
- package/src/mcps/knowledge-skills/api-design.server.ts +3 -2
- package/src/mcps/knowledge-skills/architecture-patterns.server.ts +2 -2
- package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +2 -2
- package/src/mcps/knowledge-skills/code-analyzer.server.ts +2 -2
- package/src/mcps/knowledge-skills/code-review.server.ts +2 -2
- package/src/mcps/knowledge-skills/content-creator.server.ts +3 -3
- package/src/mcps/knowledge-skills/database-design.server.ts +2 -2
- package/src/mcps/knowledge-skills/devops-deployment.server.ts +3 -2
- package/src/mcps/knowledge-skills/git-workflow.server.ts +3 -2
- package/src/mcps/knowledge-skills/growth-strategist.server.ts +3 -3
- package/src/mcps/knowledge-skills/log-monitor.server.ts +3 -3
- package/src/mcps/knowledge-skills/mobile-development.server.ts +3 -3
- package/src/mcps/knowledge-skills/multimodal-looker.server.ts +3 -3
- package/src/mcps/knowledge-skills/performance-optimization.server.ts +2 -2
- package/src/mcps/knowledge-skills/project-analysis.server.ts +2 -2
- package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +3 -2
- package/src/mcps/knowledge-skills/security-audit.server.ts +2 -2
- package/src/mcps/knowledge-skills/seo-consultant.server.ts +3 -2
- package/src/mcps/knowledge-skills/session-management.server.ts +3 -2
- package/src/mcps/knowledge-skills/skill-invocation.server.ts +113 -3
- package/src/mcps/knowledge-skills/strategist.server.ts +3 -3
- package/src/mcps/knowledge-skills/tech-writer.server.ts +3 -3
- package/src/mcps/knowledge-skills/testing-best-practices.server.ts +3 -2
- package/src/mcps/knowledge-skills/testing-strategy.server.ts +2 -2
- package/src/mcps/knowledge-skills/ui-ux-design.server.ts +3 -2
- package/src/mcps/lint.server.ts +2 -2
- package/src/mcps/model-health-check.server.ts +2 -2
- package/src/mcps/orchestrator/server.ts +2 -1
- package/src/mcps/orchestrator.server.ts +2 -1
- package/src/mcps/performance-analysis.server.ts +2 -2
- package/src/mcps/processor-pipeline.server.ts +3 -2
- package/src/mcps/registry.json +1 -1
- package/src/mcps/researcher.server.ts +2 -2
- package/src/mcps/security-scan.server.ts +2 -2
- package/src/mcps/state-manager.server.ts +5 -5
- package/src/opencode/codex.codex +1 -1
- package/src/opencode/commands/dependency-audit.md +3 -3
- package/src/opencode/commands/summary-logger.md +4 -4
- package/src/opencode/enforcer-config.json +2 -2
- package/src/skills/api-design/SKILL.md +1 -1
- package/src/skills/architect-tools/SKILL.md +1 -1
- package/src/skills/architecture-patterns/SKILL.md +1 -1
- package/src/skills/auto-format/SKILL.md +1 -1
- package/src/skills/boot-orchestrator/SKILL.md +1 -1
- package/src/skills/bug-triage/SKILL.md +1 -1
- package/src/skills/code-analyzer/SKILL.md +1 -1
- package/src/skills/code-review/SKILL.md +1 -1
- package/src/skills/enforcer/SKILL.md +1 -1
- package/src/skills/framework-compliance-audit/SKILL.md +1 -1
- package/src/skills/git-workflow/SKILL.md +1 -1
- package/src/skills/hermes-agent/SKILL.md +2 -2
- package/src/skills/inference-improve/SKILL.md +1 -1
- package/src/skills/lint/SKILL.md +1 -1
- package/src/skills/log-monitor/SKILL.md +1 -1
- package/src/skills/model-health-check/SKILL.md +1 -1
- package/src/skills/multimodal-looker/SKILL.md +1 -1
- package/src/skills/orchestrator/SKILL.md +1 -1
- package/src/skills/performance-analysis/SKILL.md +1 -1
- package/src/skills/performance-optimization/SKILL.md +1 -1
- package/src/skills/processor-pipeline/SKILL.md +1 -1
- package/src/skills/project-analysis/SKILL.md +1 -1
- package/src/skills/refactoring-strategies/SKILL.md +1 -1
- package/src/skills/registry.json +1 -1
- package/src/skills/researcher/SKILL.md +1 -1
- package/src/skills/security-audit/SKILL.md +1 -1
- package/src/skills/security-scan/SKILL.md +1 -1
- package/src/skills/session-management/SKILL.md +1 -1
- package/src/skills/state-manager/SKILL.md +1 -1
- package/src/skills/storyteller/SKILL.md +1 -1
- package/src/skills/testing-best-practices/SKILL.md +1 -1
- package/src/skills/testing-strategy/SKILL.md +1 -1
- package/src/skills/ui-ux-design/SKILL.md +1 -1
- package/xray/agents_template.md +46 -0
- package/xray/codex.json +598 -0
- package/dist/plugin/xray-codex-injection.js +0 -857
- /package/dist/integrations/openclaw/hooks/{strray-hooks.js → xray-hooks.js} +0 -0
|
@@ -8,11 +8,12 @@ import {
|
|
|
8
8
|
ListToolsRequestSchema,
|
|
9
9
|
McpError,
|
|
10
10
|
} from "@modelcontextprotocol/sdk/types.js";
|
|
11
|
-
import * as
|
|
11
|
+
import * as fs from "fs";
|
|
12
12
|
import { fileURLToPath } from "url";
|
|
13
13
|
import { randomUUID } from "crypto";
|
|
14
14
|
import { mcpClientManager } from "../mcp-client.js";
|
|
15
15
|
import { frameworkLogger } from "../../core/framework-logger.js";
|
|
16
|
+
import { skillInstallCommand, skillRegistryCommand } from "../../cli/commands/skill-install.js";
|
|
16
17
|
|
|
17
18
|
interface ListSkillsArgs {
|
|
18
19
|
category?: "all" | "core" | "registry" | "knowledge";
|
|
@@ -90,7 +91,7 @@ class SkillInvocationServer {
|
|
|
90
91
|
constructor() {
|
|
91
92
|
this.server = new Server(
|
|
92
93
|
{
|
|
93
|
-
name: "xray/skill-invocation", version: "1.
|
|
94
|
+
name: "xray/skill-invocation", version: "3.1.0",
|
|
94
95
|
},
|
|
95
96
|
{
|
|
96
97
|
capabilities: {
|
|
@@ -363,6 +364,61 @@ class SkillInvocationServer {
|
|
|
363
364
|
required: ["storyType"],
|
|
364
365
|
},
|
|
365
366
|
},
|
|
367
|
+
{
|
|
368
|
+
name: "install-skill",
|
|
369
|
+
description: "Install skills from the registry or any git repo",
|
|
370
|
+
inputSchema: {
|
|
371
|
+
type: "object",
|
|
372
|
+
properties: {
|
|
373
|
+
source: {
|
|
374
|
+
type: "string",
|
|
375
|
+
description: "Source name or git URL to install skills from",
|
|
376
|
+
},
|
|
377
|
+
path: {
|
|
378
|
+
type: "string",
|
|
379
|
+
description: "Subdirectory in repo containing skills",
|
|
380
|
+
},
|
|
381
|
+
force: {
|
|
382
|
+
type: "boolean",
|
|
383
|
+
description: "Reinstall even if already installed",
|
|
384
|
+
},
|
|
385
|
+
},
|
|
386
|
+
required: ["source"],
|
|
387
|
+
},
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
name: "skill-registry-list",
|
|
391
|
+
description: "List all available skill registry sources",
|
|
392
|
+
inputSchema: {
|
|
393
|
+
type: "object",
|
|
394
|
+
properties: {},
|
|
395
|
+
},
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
name: "skill-registry-add",
|
|
399
|
+
description: "Add a new source to the skills registry",
|
|
400
|
+
inputSchema: {
|
|
401
|
+
type: "object",
|
|
402
|
+
properties: {
|
|
403
|
+
name: { type: "string", description: "Unique source name" },
|
|
404
|
+
url: { type: "string", description: "Repository URL" },
|
|
405
|
+
desc: { type: "string", description: "Short description" },
|
|
406
|
+
license: { type: "string", description: "License type" },
|
|
407
|
+
},
|
|
408
|
+
required: ["name", "url"],
|
|
409
|
+
},
|
|
410
|
+
},
|
|
411
|
+
{
|
|
412
|
+
name: "skill-registry-remove",
|
|
413
|
+
description: "Remove a source from the skills registry",
|
|
414
|
+
inputSchema: {
|
|
415
|
+
type: "object",
|
|
416
|
+
properties: {
|
|
417
|
+
name: { type: "string", description: "Source name to remove" },
|
|
418
|
+
},
|
|
419
|
+
required: ["name"],
|
|
420
|
+
},
|
|
421
|
+
},
|
|
366
422
|
],
|
|
367
423
|
};
|
|
368
424
|
});
|
|
@@ -399,6 +455,14 @@ class SkillInvocationServer {
|
|
|
399
455
|
return await this.handleSkillDocumentationGeneration(args as unknown as DocumentationGenerationArgs);
|
|
400
456
|
case "skill-storyteller":
|
|
401
457
|
return await this.handleSkillStoryteller(args as unknown as StorytellerArgs);
|
|
458
|
+
case "install-skill":
|
|
459
|
+
return await this.handleInstallSkill(args as unknown as { source: string; path?: string; force?: boolean });
|
|
460
|
+
case "skill-registry-list":
|
|
461
|
+
return await this.handleSkillRegistryList();
|
|
462
|
+
case "skill-registry-add":
|
|
463
|
+
return await this.handleSkillRegistryAdd(args as unknown as { name: string; url: string; desc?: string; license?: string });
|
|
464
|
+
case "skill-registry-remove":
|
|
465
|
+
return await this.handleSkillRegistryRemove(args as unknown as { name: string });
|
|
402
466
|
default:
|
|
403
467
|
throw new McpError(
|
|
404
468
|
ErrorCode.MethodNotFound,
|
|
@@ -824,6 +888,52 @@ class SkillInvocationServer {
|
|
|
824
888
|
};
|
|
825
889
|
}
|
|
826
890
|
|
|
891
|
+
private async captureConsole(fn: () => Promise<void>): Promise<string> {
|
|
892
|
+
const chunks: string[] = [];
|
|
893
|
+
const origLog = console.log;
|
|
894
|
+
console.log = (...args: unknown[]) => chunks.push(args.map(String).join(" "));
|
|
895
|
+
try {
|
|
896
|
+
await fn();
|
|
897
|
+
} finally {
|
|
898
|
+
console.log = origLog;
|
|
899
|
+
}
|
|
900
|
+
return chunks.join("\n");
|
|
901
|
+
}
|
|
902
|
+
|
|
903
|
+
private async handleInstallSkill(args: { source: string; path?: string; force?: boolean }) {
|
|
904
|
+
const opts: { path?: string; force?: boolean } = {};
|
|
905
|
+
if (args.path !== undefined) opts.path = args.path;
|
|
906
|
+
if (args.force !== undefined) opts.force = args.force;
|
|
907
|
+
const output = await this.captureConsole(() =>
|
|
908
|
+
skillInstallCommand(args.source, opts)
|
|
909
|
+
);
|
|
910
|
+
return { content: [{ type: "text", text: output || "Skill installation completed." }] };
|
|
911
|
+
}
|
|
912
|
+
|
|
913
|
+
private async handleSkillRegistryList() {
|
|
914
|
+
const output = await this.captureConsole(() =>
|
|
915
|
+
skillRegistryCommand("list")
|
|
916
|
+
);
|
|
917
|
+
return { content: [{ type: "text", text: output || "No registry sources configured." }] };
|
|
918
|
+
}
|
|
919
|
+
|
|
920
|
+
private async handleSkillRegistryAdd(args: { name: string; url: string; desc?: string; license?: string }) {
|
|
921
|
+
const registryArgs: Record<string, string> = { name: args.name, url: args.url };
|
|
922
|
+
if (args.desc !== undefined) registryArgs.desc = args.desc;
|
|
923
|
+
if (args.license !== undefined) registryArgs.license = args.license;
|
|
924
|
+
const output = await this.captureConsole(() =>
|
|
925
|
+
skillRegistryCommand("add", registryArgs)
|
|
926
|
+
);
|
|
927
|
+
return { content: [{ type: "text", text: output || "Source added." }] };
|
|
928
|
+
}
|
|
929
|
+
|
|
930
|
+
private async handleSkillRegistryRemove(args: { name: string }) {
|
|
931
|
+
const output = await this.captureConsole(() =>
|
|
932
|
+
skillRegistryCommand("remove", { name: args.name })
|
|
933
|
+
);
|
|
934
|
+
return { content: [{ type: "text", text: output || "Source removed." }] };
|
|
935
|
+
}
|
|
936
|
+
|
|
827
937
|
async run(): Promise<void> {
|
|
828
938
|
const transport = new StdioServerTransport();
|
|
829
939
|
await this.server.connect(transport);
|
|
@@ -917,7 +1027,7 @@ class SkillInvocationServer {
|
|
|
917
1027
|
}
|
|
918
1028
|
|
|
919
1029
|
// Start the server if this file is run directly
|
|
920
|
-
const entryPoint =
|
|
1030
|
+
const entryPoint = fs.realpathSync(process.argv[1] ?? "");
|
|
921
1031
|
if (entryPoint && fileURLToPath(import.meta.url) === entryPoint) {
|
|
922
1032
|
// If --port or MCP_PORT is set, use HTTP transport (for Grok CLI compatibility)
|
|
923
1033
|
const cliPort = process.argv.find((a) => a.startsWith("--port="))?.split("=")[1];
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
CallToolRequestSchema,
|
|
12
12
|
ListToolsRequestSchema,
|
|
13
13
|
} from "@modelcontextprotocol/sdk/types.js";
|
|
14
|
-
import * as
|
|
14
|
+
import * as fs from "fs";
|
|
15
15
|
import { fileURLToPath } from "url";
|
|
16
16
|
import { frameworkLogger } from "../../core/framework-logger.js";
|
|
17
17
|
|
|
@@ -110,7 +110,7 @@ class StrategistServer {
|
|
|
110
110
|
constructor() {
|
|
111
111
|
this.server = new Server(
|
|
112
112
|
{
|
|
113
|
-
name: "xray/strategist", version: "1.
|
|
113
|
+
name: "xray/strategist", version: "3.1.0",
|
|
114
114
|
},
|
|
115
115
|
{
|
|
116
116
|
capabilities: {
|
|
@@ -258,7 +258,7 @@ class StrategistServer {
|
|
|
258
258
|
}
|
|
259
259
|
}
|
|
260
260
|
|
|
261
|
-
const entryPoint =
|
|
261
|
+
const entryPoint = fs.realpathSync(process.argv[1] ?? "");
|
|
262
262
|
if (entryPoint && fileURLToPath(import.meta.url) === entryPoint) {
|
|
263
263
|
const server = new StrategistServer();
|
|
264
264
|
server.start().catch((error) => frameworkLogger.log("mcps/strategist", "run", "error", { error: String(error) }));
|
|
@@ -166,7 +166,7 @@ class XrayDocumentationGenerationServer {
|
|
|
166
166
|
constructor() {
|
|
167
167
|
this.server = new Server(
|
|
168
168
|
{
|
|
169
|
-
name: "documentation-generation", version: "1.
|
|
169
|
+
name: "documentation-generation", version: "3.1.0",
|
|
170
170
|
},
|
|
171
171
|
{
|
|
172
172
|
capabilities: {
|
|
@@ -1053,7 +1053,7 @@ class XrayDocumentationGenerationServer {
|
|
|
1053
1053
|
openapi: "3.0.0",
|
|
1054
1054
|
info: {
|
|
1055
1055
|
title: "API Documentation",
|
|
1056
|
-
version: "1.
|
|
1056
|
+
version: "3.1.0",
|
|
1057
1057
|
description: "Generated API documentation",
|
|
1058
1058
|
},
|
|
1059
1059
|
servers: [
|
|
@@ -1630,7 +1630,7 @@ class XrayDocumentationGenerationServer {
|
|
|
1630
1630
|
}
|
|
1631
1631
|
|
|
1632
1632
|
// Run the server if this file is executed directly
|
|
1633
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
1633
|
+
if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
|
|
1634
1634
|
const server = new XrayDocumentationGenerationServer();
|
|
1635
1635
|
server.run().catch(() => {});
|
|
1636
1636
|
}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
9
9
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
10
|
+
import * as fs from "fs";
|
|
10
11
|
import { frameworkLogger } from "../../core/framework-logger.js";
|
|
11
12
|
import { createGracefulShutdown } from "../../utils/shutdown-handler.js";
|
|
12
13
|
import {
|
|
@@ -209,7 +210,7 @@ class XrayTestingBestPracticesServer {
|
|
|
209
210
|
constructor() {
|
|
210
211
|
this.server = new Server(
|
|
211
212
|
{
|
|
212
|
-
name: "testing-best-practices", version: "1.
|
|
213
|
+
name: "testing-best-practices", version: "3.1.0",
|
|
213
214
|
},
|
|
214
215
|
{
|
|
215
216
|
capabilities: {
|
|
@@ -1224,7 +1225,7 @@ class XrayTestingBestPracticesServer {
|
|
|
1224
1225
|
}
|
|
1225
1226
|
|
|
1226
1227
|
// Run the server if this file is executed directly
|
|
1227
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
1228
|
+
if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
|
|
1228
1229
|
const server = new XrayTestingBestPracticesServer();
|
|
1229
1230
|
server.run().catch(() => {});
|
|
1230
1231
|
}
|
|
@@ -135,7 +135,7 @@ class XrayTestingStrategyServer {
|
|
|
135
135
|
constructor() {
|
|
136
136
|
this.server = new Server(
|
|
137
137
|
{
|
|
138
|
-
name: "testing-strategy", version: "1.
|
|
138
|
+
name: "testing-strategy", version: "3.1.0",
|
|
139
139
|
},
|
|
140
140
|
{
|
|
141
141
|
capabilities: {
|
|
@@ -1164,7 +1164,7 @@ describe("${pathModule.basename(sourceFile, ".ts")}", () => {${testCases}
|
|
|
1164
1164
|
}
|
|
1165
1165
|
|
|
1166
1166
|
// Start the server if run directly
|
|
1167
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
1167
|
+
if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
|
|
1168
1168
|
const server = new XrayTestingStrategyServer();
|
|
1169
1169
|
server.run().catch(() => {});
|
|
1170
1170
|
}
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
ListToolsRequestSchema,
|
|
13
13
|
type CallToolResult,
|
|
14
14
|
} from "@modelcontextprotocol/sdk/types.js";
|
|
15
|
+
import * as fs from "fs";
|
|
15
16
|
import { frameworkLogger } from "../../core/framework-logger.js";
|
|
16
17
|
|
|
17
18
|
interface UIDesignAnalysis {
|
|
@@ -192,7 +193,7 @@ class XrayUIUXDesignServer {
|
|
|
192
193
|
constructor() {
|
|
193
194
|
this.server = new Server(
|
|
194
195
|
{
|
|
195
|
-
name: "ui-ux-design", version: "1.
|
|
196
|
+
name: "ui-ux-design", version: "3.1.0",
|
|
196
197
|
},
|
|
197
198
|
{
|
|
198
199
|
capabilities: {
|
|
@@ -2068,7 +2069,7 @@ Available: ${Object.keys(system.components).length} component types
|
|
|
2068
2069
|
}
|
|
2069
2070
|
|
|
2070
2071
|
// Run the server if this file is executed directly
|
|
2071
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
2072
|
+
if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
|
|
2072
2073
|
const server = new XrayUIUXDesignServer();
|
|
2073
2074
|
server.run().catch((error) => frameworkLogger.log("mcps/ui-ux-design", "run", "error", { error: String(error) }));
|
|
2074
2075
|
}
|
package/src/mcps/lint.server.ts
CHANGED
|
@@ -39,7 +39,7 @@ class XrayLintServer {
|
|
|
39
39
|
constructor() {
|
|
40
40
|
this.server = new Server(
|
|
41
41
|
{
|
|
42
|
-
name: "lint", version: "1.
|
|
42
|
+
name: "lint", version: "3.1.0",
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
45
|
capabilities: {
|
|
@@ -475,7 +475,7 @@ ${checkResults.details.map((d) => `• ${d}`).join("\n")}
|
|
|
475
475
|
}
|
|
476
476
|
|
|
477
477
|
// Start the server if run directly
|
|
478
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
478
|
+
if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
|
|
479
479
|
const server = new XrayLintServer();
|
|
480
480
|
server.run().catch((error) => frameworkLogger.log("mcps/lint", "run", "error", { error: String(error) }));
|
|
481
481
|
}
|
|
@@ -42,7 +42,7 @@ class XrayModelHealthCheckServer {
|
|
|
42
42
|
constructor() {
|
|
43
43
|
this.server = new Server(
|
|
44
44
|
{
|
|
45
|
-
name: "model-health-check", version: "1.
|
|
45
|
+
name: "model-health-check", version: "3.1.0",
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
48
|
capabilities: {
|
|
@@ -284,7 +284,7 @@ class XrayModelHealthCheckServer {
|
|
|
284
284
|
}
|
|
285
285
|
|
|
286
286
|
// Start the server if this file is run directly
|
|
287
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
287
|
+
if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
|
|
288
288
|
const server = new XrayModelHealthCheckServer();
|
|
289
289
|
server.start().catch((error) => frameworkLogger.log("mcps/model-health-check", "run", "error", { error: String(error) }));
|
|
290
290
|
}
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
CallToolRequestSchema,
|
|
12
12
|
ListToolsRequestSchema,
|
|
13
13
|
} from '@modelcontextprotocol/sdk/types.js';
|
|
14
|
+
import * as fs from 'fs';
|
|
14
15
|
import { frameworkLogger } from '../../core/framework-logger.js';
|
|
15
16
|
import { XrayStateManager } from '../../state/state-manager.js';
|
|
16
17
|
import { MultiAgentOrchestrationCoordinator } from '../../orchestrator/multi-agent-orchestration-coordinator.js';
|
|
@@ -377,7 +378,7 @@ export function createOrchestratorServer(): OrchestratorServer {
|
|
|
377
378
|
}
|
|
378
379
|
|
|
379
380
|
// Run if called directly
|
|
380
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
381
|
+
if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
|
|
381
382
|
const server = createOrchestratorServer();
|
|
382
383
|
server.start().catch((error) => {
|
|
383
384
|
frameworkLogger.log('orchestrator.server', 'fatal-error', 'error', {
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* @deprecated Use src/mcps/orchestrator/server.ts instead
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
+
import * as fs from 'fs';
|
|
10
11
|
import { frameworkLogger } from '../core/framework-logger.js';
|
|
11
12
|
|
|
12
13
|
export { OrchestratorServer, createOrchestratorServer } from './orchestrator/server.js';
|
|
@@ -24,7 +25,7 @@ export type {
|
|
|
24
25
|
} from './orchestrator/types.js';
|
|
25
26
|
|
|
26
27
|
// Run if called directly
|
|
27
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
28
|
+
if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
|
|
28
29
|
const { createOrchestratorServer } = await import('./orchestrator/server.js');
|
|
29
30
|
const server = createOrchestratorServer();
|
|
30
31
|
server.start().catch((error) => {
|
|
@@ -64,7 +64,7 @@ class XrayPerformanceAnalysisServer {
|
|
|
64
64
|
constructor() {
|
|
65
65
|
this.server = new Server(
|
|
66
66
|
{
|
|
67
|
-
name: "performance-analysis", version: "1.
|
|
67
|
+
name: "performance-analysis", version: "3.1.0",
|
|
68
68
|
},
|
|
69
69
|
{
|
|
70
70
|
capabilities: {
|
|
@@ -707,7 +707,7 @@ ${results.recommendations.map((r) => `• 💡 ${r}`).join("\n") || "No recommen
|
|
|
707
707
|
}
|
|
708
708
|
|
|
709
709
|
// Start the server if run directly
|
|
710
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
710
|
+
if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
|
|
711
711
|
const server = new XrayPerformanceAnalysisServer();
|
|
712
712
|
server.run().catch((error) => frameworkLogger.log("mcps/performance-analysis", "run", "error", { error: String(error) }));
|
|
713
713
|
}
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
CallToolRequestSchema,
|
|
11
11
|
ListToolsRequestSchema,
|
|
12
12
|
} from "@modelcontextprotocol/sdk/types.js";
|
|
13
|
+
import * as fs from "fs";
|
|
13
14
|
import { frameworkLogger } from "../core/framework-logger.js";
|
|
14
15
|
import { CodexLoader } from "../enforcement/loaders/codex-loader.js";
|
|
15
16
|
import type { RuleDefinition, RuleValidationContext } from "../enforcement/types.js";
|
|
@@ -107,7 +108,7 @@ class XrayProcessorPipelineServer {
|
|
|
107
108
|
this.codexLoader = new CodexLoader();
|
|
108
109
|
this.server = new Server(
|
|
109
110
|
{
|
|
110
|
-
name: "processor-pipeline", version: "1.
|
|
111
|
+
name: "processor-pipeline", version: "3.1.0",
|
|
111
112
|
},
|
|
112
113
|
{
|
|
113
114
|
capabilities: {
|
|
@@ -770,7 +771,7 @@ ${complianceResults.actions.map((a: string) => `• 🔧 ${a}`).join("\n") || "N
|
|
|
770
771
|
}
|
|
771
772
|
|
|
772
773
|
// Start the server if run directly
|
|
773
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
774
|
+
if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
|
|
774
775
|
const server = new XrayProcessorPipelineServer();
|
|
775
776
|
server.run().catch((error) => frameworkLogger.log("mcps/processor-pipeline", "run", "error", { error: String(error) }));
|
|
776
777
|
}
|
package/src/mcps/registry.json
CHANGED
|
@@ -55,7 +55,7 @@ class XrayLibrarianServer {
|
|
|
55
55
|
constructor() {
|
|
56
56
|
this.server = new Server(
|
|
57
57
|
{
|
|
58
|
-
name: "researcher", version: "1.
|
|
58
|
+
name: "researcher", version: "3.1.0",
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
61
|
capabilities: {
|
|
@@ -572,7 +572,7 @@ class XrayLibrarianServer {
|
|
|
572
572
|
}
|
|
573
573
|
|
|
574
574
|
// Run the server if this file is executed directly
|
|
575
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
575
|
+
if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
|
|
576
576
|
const server = new XrayLibrarianServer();
|
|
577
577
|
server.run().catch((error) => frameworkLogger.log("mcps/researcher", "run", "error", { error: String(error) }));
|
|
578
578
|
}
|
|
@@ -45,7 +45,7 @@ class XraySecurityScanServer {
|
|
|
45
45
|
constructor() {
|
|
46
46
|
this.server = new Server(
|
|
47
47
|
{
|
|
48
|
-
name: "security-scan", version: "1.
|
|
48
|
+
name: "security-scan", version: "3.1.0",
|
|
49
49
|
},
|
|
50
50
|
{
|
|
51
51
|
capabilities: {
|
|
@@ -643,7 +643,7 @@ ${results.recommendations.map((r) => `• ${r}`).join("\n") || "No recommendatio
|
|
|
643
643
|
}
|
|
644
644
|
|
|
645
645
|
// Start the server if run directly
|
|
646
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
646
|
+
if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
|
|
647
647
|
const server = new XraySecurityScanServer();
|
|
648
648
|
server.run().catch((error) => frameworkLogger.log("mcps/security-scan", "run", "error", { error: String(error) }));
|
|
649
649
|
}
|
|
@@ -62,7 +62,7 @@ interface ValidationResult {
|
|
|
62
62
|
|
|
63
63
|
type StateValue = string | number | boolean | object | null | undefined;
|
|
64
64
|
|
|
65
|
-
class
|
|
65
|
+
class XrayStateManagerServer {
|
|
66
66
|
private server: Server;
|
|
67
67
|
private state: Map<string, unknown> = new Map();
|
|
68
68
|
private stateFile: string;
|
|
@@ -71,7 +71,7 @@ class StrRayStateManagerServer {
|
|
|
71
71
|
constructor() {
|
|
72
72
|
this.server = new Server(
|
|
73
73
|
{
|
|
74
|
-
name: "state-manager", version: "1.
|
|
74
|
+
name: "state-manager", version: "3.1.0",
|
|
75
75
|
},
|
|
76
76
|
{
|
|
77
77
|
capabilities: {
|
|
@@ -769,9 +769,9 @@ ${results.repairedKeys.length > 0 ? `**Repaired Keys:**\n${results.repairedKeys.
|
|
|
769
769
|
}
|
|
770
770
|
|
|
771
771
|
// Start the server if run directly
|
|
772
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
773
|
-
const server = new
|
|
772
|
+
if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
|
|
773
|
+
const server = new XrayStateManagerServer();
|
|
774
774
|
server.run().catch((error) => frameworkLogger.log("mcps/state-manager", "run", "error", { error: String(error) }));
|
|
775
775
|
}
|
|
776
776
|
|
|
777
|
-
export {
|
|
777
|
+
export { XrayStateManagerServer };
|
package/src/opencode/codex.codex
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.
|
|
2
|
+
"version": "3.1.0",
|
|
3
3
|
"terms": [
|
|
4
4
|
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60
|
|
5
5
|
],
|
|
@@ -69,7 +69,7 @@ Comprehensive dependency analysis and security audit for all project dependencie
|
|
|
69
69
|
"vulnerabilities": [
|
|
70
70
|
{
|
|
71
71
|
"package": "lodash",
|
|
72
|
-
"version": "1.
|
|
72
|
+
"version": "3.1.0",
|
|
73
73
|
"severity": "high",
|
|
74
74
|
"cve": "CVE-2021-23337",
|
|
75
75
|
"description": "Command injection vulnerability"
|
|
@@ -85,14 +85,14 @@ Security-focused format for CI/CD integration:
|
|
|
85
85
|
|
|
86
86
|
```json
|
|
87
87
|
{
|
|
88
|
-
"version": "1.
|
|
88
|
+
"version": "3.1.0",
|
|
89
89
|
"$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json",
|
|
90
90
|
"runs": [
|
|
91
91
|
{
|
|
92
92
|
"tool": {
|
|
93
93
|
"driver": {
|
|
94
94
|
"name": "Dependency Audit",
|
|
95
|
-
"version": "1.
|
|
95
|
+
"version": "3.1.0"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"results": [...]
|
|
@@ -47,17 +47,17 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
47
47
|
PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)"
|
|
48
48
|
REFACTORING_LOG="${PROJECT_ROOT}/docs/REFACTORING_LOG.md"
|
|
49
49
|
|
|
50
|
-
# Check if summary content is provided via environment variable or stdin (XRAY_ primary
|
|
50
|
+
# Check if summary content is provided via environment variable or stdin (XRAY_ primary)
|
|
51
51
|
|
|
52
52
|
if [ -n "$XRAY_SUMMARY_CONTENT" ]; then
|
|
53
53
|
SUMMARY_CONTENT="$XRAY_SUMMARY_CONTENT"
|
|
54
|
-
elif [ -n "$
|
|
55
|
-
SUMMARY_CONTENT="$
|
|
54
|
+
elif [ -n "$XRAY_SUMMARY_CONTENT" ]; then
|
|
55
|
+
SUMMARY_CONTENT="$XRAY_SUMMARY_CONTENT"
|
|
56
56
|
elif [ ! -t 0 ]; then
|
|
57
57
|
# Read from stdin
|
|
58
58
|
SUMMARY_CONTENT=$(cat)
|
|
59
59
|
else
|
|
60
|
-
echo "❌ No summary content provided. Use XRAY_SUMMARY_CONTENT
|
|
60
|
+
echo "❌ No summary content provided. Use XRAY_SUMMARY_CONTENT environment variable or pipe content."
|
|
61
61
|
echo "Usage:"
|
|
62
62
|
echo " export XRAY_SUMMARY_CONTENT='summary content' && bash .opencode/commands/summary-logger.md"
|
|
63
63
|
echo " echo 'summary content' | bash .opencode/commands/summary-logger.md"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"framework": "xray 2.0",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"description": "Codex-compliant framework configuration for Credible UI project",
|
|
5
5
|
"thresholds": {
|
|
6
6
|
"bundleSize": {
|
|
@@ -220,7 +220,7 @@
|
|
|
220
220
|
}
|
|
221
221
|
},
|
|
222
222
|
"codex": {
|
|
223
|
-
"version": "1.
|
|
223
|
+
"version": "3.1.0",
|
|
224
224
|
"terms": [
|
|
225
225
|
1,
|
|
226
226
|
2,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
source: framework
|
|
3
3
|
name: code-analyzer
|
|
4
4
|
description: Deep code analysis, metrics extraction, and pattern detection (CONSOLIDATED - combines analyzer, explore, and original code-analyzer)
|
|
5
|
-
author:
|
|
5
|
+
author: Xray Framework
|
|
6
6
|
version: 1.0.0
|
|
7
7
|
schema_version: "1.0"
|
|
8
8
|
tags: [analysis, metrics, code-quality, patterns]
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
source: framework
|
|
3
3
|
name: code-review
|
|
4
4
|
description: Perform comprehensive code quality assessment and provide improvement suggestions
|
|
5
|
-
author:
|
|
5
|
+
author: Xray Framework
|
|
6
6
|
version: 1.0.0
|
|
7
7
|
schema_version: "1.0"
|
|
8
8
|
tags: [review, quality, assessment, improvement]
|