0xray 4.0.33 â 4.0.35
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/.grok-plugin/plugin.json +1 -1
- package/.xray/codex.json +12 -4
- package/.xray/features.json +1 -1
- package/AGENTS-consumer.md +6 -6
- package/AGENTS.md +5 -5
- package/README.md +2 -2
- package/dist/AGENTS.md +5 -5
- package/dist/CHANGELOG.md +25 -0
- package/dist/README.md +2 -2
- package/dist/cli/index.js +2 -5
- package/dist/governance/governance-service.js +1 -1
- package/dist/integrations/base/README.md +1 -9
- package/dist/integrations/base/index.d.ts +0 -1
- package/dist/integrations/base/index.js +0 -2
- package/dist/integrations/governance/index.js +31 -8
- package/dist/integrations/grok/hooks/grok-hook-utils.js +1 -1
- package/dist/integrations/grok/hooks/session-start.js +12 -0
- package/dist/integrations/hooks/goggles-pipeline.mjs +108 -22
- package/dist/integrations/hooks/goggles-planes.json +23 -0
- package/dist/integrations/hooks/host-truth.mjs +74 -0
- package/dist/integrations/hooks/station-hook-runtime.cjs +3 -0
- package/dist/integrations/openclaw/plugin/xray-pre-tool/package.json +1 -1
- package/dist/mcps/knowledge-skills/storyteller.server.js +0 -1
- package/dist/nucleus/delegation-gate.d.ts +2 -2
- package/dist/nucleus/delegation-gate.js +13 -2
- package/dist/nucleus/work-freshness.mjs +189 -0
- package/dist/processors/implementations/agents-md-validation-processor.js +1 -1
- package/docs-site/docs/plates/boot.md +17 -2
- package/docs-site/docs/plates/governance.md +3 -2
- package/docs-site/docs/plates/index.md +3 -1
- package/docs-site/docs/plates/memory-recall.md +26 -35
- package/docs-site/docs/plates/orchestration.md +39 -35
- package/docs-site/docs/plates/processor.md +34 -36
- package/docs-site/docs/plates/reporting.md +3 -8
- package/docs-site/docs/plates/routing.md +22 -11
- package/package.json +2 -2
- package/scripts/foundry/release.mjs +48 -5
- package/scripts/mjs/test-consumer-readiness.mjs +1 -0
- package/scripts/mjs/test-mcp-functionality.mjs +14 -9
- package/scripts/node/basic-security-audit.cjs +0 -1
- package/scripts/node/bridge-mcp-wiring.cjs +66 -3
- package/scripts/node/postinstall.cjs +1 -1
- package/scripts/node/prepare-consumer.cjs +11 -7
- package/scripts/node/setup-dev.cjs +18 -26
- package/scripts/node/validate-mcp-connectivity.js +2 -1
- package/src/integrations/openclaw/plugin/xray-pre-tool/package.json +1 -1
- package/src/mcps/knowledge-skills/storyteller.server.ts +0 -1
- package/xray/agents_template.md +5 -5
- package/xray/codex.json +12 -4
- package/xray/features.json +1 -1
- package/dist/agents/known-names.d.ts +0 -26
- package/dist/agents/known-names.js +0 -72
- package/dist/analytics/consent-manager.d.ts +0 -92
- package/dist/analytics/consent-manager.js +0 -257
- package/dist/benchmark/performance-benchmark.d.ts +0 -103
- package/dist/benchmark/performance-benchmark.js +0 -373
- package/dist/cli/commands/analytics-disable.d.ts +0 -9
- package/dist/cli/commands/analytics-disable.js +0 -72
- package/dist/cli/commands/analytics-enable-action.d.ts +0 -8
- package/dist/cli/commands/analytics-enable-action.js +0 -82
- package/dist/cli/commands/analytics-preview.d.ts +0 -9
- package/dist/cli/commands/analytics-preview.js +0 -106
- package/dist/cli/commands/analytics-status.d.ts +0 -9
- package/dist/cli/commands/analytics-status.js +0 -68
- package/dist/cli/commands/enforce.d.ts +0 -12
- package/dist/cli/commands/enforce.js +0 -78
- package/dist/cli/commands/govern.d.ts +0 -29
- package/dist/cli/commands/govern.js +0 -149
- package/dist/cli/commands/security-audit.d.ts +0 -23
- package/dist/cli/commands/security-audit.js +0 -219
- package/dist/cli/server.d.ts +0 -1
- package/dist/cli/server.js +0 -147
- package/dist/config/routing-mappings.d.ts +0 -26
- package/dist/config/routing-mappings.js +0 -151
- package/dist/core/bridge.mjs +0 -922
- package/dist/core/trace-context.d.ts +0 -12
- package/dist/core/trace-context.js +0 -33
- package/dist/enforcement/index.d.ts +0 -22
- package/dist/enforcement/index.js +0 -40
- package/dist/enforcement/loaders/index.d.ts +0 -36
- package/dist/enforcement/loaders/index.js +0 -39
- package/dist/enforcement/test-auto-healing.d.ts +0 -83
- package/dist/enforcement/test-auto-healing.js +0 -325
- package/dist/inference/index.d.ts +0 -10
- package/dist/inference/index.js +0 -5
- package/dist/infrastructure/iac-validator.d.ts +0 -150
- package/dist/infrastructure/iac-validator.js +0 -465
- package/dist/infrastructure/schemas/cloud-schemas.d.ts +0 -482
- package/dist/infrastructure/schemas/cloud-schemas.js +0 -488
- package/dist/integrations/base/ExampleIntegration.d.ts +0 -46
- package/dist/integrations/base/ExampleIntegration.js +0 -180
- package/dist/integrations/enforcement-gate.d.ts +0 -44
- package/dist/integrations/enforcement-gate.js +0 -348
- package/dist/mcps/connection/connection-manager.d.ts +0 -39
- package/dist/mcps/connection/connection-manager.js +0 -79
- package/dist/mcps/index.d.ts +0 -17
- package/dist/mcps/index.js +0 -65
- package/dist/mcps/orchestrator/index.d.ts +0 -6
- package/dist/mcps/orchestrator/index.js +0 -5
- package/dist/metrics/index.d.ts +0 -6
- package/dist/metrics/index.js +0 -6
- package/dist/orchestrator/self-direction-activation.d.ts +0 -108
- package/dist/orchestrator/self-direction-activation.js +0 -244
- package/dist/orchestrator/universal-registry-bridge.d.ts +0 -84
- package/dist/orchestrator/universal-registry-bridge.js +0 -246
- package/dist/performance/performance-budget-enforcer.d.ts +0 -157
- package/dist/performance/performance-budget-enforcer.js +0 -433
- package/dist/performance/performance-regression-tester.d.ts +0 -107
- package/dist/performance/performance-regression-tester.js +0 -341
- package/dist/postprocessor/analysis/CodeChangeAnalyzer.d.ts +0 -11
- package/dist/postprocessor/analysis/CodeChangeAnalyzer.js +0 -50
- package/dist/postprocessor/config/ProcessorConfigLoader.d.ts +0 -44
- package/dist/postprocessor/config/ProcessorConfigLoader.js +0 -16
- package/dist/postprocessor/integration.d.ts +0 -156
- package/dist/postprocessor/integration.js +0 -194
- package/dist/postprocessor/metamorphosis/index.d.ts +0 -2
- package/dist/postprocessor/metamorphosis/index.js +0 -1
- package/dist/postprocessor/redeploy/RetryHandler.d.ts +0 -49
- package/dist/postprocessor/redeploy/RetryHandler.js +0 -118
- package/dist/processors/implementations/session-capture-processor.d.ts +0 -14
- package/dist/processors/implementations/session-capture-processor.js +0 -37
- package/dist/public/XrayService.d.ts +0 -17
- package/dist/public/XrayService.js +0 -40
- package/dist/public/index.d.ts +0 -4
- package/dist/public/index.js +0 -2
- package/dist/security/comprehensive-security-audit.d.ts +0 -157
- package/dist/security/comprehensive-security-audit.js +0 -1004
- package/dist/security/index.d.ts +0 -13
- package/dist/security/index.js +0 -13
- package/dist/security/security-agent-coordinator.d.ts +0 -71
- package/dist/security/security-agent-coordinator.js +0 -203
- package/dist/security/security-hardening-system.d.ts +0 -238
- package/dist/security/security-hardening-system.js +0 -726
- package/dist/security/security-orchestration-layer.d.ts +0 -118
- package/dist/security/security-orchestration-layer.js +0 -495
- package/dist/testing/memory-regression-suite.d.ts +0 -105
- package/dist/testing/memory-regression-suite.js +0 -258
- package/dist/tools/assess-complexity-tool.d.ts +0 -28
- package/dist/tools/assess-complexity-tool.js +0 -44
- package/dist/tools/query-routing-tool.d.ts +0 -17
- package/dist/tools/query-routing-tool.js +0 -59
- package/dist/utils/batch-operations.d.ts +0 -25
- package/dist/utils/batch-operations.js +0 -292
- package/dist/utils/task-graph.d.ts +0 -29
- package/dist/utils/task-graph.js +0 -106
- package/dist/utils/test-template-generator.d.ts +0 -25
- package/dist/utils/test-template-generator.js +0 -178
- package/dist/utils/token-manager.d.ts +0 -48
- package/dist/utils/token-manager.js +0 -163
- package/dist/validation/agent-config-validator.d.ts +0 -110
- package/dist/validation/agent-config-validator.js +0 -280
- package/dist/validation/orchestration-flow-validator.d.ts +0 -87
- package/dist/validation/orchestration-flow-validator.js +0 -606
- package/src/mcps/connection/connection-manager.ts +0 -91
- package/src/mcps/index.ts +0 -80
- package/src/mcps/orchestrator/index.ts +0 -29
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Analytics Status CLI Command
|
|
3
|
-
*
|
|
4
|
-
* Shows current consent and analytics status
|
|
5
|
-
*
|
|
6
|
-
* Usage: npx 0xray analytics status
|
|
7
|
-
*/
|
|
8
|
-
import { program } from "commander";
|
|
9
|
-
import { ConsentManager } from "../../analytics/consent-manager.js";
|
|
10
|
-
import { getConfigDir } from "../../core/config-paths.js";
|
|
11
|
-
export const analyticsStatusCommand = program
|
|
12
|
-
.command("analytics status")
|
|
13
|
-
.description("Show current analytics consent status")
|
|
14
|
-
.option("-v, --verbose", "Show detailed information", false)
|
|
15
|
-
.action(async (options) => {
|
|
16
|
-
console.log("đ 0xRay Central Analytics Status\n");
|
|
17
|
-
try {
|
|
18
|
-
const consentManager = new ConsentManager();
|
|
19
|
-
const status = await consentManager.getStatus();
|
|
20
|
-
// Show main status
|
|
21
|
-
const enabledEmoji = status.analyticsEnabled ? "â
ENABLED" : "â DISABLED";
|
|
22
|
-
console.log(`đ¯ Status: ${enabledEmoji}\n`);
|
|
23
|
-
// Show project ID
|
|
24
|
-
console.log(`đ Project Information:`);
|
|
25
|
-
console.log(` Project ID: ${status.projectId}`);
|
|
26
|
-
console.log(` Consent Version: ${status.consentVersion}`);
|
|
27
|
-
console.log(` Consent Date: ${status.consentDate.toISOString()}`);
|
|
28
|
-
if (status.lastOptOut) {
|
|
29
|
-
console.log(` Last Opt-Out: ${status.lastOptOut.toISOString()}`);
|
|
30
|
-
}
|
|
31
|
-
// Show category status
|
|
32
|
-
console.log(`\nđ Categories Status:`);
|
|
33
|
-
const categories = consentManager.getCategories();
|
|
34
|
-
categories.forEach(cat => {
|
|
35
|
-
const emoji = cat.enabled ? "â
" : "â";
|
|
36
|
-
console.log(` ${emoji} ${cat.name.padEnd(15)} ${cat.description}`);
|
|
37
|
-
});
|
|
38
|
-
if (options.verbose) {
|
|
39
|
-
// Show configuration file location
|
|
40
|
-
const configDir = getConfigDir();
|
|
41
|
-
console.log(`\nđ Configuration Files:`);
|
|
42
|
-
console.log(` Consent Config: ${configDir}/consent.json`);
|
|
43
|
-
console.log(` Submission Queue: ${configDir}/analytics/submission-queue.json`);
|
|
44
|
-
// Show detailed information
|
|
45
|
-
console.log(`\nđ Detailed Information:`);
|
|
46
|
-
const enabledCats = categories.filter(c => c.enabled);
|
|
47
|
-
console.log(` Enabled Categories: ${enabledCats.length}/${categories.length}`);
|
|
48
|
-
console.log(` Analytics Active: ${status.analyticsEnabled}`);
|
|
49
|
-
if (status.analyticsEnabled) {
|
|
50
|
-
console.log(`\nđĄ Your project is contributing to community learning!`);
|
|
51
|
-
console.log(` âĸ View what's being submitted: npx 0xray analytics preview`);
|
|
52
|
-
console.log(` âĸ Get community insights: npx 0xray analytics recommendations`);
|
|
53
|
-
console.log(` âĸ Check performance: npx 0xray analytics`);
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
console.log(`\nđĄ Analytics is currently disabled.`);
|
|
57
|
-
console.log(` âĸ Enable anytime: npx 0xray analytics enable`);
|
|
58
|
-
console.log(` âĸ Learn more: docs/architecture/central-analytics-store.md`);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
catch (error) {
|
|
63
|
-
console.error("â Failed to get analytics status:", error instanceof Error ? error.message : String(error));
|
|
64
|
-
console.error("\nđĄ Try: npx 0xray analytics status --help");
|
|
65
|
-
process.exit(1);
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
export default analyticsStatusCommand;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
interface EnforceOptions {
|
|
2
|
-
phase: string;
|
|
3
|
-
tool?: string;
|
|
4
|
-
args?: string;
|
|
5
|
-
result?: string;
|
|
6
|
-
error?: string;
|
|
7
|
-
files?: string;
|
|
8
|
-
code?: string;
|
|
9
|
-
focusAreas?: string;
|
|
10
|
-
}
|
|
11
|
-
export declare function enforceCommand(options: EnforceOptions): Promise<void>;
|
|
12
|
-
export {};
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { beforeToolHook, afterToolHook } from "../../integrations/enforcement-gate.js";
|
|
2
|
-
import { frameworkLogger } from "../../core/framework-logger.js";
|
|
3
|
-
import { mcpClientManager } from "../../mcps/mcp-client.js";
|
|
4
|
-
export async function enforceCommand(options) {
|
|
5
|
-
const phase = options.phase || "health";
|
|
6
|
-
let parsedArgs = null;
|
|
7
|
-
if (options.args) {
|
|
8
|
-
try {
|
|
9
|
-
parsedArgs = JSON.parse(options.args);
|
|
10
|
-
}
|
|
11
|
-
catch {
|
|
12
|
-
parsedArgs = {};
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
try {
|
|
16
|
-
switch (phase) {
|
|
17
|
-
case "pre": {
|
|
18
|
-
const result = await beforeToolHook(options.tool || "unknown", parsedArgs);
|
|
19
|
-
process.stdout.write(JSON.stringify(result) + "\n");
|
|
20
|
-
break;
|
|
21
|
-
}
|
|
22
|
-
case "post": {
|
|
23
|
-
let parsedResult = null;
|
|
24
|
-
if (options.result) {
|
|
25
|
-
try {
|
|
26
|
-
parsedResult = JSON.parse(options.result);
|
|
27
|
-
}
|
|
28
|
-
catch { }
|
|
29
|
-
}
|
|
30
|
-
const result = await afterToolHook(options.tool || "unknown", parsedArgs, parsedResult, options.error || null);
|
|
31
|
-
process.stdout.write(JSON.stringify(result) + "\n");
|
|
32
|
-
break;
|
|
33
|
-
}
|
|
34
|
-
case "validate": {
|
|
35
|
-
let files = [];
|
|
36
|
-
if (options.files) {
|
|
37
|
-
try {
|
|
38
|
-
files = JSON.parse(options.files);
|
|
39
|
-
}
|
|
40
|
-
catch { }
|
|
41
|
-
}
|
|
42
|
-
const result = await mcpClientManager.callServerTool("enforcer", "run-pre-commit-validation", { files, operation: "commit" });
|
|
43
|
-
process.stdout.write(JSON.stringify(result) + "\n");
|
|
44
|
-
break;
|
|
45
|
-
}
|
|
46
|
-
case "codex-check": {
|
|
47
|
-
let focusAreas = [];
|
|
48
|
-
if (options.focusAreas) {
|
|
49
|
-
try {
|
|
50
|
-
focusAreas = JSON.parse(options.focusAreas);
|
|
51
|
-
}
|
|
52
|
-
catch { }
|
|
53
|
-
}
|
|
54
|
-
const result = await mcpClientManager.callServerTool("enforcer", "codex-enforcement", {
|
|
55
|
-
operation: "write",
|
|
56
|
-
newCode: options.code || "",
|
|
57
|
-
focusAreas,
|
|
58
|
-
});
|
|
59
|
-
process.stdout.write(JSON.stringify(result) + "\n");
|
|
60
|
-
break;
|
|
61
|
-
}
|
|
62
|
-
case "health": {
|
|
63
|
-
const result = await mcpClientManager.callServerTool("enforcer", "get-enforcement-status", {});
|
|
64
|
-
process.stdout.write(JSON.stringify(result) + "\n");
|
|
65
|
-
break;
|
|
66
|
-
}
|
|
67
|
-
default:
|
|
68
|
-
process.stderr.write(`Unknown phase: ${phase}\n`);
|
|
69
|
-
process.exit(1);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
catch (err) {
|
|
73
|
-
const errMsg = err instanceof Error ? err.message : String(err);
|
|
74
|
-
await frameworkLogger.log("enforce-command", "execution-error", "error", { phase, error: errMsg });
|
|
75
|
-
const fallback = { status: "error", phase, error: errMsg };
|
|
76
|
-
process.stdout.write(JSON.stringify(fallback) + "\n");
|
|
77
|
-
}
|
|
78
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* xray govern â the primary CLI command for the v3 nucleus
|
|
3
|
-
*
|
|
4
|
-
* Usage:
|
|
5
|
-
* xray govern [options]
|
|
6
|
-
*
|
|
7
|
-
* All existing direct commands still work (backward compat with deprecation notice).
|
|
8
|
-
*/
|
|
9
|
-
interface GovernOptions {
|
|
10
|
-
status?: boolean;
|
|
11
|
-
audit?: boolean;
|
|
12
|
-
mcp?: string;
|
|
13
|
-
pluginInstall?: string;
|
|
14
|
-
proposals?: string;
|
|
15
|
-
skillInstall?: string;
|
|
16
|
-
skillRegistry?: string;
|
|
17
|
-
storyteller?: string;
|
|
18
|
-
mcpList?: boolean;
|
|
19
|
-
mcpStatus?: boolean;
|
|
20
|
-
mcpInstall?: string;
|
|
21
|
-
mcpRemove?: string;
|
|
22
|
-
publishAgent?: boolean;
|
|
23
|
-
archiveLogs?: boolean;
|
|
24
|
-
credibleInit?: string;
|
|
25
|
-
antigravityStatus?: boolean;
|
|
26
|
-
[key: string]: unknown;
|
|
27
|
-
}
|
|
28
|
-
export declare function governCommand(options: GovernOptions): Promise<void>;
|
|
29
|
-
export {};
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* xray govern â the primary CLI command for the v3 nucleus
|
|
3
|
-
*
|
|
4
|
-
* Usage:
|
|
5
|
-
* xray govern [options]
|
|
6
|
-
*
|
|
7
|
-
* All existing direct commands still work (backward compat with deprecation notice).
|
|
8
|
-
*/
|
|
9
|
-
import { resolve, join } from 'path';
|
|
10
|
-
import { readFileSync, existsSync } from 'fs';
|
|
11
|
-
import { spawn } from 'child_process';
|
|
12
|
-
export async function governCommand(options) {
|
|
13
|
-
if (options.status) {
|
|
14
|
-
const { statusCommand } = await import('./status.js');
|
|
15
|
-
await statusCommand();
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
if (options.audit) {
|
|
19
|
-
const { securityAuditCommand } = await import('./security-audit.js');
|
|
20
|
-
await securityAuditCommand();
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
if (options.mcp) {
|
|
24
|
-
const serverMap = {
|
|
25
|
-
governance: 'dist/mcps/governance.server.js',
|
|
26
|
-
skills: 'dist/mcps/knowledge-skills/skill-invocation.server.js',
|
|
27
|
-
};
|
|
28
|
-
const relPath = serverMap[options.mcp];
|
|
29
|
-
if (!relPath) {
|
|
30
|
-
console.error(`Unknown MCP server: ${options.mcp}. Use: governance, skills`);
|
|
31
|
-
process.exit(1);
|
|
32
|
-
}
|
|
33
|
-
const packageJsonPath = resolve(import.meta.url.replace(/^file:/, ''), '..', '..', 'package.json');
|
|
34
|
-
const pkg = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
35
|
-
const packageRoot = resolve(packageJsonPath, '..', pkg.xray?.dist ? join('', pkg.xray.dist) : 'dist', '..');
|
|
36
|
-
const serverPath = resolve(join(packageRoot, relPath));
|
|
37
|
-
if (!existsSync(serverPath)) {
|
|
38
|
-
console.error(`MCP server not found at ${serverPath}. Is xray installed correctly?`);
|
|
39
|
-
process.exit(1);
|
|
40
|
-
}
|
|
41
|
-
const env = { ...process.env };
|
|
42
|
-
const child = spawn(process.execPath, [serverPath], { stdio: 'inherit', env });
|
|
43
|
-
child.on('exit', (code) => process.exit(code ?? 0));
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
if (options.pluginInstall) {
|
|
47
|
-
const { pluginInstallCommand } = await import('./plugin-commands.js');
|
|
48
|
-
await pluginInstallCommand(options.pluginInstall);
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
if (options.proposals) {
|
|
52
|
-
const { handleGovernRequest } = await import('../../nucleus/index.js');
|
|
53
|
-
let proposals;
|
|
54
|
-
try {
|
|
55
|
-
proposals = JSON.parse(options.proposals);
|
|
56
|
-
}
|
|
57
|
-
catch {
|
|
58
|
-
console.error('Invalid JSON in --proposals. Expected a JSON string with a "proposals" array.');
|
|
59
|
-
console.error('Example: xray govern --proposals \'[{"type":"fix","title":"Test","description":"A test"}]\'');
|
|
60
|
-
process.exit(1);
|
|
61
|
-
}
|
|
62
|
-
const result = await handleGovernRequest(proposals);
|
|
63
|
-
console.log(JSON.stringify(result, null, 2));
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
if (options.skillInstall !== undefined) {
|
|
67
|
-
const { skillInstallCommand } = await import('./skill-install.js');
|
|
68
|
-
await skillInstallCommand(options.skillInstall || undefined);
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
if (options.skillRegistry !== undefined) {
|
|
72
|
-
const { skillRegistryCommand } = await import('./skill-install.js');
|
|
73
|
-
await skillRegistryCommand(options.skillRegistry || undefined);
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
if (options.storyteller) {
|
|
77
|
-
const { storytellerCommand } = await import('./storyteller.js');
|
|
78
|
-
await storytellerCommand(options.storyteller);
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
if (options.mcpList) {
|
|
82
|
-
const { listMCPsCommand } = await import('./mcp-install.js');
|
|
83
|
-
listMCPsCommand();
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
if (options.mcpStatus) {
|
|
87
|
-
const { showMCPStatusCommand } = await import('./mcp-install.js');
|
|
88
|
-
showMCPStatusCommand();
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
if (options.mcpInstall) {
|
|
92
|
-
const { installMCPCommand } = await import('./mcp-install.js');
|
|
93
|
-
await installMCPCommand(options.mcpInstall);
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
if (options.mcpRemove) {
|
|
97
|
-
const { removeMCPCommand } = await import('./mcp-install.js');
|
|
98
|
-
removeMCPCommand(options.mcpRemove);
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
if (options.publishAgent) {
|
|
102
|
-
const { publishAgentCommand } = await import('./publish-agent.js');
|
|
103
|
-
await publishAgentCommand();
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
if (options.archiveLogs) {
|
|
107
|
-
const { archiveLogFiles } = await import('./archive-logs.js');
|
|
108
|
-
const result = await archiveLogFiles(undefined, `govern-${Date.now()}`);
|
|
109
|
-
console.log(`\nResults:`);
|
|
110
|
-
console.log(` Archived: ${result.archived} files`);
|
|
111
|
-
if (result.errors.length > 0) {
|
|
112
|
-
console.log(` Errors: ${result.errors.length}`);
|
|
113
|
-
result.errors.forEach((e) => console.log(` - ${e}`));
|
|
114
|
-
process.exit(1);
|
|
115
|
-
}
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
if (options.credibleInit !== undefined) {
|
|
119
|
-
const { credibleInitCommand } = await import('./credible-init.js');
|
|
120
|
-
await credibleInitCommand();
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
|
-
if (options.antigravityStatus) {
|
|
124
|
-
const { antigravityStatusCommand } = await import('./antigravity-status.js');
|
|
125
|
-
await antigravityStatusCommand();
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
console.log('xray govern â the governance kernel\n');
|
|
129
|
-
console.log('Usage: xray govern [options]\n');
|
|
130
|
-
console.log('Options:');
|
|
131
|
-
console.log(' --status Show framework status');
|
|
132
|
-
console.log(' --audit Run security audit');
|
|
133
|
-
console.log(' --mcp <server> Run an MCP server (governance, skills)');
|
|
134
|
-
console.log(' --plugin-install <name> Install a plugin');
|
|
135
|
-
console.log(' --proposals <json> Run governance on JSON proposals');
|
|
136
|
-
console.log(' --skill-install [source] Install skills from registry');
|
|
137
|
-
console.log(' --skill-registry [action] Manage skill registry sources');
|
|
138
|
-
console.log(' --storyteller <type> Write a story (reflection, saga, journey, narrative)');
|
|
139
|
-
console.log(' --mcp-list List available MCP servers');
|
|
140
|
-
console.log(' --mcp-status Show installed MCP servers');
|
|
141
|
-
console.log(' --mcp-install <name> Install an MCP server');
|
|
142
|
-
console.log(' --mcp-remove <name> Remove an MCP server');
|
|
143
|
-
console.log(' --publish-agent Publish an agent to AgentStore');
|
|
144
|
-
console.log(' --archive-logs Archive log files');
|
|
145
|
-
console.log(' --credible-init [name] Initialize Credible Pod');
|
|
146
|
-
console.log(' --antigravity-status Show installed skills status');
|
|
147
|
-
console.log(' -h, --help Show this help\n');
|
|
148
|
-
console.log('All existing commands still work: xray status, xray security-audit, etc.');
|
|
149
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Security Audit CLI Command
|
|
3
|
-
*
|
|
4
|
-
* Comprehensive security audit with vulnerability scanning,
|
|
5
|
-
* compliance checking, and weighted voting for architectural decisions.
|
|
6
|
-
*
|
|
7
|
-
* Usage:
|
|
8
|
-
* npx 0xray security-audit # Quick audit
|
|
9
|
-
* npx 0xray security-audit --deep # Deep audit with all standards
|
|
10
|
-
* npx 0xray security-audit --output ./reports/security.md
|
|
11
|
-
* npx 0xray security-audit --no-remediation
|
|
12
|
-
* npx 0xray security-audit --no-voting
|
|
13
|
-
*
|
|
14
|
-
* Options:
|
|
15
|
-
* --deep Deep scan with all compliance standards (OWASP, CWE, NIST, ISO, PCI)
|
|
16
|
-
* --output <path> Output report to file (JSON or Markdown)
|
|
17
|
-
* --format <fmt> Output format: json, markdown (default: markdown)
|
|
18
|
-
* --no-remediation Skip automated remediation analysis
|
|
19
|
-
* --no-voting Disable weighted voting for architectural decisions
|
|
20
|
-
* --project <path> Project path to audit (default: current directory)
|
|
21
|
-
*/
|
|
22
|
-
export declare function securityAuditCommand(args?: string[]): Promise<void>;
|
|
23
|
-
export default securityAuditCommand;
|
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Security Audit CLI Command
|
|
3
|
-
*
|
|
4
|
-
* Comprehensive security audit with vulnerability scanning,
|
|
5
|
-
* compliance checking, and weighted voting for architectural decisions.
|
|
6
|
-
*
|
|
7
|
-
* Usage:
|
|
8
|
-
* npx 0xray security-audit # Quick audit
|
|
9
|
-
* npx 0xray security-audit --deep # Deep audit with all standards
|
|
10
|
-
* npx 0xray security-audit --output ./reports/security.md
|
|
11
|
-
* npx 0xray security-audit --no-remediation
|
|
12
|
-
* npx 0xray security-audit --no-voting
|
|
13
|
-
*
|
|
14
|
-
* Options:
|
|
15
|
-
* --deep Deep scan with all compliance standards (OWASP, CWE, NIST, ISO, PCI)
|
|
16
|
-
* --output <path> Output report to file (JSON or Markdown)
|
|
17
|
-
* --format <fmt> Output format: json, markdown (default: markdown)
|
|
18
|
-
* --no-remediation Skip automated remediation analysis
|
|
19
|
-
* --no-voting Disable weighted voting for architectural decisions
|
|
20
|
-
* --project <path> Project path to audit (default: current directory)
|
|
21
|
-
*/
|
|
22
|
-
import { join } from "path";
|
|
23
|
-
import { writeFileSync, existsSync, mkdirSync } from "fs";
|
|
24
|
-
import { frameworkLogger } from "../../core/framework-logger.js";
|
|
25
|
-
import { createSecurityAuditSystem, runQuickSecurityAudit, runDeepSecurityAudit, } from "../../security/comprehensive-security-audit.js";
|
|
26
|
-
function parseArgs(args) {
|
|
27
|
-
const options = {
|
|
28
|
-
deep: false,
|
|
29
|
-
output: null,
|
|
30
|
-
format: "markdown",
|
|
31
|
-
enableRemediation: true,
|
|
32
|
-
enableVoting: true,
|
|
33
|
-
projectPath: null,
|
|
34
|
-
};
|
|
35
|
-
for (let i = 0; i < args.length; i++) {
|
|
36
|
-
const arg = args[i];
|
|
37
|
-
switch (arg) {
|
|
38
|
-
case "--deep":
|
|
39
|
-
options.deep = true;
|
|
40
|
-
break;
|
|
41
|
-
case "--output":
|
|
42
|
-
case "-o":
|
|
43
|
-
options.output = args[++i] || null;
|
|
44
|
-
break;
|
|
45
|
-
case "--format":
|
|
46
|
-
case "-f":
|
|
47
|
-
const format = args[++i]?.toLowerCase();
|
|
48
|
-
if (format === "json" || format === "markdown") {
|
|
49
|
-
options.format = format;
|
|
50
|
-
}
|
|
51
|
-
break;
|
|
52
|
-
case "--no-remediation":
|
|
53
|
-
options.enableRemediation = false;
|
|
54
|
-
break;
|
|
55
|
-
case "--no-voting":
|
|
56
|
-
options.enableVoting = false;
|
|
57
|
-
break;
|
|
58
|
-
case "--project":
|
|
59
|
-
case "-p":
|
|
60
|
-
options.projectPath = args[++i] || null;
|
|
61
|
-
break;
|
|
62
|
-
case "--help":
|
|
63
|
-
case "-h":
|
|
64
|
-
printHelp();
|
|
65
|
-
process.exit(0);
|
|
66
|
-
break;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
return options;
|
|
70
|
-
}
|
|
71
|
-
function printHelp() {
|
|
72
|
-
console.log(`
|
|
73
|
-
0xRay Security Audit Command
|
|
74
|
-
|
|
75
|
-
Comprehensive security audit with vulnerability scanning, compliance checking,
|
|
76
|
-
and weighted voting for architectural decisions.
|
|
77
|
-
|
|
78
|
-
Usage:
|
|
79
|
-
npx 0xray security-audit [options]
|
|
80
|
-
|
|
81
|
-
Options:
|
|
82
|
-
--deep Deep scan with all compliance standards
|
|
83
|
-
--output, -o Output report to file
|
|
84
|
-
--format, -f Output format: json, markdown (default: markdown)
|
|
85
|
-
--no-remediation Skip automated remediation analysis
|
|
86
|
-
--no-voting Disable weighted voting for architectural decisions
|
|
87
|
-
--project, -p Project path to audit
|
|
88
|
-
--help, -h Show this help message
|
|
89
|
-
|
|
90
|
-
Examples:
|
|
91
|
-
npx 0xray security-audit
|
|
92
|
-
npx 0xray security-audit --deep
|
|
93
|
-
npx 0xray security-audit --output ./security-report.md
|
|
94
|
-
npx 0xray security-audit --format json --output ./report.json
|
|
95
|
-
`);
|
|
96
|
-
}
|
|
97
|
-
async function runSecurityAudit(options) {
|
|
98
|
-
const projectPath = options.projectPath || process.cwd();
|
|
99
|
-
const config = {
|
|
100
|
-
projectPath,
|
|
101
|
-
scanDepth: options.deep ? "deep" : "shallow",
|
|
102
|
-
includeDependencies: true,
|
|
103
|
-
complianceStandards: options.deep
|
|
104
|
-
? ["owasp-top-10", "cwe", "nist", "iso-27001", "pci-dss"]
|
|
105
|
-
: ["owasp-top-10", "cwe"],
|
|
106
|
-
enableAutoRemediation: options.enableRemediation,
|
|
107
|
-
enableWeightedVoting: options.enableVoting,
|
|
108
|
-
};
|
|
109
|
-
await frameworkLogger.log("security-audit-cli", "audit-started", "info", {
|
|
110
|
-
projectPath,
|
|
111
|
-
deep: options.deep,
|
|
112
|
-
format: options.format,
|
|
113
|
-
});
|
|
114
|
-
if (options.deep) {
|
|
115
|
-
return runDeepSecurityAudit(projectPath, options.output || undefined);
|
|
116
|
-
}
|
|
117
|
-
return runQuickSecurityAudit(projectPath);
|
|
118
|
-
}
|
|
119
|
-
function formatReport(report, format) {
|
|
120
|
-
if (format === "json") {
|
|
121
|
-
return JSON.stringify(report, null, 2);
|
|
122
|
-
}
|
|
123
|
-
const system = createSecurityAuditSystem({
|
|
124
|
-
projectPath: report.metadata.projectPath,
|
|
125
|
-
enableWeightedVoting: false,
|
|
126
|
-
});
|
|
127
|
-
return system.generateMarkdownReport(report);
|
|
128
|
-
}
|
|
129
|
-
function printSummary(report) {
|
|
130
|
-
const scoreEmoji = report.summary.securityScore >= 90
|
|
131
|
-
? "đĸ"
|
|
132
|
-
: report.summary.securityScore >= 70
|
|
133
|
-
? "đĄ"
|
|
134
|
-
: report.summary.securityScore >= 50
|
|
135
|
-
? "đ "
|
|
136
|
-
: "đ´";
|
|
137
|
-
console.log("");
|
|
138
|
-
console.log("ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ");
|
|
139
|
-
console.log("â 0xRay Security Audit Report â");
|
|
140
|
-
console.log("ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ");
|
|
141
|
-
console.log("");
|
|
142
|
-
console.log(` đ Security Score: ${scoreEmoji} ${report.summary.securityScore}/100`);
|
|
143
|
-
console.log(` đ Files Scanned: ${report.metadata.totalFilesScanned}`);
|
|
144
|
-
console.log(` âąī¸ Duration: ${report.metadata.duration}ms`);
|
|
145
|
-
console.log("");
|
|
146
|
-
console.log(" Vulnerability Summary:");
|
|
147
|
-
console.log(` đ¨ Critical: ${report.summary.bySeverity.critical}`);
|
|
148
|
-
console.log(` đ´ High: ${report.summary.bySeverity.high}`);
|
|
149
|
-
console.log(` đĄ Medium: ${report.summary.bySeverity.medium}`);
|
|
150
|
-
console.log(` đĸ Low: ${report.summary.bySeverity.low}`);
|
|
151
|
-
console.log(` âšī¸ Info: ${report.summary.bySeverity.info}`);
|
|
152
|
-
console.log("");
|
|
153
|
-
if (report.compliance.length > 0) {
|
|
154
|
-
console.log(" Compliance Results:");
|
|
155
|
-
for (const result of report.compliance) {
|
|
156
|
-
const status = result.passed ? "â
" : "â";
|
|
157
|
-
console.log(` ${status} ${result.standard}: ${result.score}/100`);
|
|
158
|
-
}
|
|
159
|
-
console.log("");
|
|
160
|
-
}
|
|
161
|
-
if (report.remediation.totalIssues > 0) {
|
|
162
|
-
console.log(" Remediation Plan:");
|
|
163
|
-
console.log(` Total Issues: ${report.remediation.totalIssues}`);
|
|
164
|
-
console.log(` Automatable: ${report.remediation.automatable}`);
|
|
165
|
-
console.log(` Manual Fix: ${report.remediation.manualRequired}`);
|
|
166
|
-
console.log(` Est. Time: ${report.remediation.estimatedFixTime}`);
|
|
167
|
-
console.log("");
|
|
168
|
-
}
|
|
169
|
-
if (report.agentConsensus) {
|
|
170
|
-
console.log(" Agent Consensus:");
|
|
171
|
-
console.log(` Agreement: ${report.agentConsensus.averageAgreement}%`);
|
|
172
|
-
console.log(` Agents: ${report.agentConsensus.participatingAgents.join(", ")}`);
|
|
173
|
-
console.log("");
|
|
174
|
-
}
|
|
175
|
-
console.log(` Audit ID: ${report.metadata.auditId}`);
|
|
176
|
-
console.log(` Generated: ${report.metadata.timestamp.toISOString()}`);
|
|
177
|
-
console.log("");
|
|
178
|
-
}
|
|
179
|
-
function saveReport(content, outputPath) {
|
|
180
|
-
const dir = join(outputPath, "..");
|
|
181
|
-
if (!existsSync(dir)) {
|
|
182
|
-
mkdirSync(dir, { recursive: true });
|
|
183
|
-
}
|
|
184
|
-
writeFileSync(outputPath, content, "utf-8");
|
|
185
|
-
}
|
|
186
|
-
export async function securityAuditCommand(args = process.argv.slice(2)) {
|
|
187
|
-
try {
|
|
188
|
-
const options = parseArgs(args);
|
|
189
|
-
const report = await runSecurityAudit(options);
|
|
190
|
-
printSummary(report);
|
|
191
|
-
if (options.output) {
|
|
192
|
-
const content = formatReport(report, options.format);
|
|
193
|
-
saveReport(content, options.output);
|
|
194
|
-
console.log(` đ Report saved to: ${options.output}`);
|
|
195
|
-
console.log("");
|
|
196
|
-
}
|
|
197
|
-
await frameworkLogger.log("security-audit-cli", "audit-completed", "info", {
|
|
198
|
-
auditId: report.metadata.auditId,
|
|
199
|
-
vulnerabilities: report.summary.totalVulnerabilities,
|
|
200
|
-
securityScore: report.summary.securityScore,
|
|
201
|
-
output: options.output,
|
|
202
|
-
});
|
|
203
|
-
process.exit(report.summary.bySeverity.critical > 0 ? 2 : 0);
|
|
204
|
-
}
|
|
205
|
-
catch (error) {
|
|
206
|
-
await frameworkLogger.log("security-audit-cli", "audit-failed", "error", {
|
|
207
|
-
error: String(error),
|
|
208
|
-
});
|
|
209
|
-
console.error("");
|
|
210
|
-
console.error(" â Security audit failed:");
|
|
211
|
-
console.error(` ${error}`);
|
|
212
|
-
console.error("");
|
|
213
|
-
process.exit(1);
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
export default securityAuditCommand;
|
|
217
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
218
|
-
securityAuditCommand();
|
|
219
|
-
}
|
package/dist/cli/server.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|