0xray 2.0.1 → 2.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/.opencode/codex.codex +1 -1
- package/.opencode/commands/dependency-audit.md +3 -3
- package/.opencode/enforcer-config.json +2 -2
- package/.opencode/hooks/post-commit +1 -1
- package/.opencode/init.sh +2 -2
- package/AGENTS.md +1 -1
- package/README.md +2 -2
- package/dist/AGENTS.md +1 -1
- package/dist/CHANGELOG.md +10 -0
- package/dist/README.md +2 -2
- package/dist/analytics/routing-refiner.js +1 -1
- package/dist/benchmark/performance-benchmark.d.ts +2 -2
- package/dist/benchmark/performance-benchmark.js +3 -3
- package/dist/cli/commands/hermes-install.js +4 -4
- package/dist/cli/commands/mcp-install.js +1 -1
- package/dist/cli/commands/openclaw-install.js +1 -1
- package/dist/cli/commands/plugin-commands.js +2 -2
- package/dist/cli/commands/publish-agent.js +5 -5
- package/dist/cli/commands/skill-install.js +1 -1
- package/dist/cli/commands/status.js +3 -3
- package/dist/cli/commands/storyteller.js +2 -2
- package/dist/cli/index.js +8 -8
- package/dist/cli/server.js +1 -1
- package/dist/core/agent-spawn-gate.d.ts +1 -1
- package/dist/core/agent-spawn-gate.js +1 -1
- package/dist/core/boot-orchestrator.d.ts +4 -4
- package/dist/core/boot-orchestrator.js +27 -27
- package/dist/core/bridge.mjs +22 -22
- package/dist/core/codex-formatter.js +2 -2
- package/dist/core/codex-injector.d.ts +4 -3
- package/dist/core/codex-injector.js +11 -10
- package/dist/core/config-loader.d.ts +5 -4
- package/dist/core/config-loader.js +4 -2
- package/dist/core/config-paths.d.ts +9 -8
- package/dist/core/config-paths.js +24 -23
- package/dist/core/context-loader.d.ts +4 -3
- package/dist/core/context-loader.js +7 -5
- package/dist/core/features-config.js +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.js +1 -1
- package/dist/core/orchestrator.d.ts +1 -0
- package/dist/core/orchestrator.js +3 -2
- package/dist/core/system-prompt-generator.js +2 -2
- package/dist/core/xray-activation.d.ts +4 -4
- package/dist/core/xray-activation.js +29 -24
- package/dist/delegation/agent-delegator.d.ts +3 -3
- package/dist/delegation/agent-delegator.js +3 -3
- package/dist/delegation/metrics-aggregator.d.ts +11 -11
- package/dist/delegation/session-coordinator.d.ts +3 -3
- package/dist/delegation/voting-coordinator.d.ts +3 -3
- package/dist/enforcement/enforcer-tools.js +2 -2
- package/dist/enforcement/loaders/codex-loader.d.ts +1 -1
- package/dist/enforcement/loaders/codex-loader.js +2 -2
- package/dist/index.d.ts +5 -5
- package/dist/index.js +6 -6
- package/dist/inference/deploy-verifier.js +1 -1
- package/dist/inference/inference-cycle.js +7 -7
- package/dist/integrations/base/README.md +2 -2
- package/dist/integrations/governance/index.js +1 -1
- package/dist/integrations/grok/grok-cli.d.ts +1 -1
- package/dist/integrations/grok/grok-cli.js +6 -6
- package/dist/integrations/grok/hooks/pre-tool-use.js +1 -1
- package/dist/integrations/grok/plugin/0xray/.mcp.json +3 -3
- package/dist/integrations/grok/plugin/0xray/hooks/hooks.json +2 -2
- package/dist/integrations/hermes-agent/__init__.py +77 -71
- package/dist/integrations/hermes-agent/__pycache__/__init__.cpython-313.pyc +0 -0
- package/dist/integrations/hermes-agent/__pycache__/conftest.cpython-313-pytest-9.0.2.pyc +0 -0
- package/dist/integrations/hermes-agent/__pycache__/schemas.cpython-313.pyc +0 -0
- package/dist/integrations/hermes-agent/__pycache__/test_plugin.cpython-313-pytest-9.0.2.pyc +0 -0
- package/dist/integrations/hermes-agent/__pycache__/test_plugin.cpython-313.pyc +0 -0
- package/dist/integrations/hermes-agent/__pycache__/tools.cpython-313.pyc +0 -0
- package/dist/integrations/hermes-agent/after-install.md +14 -14
- package/dist/integrations/hermes-agent/bridge.mjs +14 -14
- package/dist/integrations/hermes-agent/logs/framework/routing-outcomes.json +1 -0
- package/dist/integrations/hermes-agent/plugin.yaml +5 -5
- package/dist/integrations/hermes-agent/schemas.py +12 -12
- package/dist/integrations/hermes-agent/test_plugin.py +128 -125
- package/dist/integrations/hermes-agent/tools.py +85 -23
- package/dist/integrations/openclaw/README.md +16 -16
- package/dist/integrations/openclaw/api-server.d.ts +4 -4
- package/dist/integrations/openclaw/api-server.js +9 -9
- package/dist/integrations/openclaw/config.js +1 -1
- package/dist/integrations/openclaw/hooks/{strray-hooks.d.ts → xray-hooks.d.ts} +4 -4
- package/dist/integrations/openclaw/index.d.ts +4 -4
- package/dist/integrations/openclaw/index.js +4 -4
- package/dist/integrations/openclaw/types.d.ts +1 -1
- package/dist/integrations/plugins/plugin-registry.js +2 -2
- package/dist/mcps/architect-tools.server.d.ts +2 -2
- package/dist/mcps/architect-tools.server.js +4 -4
- package/dist/mcps/auto-format.server.d.ts +2 -2
- package/dist/mcps/auto-format.server.js +4 -4
- package/dist/mcps/boot-orchestrator.server.d.ts +2 -2
- package/dist/mcps/boot-orchestrator.server.js +4 -4
- package/dist/mcps/config/server-config-registry.d.ts +1 -1
- package/dist/mcps/config/server-config-registry.js +7 -7
- package/dist/mcps/connection/mcp-connection.js +1 -1
- package/dist/mcps/enforcer-tools.server.d.ts +2 -2
- package/dist/mcps/enforcer-tools.server.js +4 -4
- package/dist/mcps/estimation.server.js +1 -1
- package/dist/mcps/framework-compliance-audit.server.d.ts +2 -2
- package/dist/mcps/framework-compliance-audit.server.js +4 -4
- package/dist/mcps/framework-help.server.js +7 -7
- package/dist/mcps/governance.server.js +1 -1
- package/dist/mcps/in-process-skill-registry.js +6 -6
- package/dist/mcps/knowledge-skills/api-design.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/api-design.server.js +4 -4
- package/dist/mcps/knowledge-skills/architecture-patterns.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/architecture-patterns.server.js +4 -4
- package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +1 -1
- package/dist/mcps/knowledge-skills/code-analyzer.server.js +1 -1
- package/dist/mcps/knowledge-skills/code-review.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/code-review.server.js +4 -4
- package/dist/mcps/knowledge-skills/content-creator.server.js +1 -1
- package/dist/mcps/knowledge-skills/database-design.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/database-design.server.js +4 -4
- package/dist/mcps/knowledge-skills/devops-deployment.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/devops-deployment.server.js +4 -4
- package/dist/mcps/knowledge-skills/git-workflow.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/git-workflow.server.js +4 -4
- package/dist/mcps/knowledge-skills/growth-strategist.server.js +1 -1
- package/dist/mcps/knowledge-skills/log-monitor.server.js +1 -1
- package/dist/mcps/knowledge-skills/mobile-development.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/mobile-development.server.js +4 -4
- package/dist/mcps/knowledge-skills/multimodal-looker.server.js +1 -1
- package/dist/mcps/knowledge-skills/performance-optimization.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/performance-optimization.server.js +4 -4
- package/dist/mcps/knowledge-skills/project-analysis.server.js +1 -1
- package/dist/mcps/knowledge-skills/refactoring-strategies.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +4 -4
- package/dist/mcps/knowledge-skills/security-audit.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/security-audit.server.js +4 -4
- package/dist/mcps/knowledge-skills/seo-consultant.server.js +1 -1
- package/dist/mcps/knowledge-skills/session-management.server.js +1 -1
- package/dist/mcps/knowledge-skills/skill-invocation.server.js +1 -1
- package/dist/mcps/knowledge-skills/strategist.server.js +1 -1
- package/dist/mcps/knowledge-skills/tech-writer.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/tech-writer.server.js +5 -5
- package/dist/mcps/knowledge-skills/testing-best-practices.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/testing-best-practices.server.js +4 -4
- package/dist/mcps/knowledge-skills/testing-strategy.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/testing-strategy.server.js +4 -4
- package/dist/mcps/knowledge-skills/ui-ux-design.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/ui-ux-design.server.js +6 -6
- package/dist/mcps/lint.server.d.ts +2 -2
- package/dist/mcps/lint.server.js +6 -6
- package/dist/mcps/mcp-client.js +3 -3
- package/dist/mcps/model-health-check.server.d.ts +2 -2
- package/dist/mcps/model-health-check.server.js +4 -4
- package/dist/mcps/orchestrator/server.js +2 -2
- package/dist/mcps/performance-analysis.server.d.ts +2 -2
- package/dist/mcps/performance-analysis.server.js +4 -4
- package/dist/mcps/processor-pipeline.server.d.ts +2 -2
- package/dist/mcps/processor-pipeline.server.js +4 -4
- package/dist/mcps/registry.json +1 -1
- package/dist/mcps/researcher.server.d.ts +3 -3
- package/dist/mcps/researcher.server.js +5 -5
- package/dist/mcps/security-scan.server.d.ts +2 -2
- package/dist/mcps/security-scan.server.js +4 -4
- package/dist/mcps/simulation/server-simulations.js +3 -3
- package/dist/mcps/state-manager.server.js +1 -1
- package/dist/metrics/agent-metrics.d.ts +4 -4
- package/dist/metrics/agent-metrics.js +1 -1
- package/dist/orchestrator/enhanced-multi-agent-orchestrator.d.ts +2 -2
- package/dist/orchestrator/enhanced-multi-agent-orchestrator.js +2 -2
- package/dist/orchestrator/intelligent-commit-batcher.d.ts +1 -1
- package/dist/orchestrator/intelligent-commit-batcher.js +3 -3
- package/dist/orchestrator/multi-agent-orchestration-coordinator.d.ts +3 -3
- package/dist/orchestrator/multi-agent-orchestration-coordinator.js +9 -9
- package/dist/orchestrator/orchestrator.d.ts +3 -2
- package/dist/orchestrator/orchestrator.js +8 -6
- package/dist/orchestrator/universal-registry-bridge.js +1 -1
- package/dist/plugin/xray-codex-injection.d.ts +1 -1
- package/dist/plugin/xray-codex-injection.js +8 -7
- package/dist/postprocessor/PostProcessor.d.ts +2 -2
- package/dist/postprocessor/PostProcessor.js +1 -1
- package/dist/postprocessor/monitoring/MonitoringEngine.d.ts +2 -2
- package/dist/postprocessor/services/RegressionAnalysisService.js +2 -2
- package/dist/postprocessor/triggers/GitHookTrigger.js +14 -14
- package/dist/processors/implementations/agents-md-validation-processor.js +2 -2
- package/dist/processors/implementations/inference-improvement-processor.js +2 -2
- package/dist/processors/implementations/log-protection-processor.d.ts +1 -1
- package/dist/processors/implementations/log-protection-processor.js +2 -2
- package/dist/processors/implementations/publish-preflight-processor.d.ts +1 -1
- package/dist/processors/implementations/publish-preflight-processor.js +3 -3
- package/dist/processors/implementations/regression-testing-processor.js +2 -2
- package/dist/processors/implementations/session-summary-processor.js +2 -2
- package/dist/processors/implementations/storytelling-trigger-processor.js +2 -2
- package/dist/processors/processor-manager.d.ts +2 -2
- 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 +2 -2
- package/dist/session/session-cleanup-manager.d.ts +3 -3
- package/dist/session/session-monitor.d.ts +3 -3
- package/dist/session/session-state-manager.d.ts +3 -3
- package/dist/skills/hermes-agent/SKILL.md +12 -12
- package/dist/skills/registry.json +1 -1
- package/dist/skills/storyteller/SKILL.md +1 -1
- package/dist/skills/xray-orchestrator/SKILL.md +141 -0
- package/dist/skills/xray-orchestrator/index.d.ts +13 -0
- package/dist/skills/xray-orchestrator/index.js +224 -0
- package/dist/state/index.d.ts +2 -1
- package/dist/state/index.js +2 -1
- package/dist/state/state-manager.d.ts +2 -2
- package/dist/state/state-manager.js +5 -4
- package/dist/utils/import-resolver.js +1 -1
- package/dist/utils/path-resolver.js +2 -2
- package/dist/utils/token-manager.js +1 -1
- package/dist/validation/estimation-validator.js +1 -1
- package/package.json +2 -2
- package/scripts/hooks/pre-command +1 -1
- package/scripts/hooks/run-hook.js +2 -2
- package/scripts/node/auto-reflection-generator.mjs +2 -2
- package/scripts/node/postinstall.cjs +1 -1
- package/scripts/node/pre-publish-guard.js +16 -10
- package/scripts/node/release.js +6 -6
- package/scripts/node/release.mjs +11 -11
- package/scripts/node/universal-version-manager.js +2 -2
- package/scripts/node/version-manager.mjs +1 -1
- package/src/integrations/grok/plugin/0xray/.mcp.json +3 -3
- package/src/integrations/grok/plugin/0xray/hooks/hooks.json +2 -2
- package/src/mcps/architect-tools.server.ts +4 -4
- package/src/mcps/auto-format.server.ts +4 -4
- package/src/mcps/boot-orchestrator.server.ts +4 -4
- package/src/mcps/config/server-config-registry.ts +7 -7
- package/src/mcps/connection/mcp-connection.ts +1 -1
- package/src/mcps/enforcer-tools.server.ts +4 -4
- package/src/mcps/estimation.server.ts +1 -1
- package/src/mcps/framework-compliance-audit.server.ts +4 -4
- package/src/mcps/framework-help.server.ts +7 -7
- package/src/mcps/governance.server.ts +1 -1
- package/src/mcps/in-process-skill-registry.ts +6 -6
- package/src/mcps/knowledge-skills/api-design.server.test.ts +8 -8
- package/src/mcps/knowledge-skills/api-design.server.ts +4 -4
- package/src/mcps/knowledge-skills/architecture-patterns.server.ts +4 -4
- package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +1 -1
- package/src/mcps/knowledge-skills/code-analyzer.server.ts +1 -1
- package/src/mcps/knowledge-skills/code-review.server.ts +4 -4
- package/src/mcps/knowledge-skills/content-creator.server.ts +1 -1
- package/src/mcps/knowledge-skills/database-design.server.ts +4 -4
- package/src/mcps/knowledge-skills/devops-deployment.server.ts +4 -4
- package/src/mcps/knowledge-skills/git-workflow.server.ts +4 -4
- package/src/mcps/knowledge-skills/growth-strategist.server.ts +1 -1
- package/src/mcps/knowledge-skills/log-monitor.server.ts +1 -1
- package/src/mcps/knowledge-skills/mobile-development.server.ts +4 -4
- package/src/mcps/knowledge-skills/multimodal-looker.server.ts +1 -1
- package/src/mcps/knowledge-skills/performance-optimization.server.ts +4 -4
- package/src/mcps/knowledge-skills/project-analysis.server.ts +1 -1
- package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +4 -4
- package/src/mcps/knowledge-skills/security-audit.server.test.ts +23 -23
- package/src/mcps/knowledge-skills/security-audit.server.ts +4 -4
- package/src/mcps/knowledge-skills/seo-consultant.server.ts +1 -1
- package/src/mcps/knowledge-skills/session-management.server.ts +1 -1
- package/src/mcps/knowledge-skills/skill-invocation.server.ts +1 -1
- package/src/mcps/knowledge-skills/strategist.server.ts +1 -1
- package/src/mcps/knowledge-skills/tech-writer.server.ts +5 -5
- package/src/mcps/knowledge-skills/testing-best-practices.server.test.ts +28 -28
- package/src/mcps/knowledge-skills/testing-best-practices.server.ts +4 -4
- package/src/mcps/knowledge-skills/testing-strategy.server.test.ts +19 -19
- package/src/mcps/knowledge-skills/testing-strategy.server.ts +4 -4
- package/src/mcps/knowledge-skills/ui-ux-design.server.ts +6 -6
- package/src/mcps/lint.server.ts +6 -6
- package/src/mcps/mcp-client.ts +3 -3
- package/src/mcps/model-health-check.server.ts +4 -4
- package/src/mcps/orchestrator/server.ts +2 -2
- package/src/mcps/performance-analysis.server.ts +4 -4
- package/src/mcps/processor-pipeline.server.ts +4 -4
- package/src/mcps/registry.json +1 -1
- package/src/mcps/researcher.server.ts +5 -5
- package/src/mcps/security-scan.server.ts +4 -4
- package/src/mcps/simulation/server-simulations.ts +3 -3
- package/src/mcps/state-manager.server.ts +1 -1
- package/src/opencode/codex.codex +1 -1
- package/src/opencode/commands/dependency-audit.md +3 -3
- package/src/opencode/enforcer-config.json +2 -2
- package/src/skills/hermes-agent/SKILL.md +12 -12
- package/src/skills/registry.json +1 -1
- package/src/skills/storyteller/SKILL.md +1 -1
- package/src/skills/xray-orchestrator/SKILL.md +141 -0
- package/src/skills/xray-orchestrator/index.ts +268 -0
- package/scripts/validate-stringray-comprehensive.js +0 -636
- /package/dist/integrations/openclaw/hooks/{strray-hooks.js → xray-hooks.js} +0 -0
|
@@ -3,37 +3,37 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
import { describe, it, expect, beforeEach } from "vitest";
|
|
6
|
-
import {
|
|
6
|
+
import { XraySecurityAuditServer } from "./security-audit.server";
|
|
7
7
|
import * as fs from "fs";
|
|
8
8
|
import * as path from "path";
|
|
9
9
|
|
|
10
10
|
describe("security-audit.server integration", () => {
|
|
11
11
|
describe("module exports", () => {
|
|
12
12
|
it("should export server class", () => {
|
|
13
|
-
expect(
|
|
14
|
-
expect(typeof
|
|
13
|
+
expect(XraySecurityAuditServer).toBeDefined();
|
|
14
|
+
expect(typeof XraySecurityAuditServer).toBe("function");
|
|
15
15
|
});
|
|
16
16
|
|
|
17
17
|
it("should be able to instantiate the server", () => {
|
|
18
|
-
const server = new
|
|
18
|
+
const server = new XraySecurityAuditServer();
|
|
19
19
|
expect(server).toBeDefined();
|
|
20
20
|
});
|
|
21
21
|
|
|
22
22
|
it("should have run method", () => {
|
|
23
|
-
const server = new
|
|
23
|
+
const server = new XraySecurityAuditServer();
|
|
24
24
|
expect(typeof server.run).toBe("function");
|
|
25
25
|
});
|
|
26
26
|
});
|
|
27
27
|
|
|
28
28
|
describe("server structure", () => {
|
|
29
|
-
let server:
|
|
29
|
+
let server: XraySecurityAuditServer;
|
|
30
30
|
|
|
31
31
|
beforeEach(() => {
|
|
32
|
-
server = new
|
|
32
|
+
server = new XraySecurityAuditServer();
|
|
33
33
|
});
|
|
34
34
|
|
|
35
35
|
it("should instantiate correctly", () => {
|
|
36
|
-
expect(server).toBeInstanceOf(
|
|
36
|
+
expect(server).toBeInstanceOf(XraySecurityAuditServer);
|
|
37
37
|
});
|
|
38
38
|
|
|
39
39
|
it("should have run async method", () => {
|
|
@@ -42,10 +42,10 @@ describe("security-audit.server integration", () => {
|
|
|
42
42
|
});
|
|
43
43
|
|
|
44
44
|
describe("security audit capabilities", () => {
|
|
45
|
-
let server:
|
|
45
|
+
let server: XraySecurityAuditServer;
|
|
46
46
|
|
|
47
47
|
beforeEach(() => {
|
|
48
|
-
server = new
|
|
48
|
+
server = new XraySecurityAuditServer();
|
|
49
49
|
});
|
|
50
50
|
|
|
51
51
|
it("should analyze TypeScript files", () => {
|
|
@@ -61,52 +61,52 @@ describe("security-audit.server integration", () => {
|
|
|
61
61
|
});
|
|
62
62
|
|
|
63
63
|
it("should detect multiple vulnerability categories", () => {
|
|
64
|
-
const server = new
|
|
65
|
-
expect(server).toBeInstanceOf(
|
|
64
|
+
const server = new XraySecurityAuditServer();
|
|
65
|
+
expect(server).toBeInstanceOf(XraySecurityAuditServer);
|
|
66
66
|
});
|
|
67
67
|
});
|
|
68
68
|
|
|
69
69
|
describe("vulnerability detection", () => {
|
|
70
|
-
let server:
|
|
70
|
+
let server: XraySecurityAuditServer;
|
|
71
71
|
|
|
72
72
|
beforeEach(() => {
|
|
73
|
-
server = new
|
|
73
|
+
server = new XraySecurityAuditServer();
|
|
74
74
|
});
|
|
75
75
|
|
|
76
76
|
it("should handle injection vulnerabilities", () => {
|
|
77
|
-
expect(server).toBeInstanceOf(
|
|
77
|
+
expect(server).toBeInstanceOf(XraySecurityAuditServer);
|
|
78
78
|
});
|
|
79
79
|
|
|
80
80
|
it("should handle authentication vulnerabilities", () => {
|
|
81
|
-
expect(server).toBeInstanceOf(
|
|
81
|
+
expect(server).toBeInstanceOf(XraySecurityAuditServer);
|
|
82
82
|
});
|
|
83
83
|
|
|
84
84
|
it("should handle cryptography issues", () => {
|
|
85
|
-
expect(server).toBeInstanceOf(
|
|
85
|
+
expect(server).toBeInstanceOf(XraySecurityAuditServer);
|
|
86
86
|
});
|
|
87
87
|
|
|
88
88
|
it("should handle configuration issues", () => {
|
|
89
|
-
expect(server).toBeInstanceOf(
|
|
89
|
+
expect(server).toBeInstanceOf(XraySecurityAuditServer);
|
|
90
90
|
});
|
|
91
91
|
|
|
92
92
|
it("should handle data protection issues", () => {
|
|
93
|
-
expect(server).toBeInstanceOf(
|
|
93
|
+
expect(server).toBeInstanceOf(XraySecurityAuditServer);
|
|
94
94
|
});
|
|
95
95
|
});
|
|
96
96
|
|
|
97
97
|
describe("compliance checking", () => {
|
|
98
|
-
let server:
|
|
98
|
+
let server: XraySecurityAuditServer;
|
|
99
99
|
|
|
100
100
|
beforeEach(() => {
|
|
101
|
-
server = new
|
|
101
|
+
server = new XraySecurityAuditServer();
|
|
102
102
|
});
|
|
103
103
|
|
|
104
104
|
it("should check OWASP Top 10 compliance", () => {
|
|
105
|
-
expect(server).toBeInstanceOf(
|
|
105
|
+
expect(server).toBeInstanceOf(XraySecurityAuditServer);
|
|
106
106
|
});
|
|
107
107
|
|
|
108
108
|
it("should support multiple compliance frameworks", () => {
|
|
109
|
-
expect(server).toBeInstanceOf(
|
|
109
|
+
expect(server).toBeInstanceOf(XraySecurityAuditServer);
|
|
110
110
|
});
|
|
111
111
|
});
|
|
112
112
|
});
|
|
@@ -84,13 +84,13 @@ interface AnalyzeProposalArgs {
|
|
|
84
84
|
proposalType?: string;
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
class
|
|
87
|
+
class XraySecurityAuditServer {
|
|
88
88
|
private server: Server;
|
|
89
89
|
|
|
90
90
|
constructor() {
|
|
91
91
|
this.server = new Server(
|
|
92
92
|
{
|
|
93
|
-
name: "security-audit", version: "2.0.
|
|
93
|
+
name: "security-audit", version: "2.0.1",
|
|
94
94
|
},
|
|
95
95
|
{
|
|
96
96
|
capabilities: {
|
|
@@ -1186,8 +1186,8 @@ class StringRaySecurityAuditServer {
|
|
|
1186
1186
|
|
|
1187
1187
|
// Run the server if this file is executed directly
|
|
1188
1188
|
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
1189
|
-
const server = new
|
|
1189
|
+
const server = new XraySecurityAuditServer();
|
|
1190
1190
|
server.run().catch(() => {});
|
|
1191
1191
|
}
|
|
1192
1192
|
|
|
1193
|
-
export {
|
|
1193
|
+
export { XraySecurityAuditServer };
|
|
@@ -160,13 +160,13 @@ interface ProjectStructureAnalysis {
|
|
|
160
160
|
structure: Record<string, unknown>;
|
|
161
161
|
}
|
|
162
162
|
|
|
163
|
-
class
|
|
163
|
+
class XrayDocumentationGenerationServer {
|
|
164
164
|
private server: Server;
|
|
165
165
|
|
|
166
166
|
constructor() {
|
|
167
167
|
this.server = new Server(
|
|
168
168
|
{
|
|
169
|
-
name: "documentation-generation", version: "2.0.
|
|
169
|
+
name: "documentation-generation", version: "2.0.1",
|
|
170
170
|
},
|
|
171
171
|
{
|
|
172
172
|
capabilities: {
|
|
@@ -1053,7 +1053,7 @@ class StringRayDocumentationGenerationServer {
|
|
|
1053
1053
|
openapi: "3.0.0",
|
|
1054
1054
|
info: {
|
|
1055
1055
|
title: "API Documentation",
|
|
1056
|
-
version: "2.0.
|
|
1056
|
+
version: "2.0.1",
|
|
1057
1057
|
description: "Generated API documentation",
|
|
1058
1058
|
},
|
|
1059
1059
|
servers: [
|
|
@@ -1631,8 +1631,8 @@ class StringRayDocumentationGenerationServer {
|
|
|
1631
1631
|
|
|
1632
1632
|
// Run the server if this file is executed directly
|
|
1633
1633
|
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
1634
|
-
const server = new
|
|
1634
|
+
const server = new XrayDocumentationGenerationServer();
|
|
1635
1635
|
server.run().catch(() => {});
|
|
1636
1636
|
}
|
|
1637
1637
|
|
|
1638
|
-
export {
|
|
1638
|
+
export { XrayDocumentationGenerationServer };
|
|
@@ -3,37 +3,37 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
import { describe, it, expect, beforeEach } from "vitest";
|
|
6
|
-
import {
|
|
6
|
+
import { XrayTestingBestPracticesServer } from "./testing-best-practices.server";
|
|
7
7
|
import * as fs from "fs";
|
|
8
8
|
import * as path from "path";
|
|
9
9
|
|
|
10
10
|
describe("testing-best-practices.server integration", () => {
|
|
11
11
|
describe("module exports", () => {
|
|
12
12
|
it("should export server class", () => {
|
|
13
|
-
expect(
|
|
14
|
-
expect(typeof
|
|
13
|
+
expect(XrayTestingBestPracticesServer).toBeDefined();
|
|
14
|
+
expect(typeof XrayTestingBestPracticesServer).toBe("function");
|
|
15
15
|
});
|
|
16
16
|
|
|
17
17
|
it("should be able to instantiate the server", () => {
|
|
18
|
-
const server = new
|
|
18
|
+
const server = new XrayTestingBestPracticesServer();
|
|
19
19
|
expect(server).toBeDefined();
|
|
20
20
|
});
|
|
21
21
|
|
|
22
22
|
it("should have run method", () => {
|
|
23
|
-
const server = new
|
|
23
|
+
const server = new XrayTestingBestPracticesServer();
|
|
24
24
|
expect(typeof server.run).toBe("function");
|
|
25
25
|
});
|
|
26
26
|
});
|
|
27
27
|
|
|
28
28
|
describe("server structure", () => {
|
|
29
|
-
let server:
|
|
29
|
+
let server: XrayTestingBestPracticesServer;
|
|
30
30
|
|
|
31
31
|
beforeEach(() => {
|
|
32
|
-
server = new
|
|
32
|
+
server = new XrayTestingBestPracticesServer();
|
|
33
33
|
});
|
|
34
34
|
|
|
35
35
|
it("should instantiate correctly", () => {
|
|
36
|
-
expect(server).toBeInstanceOf(
|
|
36
|
+
expect(server).toBeInstanceOf(XrayTestingBestPracticesServer);
|
|
37
37
|
});
|
|
38
38
|
|
|
39
39
|
it("should have run async method", () => {
|
|
@@ -42,82 +42,82 @@ describe("testing-best-practices.server integration", () => {
|
|
|
42
42
|
});
|
|
43
43
|
|
|
44
44
|
describe("test analysis capabilities", () => {
|
|
45
|
-
let server:
|
|
45
|
+
let server: XrayTestingBestPracticesServer;
|
|
46
46
|
|
|
47
47
|
beforeEach(() => {
|
|
48
|
-
server = new
|
|
48
|
+
server = new XrayTestingBestPracticesServer();
|
|
49
49
|
});
|
|
50
50
|
|
|
51
51
|
it("should analyze test coverage", () => {
|
|
52
|
-
expect(server).toBeInstanceOf(
|
|
52
|
+
expect(server).toBeInstanceOf(XrayTestingBestPracticesServer);
|
|
53
53
|
});
|
|
54
54
|
|
|
55
55
|
it("should identify test gaps", () => {
|
|
56
|
-
expect(server).toBeInstanceOf(
|
|
56
|
+
expect(server).toBeInstanceOf(XrayTestingBestPracticesServer);
|
|
57
57
|
});
|
|
58
58
|
|
|
59
59
|
it("should provide recommendations", () => {
|
|
60
|
-
expect(server).toBeInstanceOf(
|
|
60
|
+
expect(server).toBeInstanceOf(XrayTestingBestPracticesServer);
|
|
61
61
|
});
|
|
62
62
|
});
|
|
63
63
|
|
|
64
64
|
describe("test strategy types", () => {
|
|
65
|
-
let server:
|
|
65
|
+
let server: XrayTestingBestPracticesServer;
|
|
66
66
|
|
|
67
67
|
beforeEach(() => {
|
|
68
|
-
server = new
|
|
68
|
+
server = new XrayTestingBestPracticesServer();
|
|
69
69
|
});
|
|
70
70
|
|
|
71
71
|
it("should support unit tests", () => {
|
|
72
|
-
expect(server).toBeInstanceOf(
|
|
72
|
+
expect(server).toBeInstanceOf(XrayTestingBestPracticesServer);
|
|
73
73
|
});
|
|
74
74
|
|
|
75
75
|
it("should support integration tests", () => {
|
|
76
|
-
expect(server).toBeInstanceOf(
|
|
76
|
+
expect(server).toBeInstanceOf(XrayTestingBestPracticesServer);
|
|
77
77
|
});
|
|
78
78
|
|
|
79
79
|
it("should support e2e tests", () => {
|
|
80
|
-
expect(server).toBeInstanceOf(
|
|
80
|
+
expect(server).toBeInstanceOf(XrayTestingBestPracticesServer);
|
|
81
81
|
});
|
|
82
82
|
|
|
83
83
|
it("should support performance tests", () => {
|
|
84
|
-
expect(server).toBeInstanceOf(
|
|
84
|
+
expect(server).toBeInstanceOf(XrayTestingBestPracticesServer);
|
|
85
85
|
});
|
|
86
86
|
|
|
87
87
|
it("should support security tests", () => {
|
|
88
|
-
expect(server).toBeInstanceOf(
|
|
88
|
+
expect(server).toBeInstanceOf(XrayTestingBestPracticesServer);
|
|
89
89
|
});
|
|
90
90
|
});
|
|
91
91
|
|
|
92
92
|
describe("TDD/BDD implementation", () => {
|
|
93
|
-
let server:
|
|
93
|
+
let server: XrayTestingBestPracticesServer;
|
|
94
94
|
|
|
95
95
|
beforeEach(() => {
|
|
96
|
-
server = new
|
|
96
|
+
server = new XrayTestingBestPracticesServer();
|
|
97
97
|
});
|
|
98
98
|
|
|
99
99
|
it("should provide TDD guidance", () => {
|
|
100
|
-
expect(server).toBeInstanceOf(
|
|
100
|
+
expect(server).toBeInstanceOf(XrayTestingBestPracticesServer);
|
|
101
101
|
});
|
|
102
102
|
|
|
103
103
|
it("should provide BDD guidance", () => {
|
|
104
|
-
expect(server).toBeInstanceOf(
|
|
104
|
+
expect(server).toBeInstanceOf(XrayTestingBestPracticesServer);
|
|
105
105
|
});
|
|
106
106
|
|
|
107
107
|
it("should suggest test frameworks", () => {
|
|
108
|
-
expect(server).toBeInstanceOf(
|
|
108
|
+
expect(server).toBeInstanceOf(XrayTestingBestPracticesServer);
|
|
109
109
|
});
|
|
110
110
|
});
|
|
111
111
|
|
|
112
112
|
describe("automation workflows", () => {
|
|
113
|
-
let server:
|
|
113
|
+
let server: XrayTestingBestPracticesServer;
|
|
114
114
|
|
|
115
115
|
beforeEach(() => {
|
|
116
|
-
server = new
|
|
116
|
+
server = new XrayTestingBestPracticesServer();
|
|
117
117
|
});
|
|
118
118
|
|
|
119
119
|
it("should calculate automation potential", () => {
|
|
120
|
-
expect(server).toBeInstanceOf(
|
|
120
|
+
expect(server).toBeInstanceOf(XrayTestingBestPracticesServer);
|
|
121
121
|
});
|
|
122
122
|
|
|
123
123
|
it("should analyze test frameworks", () => {
|
|
@@ -203,13 +203,13 @@ interface McpToolResponse {
|
|
|
203
203
|
data?: Record<string, unknown>;
|
|
204
204
|
}
|
|
205
205
|
|
|
206
|
-
class
|
|
206
|
+
class XrayTestingBestPracticesServer {
|
|
207
207
|
private server: Server;
|
|
208
208
|
|
|
209
209
|
constructor() {
|
|
210
210
|
this.server = new Server(
|
|
211
211
|
{
|
|
212
|
-
name: "testing-best-practices", version: "2.0.
|
|
212
|
+
name: "testing-best-practices", version: "2.0.1",
|
|
213
213
|
},
|
|
214
214
|
{
|
|
215
215
|
capabilities: {
|
|
@@ -1225,8 +1225,8 @@ class StringRayTestingBestPracticesServer {
|
|
|
1225
1225
|
|
|
1226
1226
|
// Run the server if this file is executed directly
|
|
1227
1227
|
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
1228
|
-
const server = new
|
|
1228
|
+
const server = new XrayTestingBestPracticesServer();
|
|
1229
1229
|
server.run().catch(() => {});
|
|
1230
1230
|
}
|
|
1231
1231
|
|
|
1232
|
-
export {
|
|
1232
|
+
export { XrayTestingBestPracticesServer };
|
|
@@ -5,35 +5,35 @@
|
|
|
5
5
|
import { describe, it, expect, beforeEach, vi } from "vitest";
|
|
6
6
|
import * as fs from "fs";
|
|
7
7
|
import * as path from "path";
|
|
8
|
-
import
|
|
8
|
+
import XrayTestingStrategyServer from "./testing-strategy.server";
|
|
9
9
|
|
|
10
10
|
describe("testing-strategy.server integration", () => {
|
|
11
11
|
describe("module exports", () => {
|
|
12
12
|
it("should export a server class", () => {
|
|
13
|
-
expect(
|
|
14
|
-
expect(typeof
|
|
13
|
+
expect(XrayTestingStrategyServer).toBeDefined();
|
|
14
|
+
expect(typeof XrayTestingStrategyServer).toBe("function");
|
|
15
15
|
});
|
|
16
16
|
|
|
17
17
|
it("should be able to instantiate the server", () => {
|
|
18
|
-
const server = new
|
|
18
|
+
const server = new XrayTestingStrategyServer();
|
|
19
19
|
expect(server).toBeDefined();
|
|
20
20
|
});
|
|
21
21
|
|
|
22
22
|
it("should have run method", () => {
|
|
23
|
-
const server = new
|
|
23
|
+
const server = new XrayTestingStrategyServer();
|
|
24
24
|
expect(typeof server.run).toBe("function");
|
|
25
25
|
});
|
|
26
26
|
});
|
|
27
27
|
|
|
28
28
|
describe("server structure", () => {
|
|
29
|
-
let server:
|
|
29
|
+
let server: XrayTestingStrategyServer;
|
|
30
30
|
|
|
31
31
|
beforeEach(() => {
|
|
32
|
-
server = new
|
|
32
|
+
server = new XrayTestingStrategyServer();
|
|
33
33
|
});
|
|
34
34
|
|
|
35
35
|
it("should instantiate correctly", () => {
|
|
36
|
-
expect(server).toBeInstanceOf(
|
|
36
|
+
expect(server).toBeInstanceOf(XrayTestingStrategyServer);
|
|
37
37
|
});
|
|
38
38
|
|
|
39
39
|
it("should have run async method", () => {
|
|
@@ -42,10 +42,10 @@ describe("testing-strategy.server integration", () => {
|
|
|
42
42
|
});
|
|
43
43
|
|
|
44
44
|
describe("test analysis functionality", () => {
|
|
45
|
-
let server:
|
|
45
|
+
let server: XrayTestingStrategyServer;
|
|
46
46
|
|
|
47
47
|
beforeEach(() => {
|
|
48
|
-
server = new
|
|
48
|
+
server = new XrayTestingStrategyServer();
|
|
49
49
|
});
|
|
50
50
|
|
|
51
51
|
it("should analyze test coverage for project", () => {
|
|
@@ -63,38 +63,38 @@ describe("testing-strategy.server integration", () => {
|
|
|
63
63
|
});
|
|
64
64
|
|
|
65
65
|
describe("test strategy generation", () => {
|
|
66
|
-
let server:
|
|
66
|
+
let server: XrayTestingStrategyServer;
|
|
67
67
|
|
|
68
68
|
beforeEach(() => {
|
|
69
|
-
server = new
|
|
69
|
+
server = new XrayTestingStrategyServer();
|
|
70
70
|
});
|
|
71
71
|
|
|
72
72
|
it("should handle web project type", () => {
|
|
73
|
-
expect(server).toBeInstanceOf(
|
|
73
|
+
expect(server).toBeInstanceOf(XrayTestingStrategyServer);
|
|
74
74
|
});
|
|
75
75
|
|
|
76
76
|
it("should handle api project type", () => {
|
|
77
|
-
expect(server).toBeInstanceOf(
|
|
77
|
+
expect(server).toBeInstanceOf(XrayTestingStrategyServer);
|
|
78
78
|
});
|
|
79
79
|
|
|
80
80
|
it("should handle mobile project type", () => {
|
|
81
|
-
expect(server).toBeInstanceOf(
|
|
81
|
+
expect(server).toBeInstanceOf(XrayTestingStrategyServer);
|
|
82
82
|
});
|
|
83
83
|
});
|
|
84
84
|
|
|
85
85
|
describe("test gap identification", () => {
|
|
86
|
-
let server:
|
|
86
|
+
let server: XrayTestingStrategyServer;
|
|
87
87
|
|
|
88
88
|
beforeEach(() => {
|
|
89
|
-
server = new
|
|
89
|
+
server = new XrayTestingStrategyServer();
|
|
90
90
|
});
|
|
91
91
|
|
|
92
92
|
it("should accept source files array", () => {
|
|
93
|
-
expect(server).toBeInstanceOf(
|
|
93
|
+
expect(server).toBeInstanceOf(XrayTestingStrategyServer);
|
|
94
94
|
});
|
|
95
95
|
|
|
96
96
|
it("should accept existing tests array", () => {
|
|
97
|
-
expect(server).toBeInstanceOf(
|
|
97
|
+
expect(server).toBeInstanceOf(XrayTestingStrategyServer);
|
|
98
98
|
});
|
|
99
99
|
});
|
|
100
100
|
});
|
|
@@ -129,13 +129,13 @@ interface BaseTestCounts {
|
|
|
129
129
|
security: number;
|
|
130
130
|
}
|
|
131
131
|
|
|
132
|
-
class
|
|
132
|
+
class XrayTestingStrategyServer {
|
|
133
133
|
private server: Server;
|
|
134
134
|
|
|
135
135
|
constructor() {
|
|
136
136
|
this.server = new Server(
|
|
137
137
|
{
|
|
138
|
-
name: "testing-strategy", version: "2.0.
|
|
138
|
+
name: "testing-strategy", version: "2.0.1",
|
|
139
139
|
},
|
|
140
140
|
{
|
|
141
141
|
capabilities: {
|
|
@@ -1165,8 +1165,8 @@ describe("${pathModule.basename(sourceFile, ".ts")}", () => {${testCases}
|
|
|
1165
1165
|
|
|
1166
1166
|
// Start the server if run directly
|
|
1167
1167
|
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
1168
|
-
const server = new
|
|
1168
|
+
const server = new XrayTestingStrategyServer();
|
|
1169
1169
|
server.run().catch(() => {});
|
|
1170
1170
|
}
|
|
1171
1171
|
|
|
1172
|
-
export default
|
|
1172
|
+
export default XrayTestingStrategyServer;
|
|
@@ -186,13 +186,13 @@ interface ToolResponse {
|
|
|
186
186
|
isError?: boolean;
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
-
class
|
|
189
|
+
class XrayUIUXDesignServer {
|
|
190
190
|
private server: Server;
|
|
191
191
|
|
|
192
192
|
constructor() {
|
|
193
193
|
this.server = new Server(
|
|
194
194
|
{
|
|
195
|
-
name: "ui-ux-design", version: "2.0.
|
|
195
|
+
name: "ui-ux-design", version: "2.0.1",
|
|
196
196
|
},
|
|
197
197
|
{
|
|
198
198
|
capabilities: {
|
|
@@ -1985,7 +1985,7 @@ Available: ${Object.keys(system.components).length} component types
|
|
|
1985
1985
|
await this.server.connect(transport);
|
|
1986
1986
|
await frameworkLogger.log(
|
|
1987
1987
|
"ui-ux-design.server",
|
|
1988
|
-
"-
|
|
1988
|
+
"-xray-ui-ux-design-mcp-server-running-",
|
|
1989
1989
|
"info",
|
|
1990
1990
|
{ message: "xray UI/UX Design MCP Server running..." },
|
|
1991
1991
|
);
|
|
@@ -2011,7 +2011,7 @@ Available: ${Object.keys(system.components).length} component types
|
|
|
2011
2011
|
clearTimeout(timeout);
|
|
2012
2012
|
await frameworkLogger.log(
|
|
2013
2013
|
"ui-ux-design.server",
|
|
2014
|
-
"-
|
|
2014
|
+
"-xray-mcp-server-shut-down-gracefully-",
|
|
2015
2015
|
"info",
|
|
2016
2016
|
{ message: "xray MCP Server shut down gracefully" },
|
|
2017
2017
|
);
|
|
@@ -2069,8 +2069,8 @@ Available: ${Object.keys(system.components).length} component types
|
|
|
2069
2069
|
|
|
2070
2070
|
// Run the server if this file is executed directly
|
|
2071
2071
|
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
2072
|
-
const server = new
|
|
2072
|
+
const server = new XrayUIUXDesignServer();
|
|
2073
2073
|
server.run().catch((error) => frameworkLogger.log("mcps/ui-ux-design", "run", "error", { error: String(error) }));
|
|
2074
2074
|
}
|
|
2075
2075
|
|
|
2076
|
-
export {
|
|
2076
|
+
export { XrayUIUXDesignServer };
|
package/src/mcps/lint.server.ts
CHANGED
|
@@ -33,13 +33,13 @@ interface LintResults {
|
|
|
33
33
|
details: string[];
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
class
|
|
36
|
+
class XrayLintServer {
|
|
37
37
|
private server: Server;
|
|
38
38
|
|
|
39
39
|
constructor() {
|
|
40
40
|
this.server = new Server(
|
|
41
41
|
{
|
|
42
|
-
name: "lint", version: "2.0.
|
|
42
|
+
name: "lint", version: "2.0.1",
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
45
|
capabilities: {
|
|
@@ -51,7 +51,7 @@ class StringRayLintServer {
|
|
|
51
51
|
this.setupToolHandlers();
|
|
52
52
|
void frameworkLogger.log(
|
|
53
53
|
"lint.server",
|
|
54
|
-
"-
|
|
54
|
+
"-xray-lint-mcp-server-initialized-",
|
|
55
55
|
"info",
|
|
56
56
|
{ message: "0xRay Lint MCP Server initialized" },
|
|
57
57
|
);
|
|
@@ -467,7 +467,7 @@ ${checkResults.details.map((d) => `• ${d}`).join("\n")}
|
|
|
467
467
|
await this.server.connect(transport);
|
|
468
468
|
await frameworkLogger.log(
|
|
469
469
|
"lint.server",
|
|
470
|
-
"-
|
|
470
|
+
"-xray-lint-mcp-server-started-",
|
|
471
471
|
"info",
|
|
472
472
|
{ message: "0xRay Lint MCP Server started" },
|
|
473
473
|
);
|
|
@@ -476,8 +476,8 @@ ${checkResults.details.map((d) => `• ${d}`).join("\n")}
|
|
|
476
476
|
|
|
477
477
|
// Start the server if run directly
|
|
478
478
|
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
479
|
-
const server = new
|
|
479
|
+
const server = new XrayLintServer();
|
|
480
480
|
server.run().catch((error) => frameworkLogger.log("mcps/lint", "run", "error", { error: String(error) }));
|
|
481
481
|
}
|
|
482
482
|
|
|
483
|
-
export {
|
|
483
|
+
export { XrayLintServer };
|
package/src/mcps/mcp-client.ts
CHANGED
|
@@ -344,17 +344,17 @@ export class MCPClient extends EventEmitter {
|
|
|
344
344
|
],
|
|
345
345
|
'framework-help': [
|
|
346
346
|
{
|
|
347
|
-
name: '
|
|
347
|
+
name: 'xray_get_capabilities',
|
|
348
348
|
description: 'Get 0xRay framework capabilities',
|
|
349
349
|
inputSchema: { type: 'object', properties: {} },
|
|
350
350
|
},
|
|
351
351
|
{
|
|
352
|
-
name: '
|
|
352
|
+
name: 'xray_get_commands',
|
|
353
353
|
description: 'Get available 0xRay commands',
|
|
354
354
|
inputSchema: { type: 'object', properties: {} },
|
|
355
355
|
},
|
|
356
356
|
{
|
|
357
|
-
name: '
|
|
357
|
+
name: 'xray_explain_capability',
|
|
358
358
|
description: 'Explain a specific capability',
|
|
359
359
|
inputSchema: {
|
|
360
360
|
type: 'object',
|