0xray 3.1.1 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.opencode/codex.codex +1 -1
- package/.opencode/commands/auto-format.md +3 -3
- package/.opencode/commands/auto-summary-capture.md +2 -2
- package/.opencode/commands/enforcer-daily-scan.md +3 -3
- package/.opencode/commands/framework-compliance-audit.md +4 -4
- package/.opencode/commands/interactive-validator.md +2 -2
- package/.opencode/commands/job-summary-logger.md +2 -2
- package/.opencode/commands/mode-switch.md +1 -1
- package/.opencode/commands/model-health-check.md +2 -2
- package/.opencode/commands/performance-analysis.md +2 -2
- package/.opencode/commands/pre-commit-introspection.md +3 -3
- package/.opencode/commands/security-scan.md +3 -3
- package/.opencode/commands/sisyphus-validation.md +3 -3
- package/.opencode/commands/summary-logger.md +2 -2
- package/AGENTS.md +3 -13
- package/README.md +3 -3
- package/dist/AGENTS.md +3 -13
- package/dist/CHANGELOG.md +29 -0
- package/dist/README.md +3 -3
- package/dist/analytics/consent-manager.js +0 -1
- package/dist/analytics/emerging-pattern-detector.js +0 -1
- package/dist/analytics/pattern-learning-engine.js +0 -1
- package/dist/analytics/pattern-performance-tracker.js +0 -1
- package/dist/analytics/predictive-analytics.js +0 -1
- package/dist/analytics/prompt-pattern-analyzer.js +0 -1
- package/dist/analytics/routing-performance-analyzer.js +0 -1
- package/dist/analytics/routing-refiner.js +0 -1
- package/dist/analytics/simple-pattern-analyzer.js +0 -1
- package/dist/cli/commands/archive-logs.js +0 -1
- package/dist/cli/commands/opencode-install.js +13 -0
- package/dist/cli/commands/plugin-commands.js +0 -1
- package/dist/cli/commands/status.js +11 -13
- package/dist/cli/index.js +2 -7
- package/dist/core/activity-logger.js +0 -1
- package/dist/core/adaptive-kernel.js +0 -1
- package/dist/core/boot-orchestrator.js +2 -12
- package/dist/core/bridge.mjs +0 -1
- package/dist/core/codex-formatter.js +0 -1
- package/dist/core/codex-injector.js +0 -1
- package/dist/core/config-loader.js +36 -28
- package/dist/core/context-loader.js +0 -1
- package/dist/core/context-validator.js +0 -1
- package/dist/core/features-config.js +37 -1
- package/dist/core/kernel-patterns.js +0 -1
- package/dist/core/model-router.js +23 -64
- package/dist/core/system-prompt-generator.js +0 -1
- package/dist/delegation/agent-delegator.js +0 -1
- package/dist/delegation/agent-expertise.js +0 -1
- package/dist/delegation/analytics/index.js +0 -1
- package/dist/delegation/analytics/learning-engine.js +0 -1
- package/dist/delegation/analytics/outcome-tracker.js +0 -1
- package/dist/delegation/analytics/routing-analytics.js +0 -1
- package/dist/delegation/ast-code-parser.js +0 -1
- package/dist/delegation/complexity-analyzer.js +0 -1
- package/dist/delegation/dependency-graph-builder.js +0 -1
- package/dist/delegation/index.js +0 -1
- package/dist/delegation/metrics-aggregator.js +0 -1
- package/dist/delegation/session-coordinator.js +0 -1
- package/dist/delegation/strategy-selector.js +0 -1
- package/dist/delegation/voting-coordinator.js +0 -1
- package/dist/delegation/voting-types.js +0 -1
- package/dist/delegation/weighted-voting-aggregator.js +0 -1
- package/dist/enforcement/core/index.js +0 -1
- package/dist/enforcement/core/rule-executor.js +0 -1
- package/dist/enforcement/core/rule-hierarchy.js +0 -1
- package/dist/enforcement/core/rule-registry.js +0 -1
- package/dist/enforcement/core/violation-fixer.js +0 -1
- package/dist/enforcement/index.js +0 -1
- package/dist/enforcement/loaders/agent-triage-loader.js +0 -1
- package/dist/enforcement/loaders/agents-md-validation-loader.js +0 -1
- package/dist/enforcement/loaders/base-loader.js +0 -1
- package/dist/enforcement/loaders/codex-loader.js +0 -1
- package/dist/enforcement/loaders/index.js +0 -1
- package/dist/enforcement/loaders/loader-orchestrator.js +0 -1
- package/dist/enforcement/loaders/processor-loader.js +0 -1
- package/dist/enforcement/types.js +0 -1
- package/dist/enforcement/validators/architecture-validators.js +0 -1
- package/dist/enforcement/validators/base-validator.js +0 -1
- package/dist/enforcement/validators/code-quality-validators.js +0 -1
- package/dist/enforcement/validators/index.js +0 -1
- package/dist/enforcement/validators/security-validators.js +0 -1
- package/dist/enforcement/validators/testing-validators.js +0 -1
- package/dist/enforcement/validators/validator-registry.js +0 -1
- package/dist/governance/codex-policy.service.js +0 -1
- package/dist/inference/inference-agent-invoker.js +67 -0
- package/dist/inference/inference-applier.js +178 -0
- package/dist/inference/inference-cycle.js +51 -827
- package/dist/inference/inference-proposal-generator.js +149 -0
- package/dist/infrastructure/iac-validator.js +465 -0
- package/dist/infrastructure/schemas/cloud-schemas.js +488 -0
- package/dist/integrations/base/ExampleIntegration.js +0 -1
- package/dist/integrations/base/Integration.js +0 -1
- package/dist/integrations/base/index.js +0 -1
- package/dist/integrations/base/registry.js +0 -1
- package/dist/integrations/base/types.js +0 -1
- package/dist/integrations/enforcement-gate.js +3 -3
- package/dist/integrations/governance/governance-client.js +0 -1
- package/dist/integrations/governance/index.js +11 -19
- package/dist/integrations/governance/types.js +0 -1
- package/dist/integrations/hermes-agent/__init__.py +4 -0
- package/dist/integrations/hermes-agent/bridge.mjs +37 -0
- package/dist/integrations/openclaw/api-server.js +0 -1
- package/dist/integrations/openclaw/client.js +0 -1
- package/dist/integrations/openclaw/config.js +0 -1
- package/dist/integrations/openclaw/hooks/xray-hooks.js +0 -1
- package/dist/integrations/openclaw/index.js +0 -1
- package/dist/integrations/openclaw/types.js +0 -1
- package/dist/integrations/plugins/index.js +0 -1
- package/dist/integrations/plugins/plugin-integration.js +0 -1
- package/dist/integrations/plugins/plugin-registry.js +0 -1
- package/dist/mcps/agent-resolver.js +0 -1
- package/dist/mcps/architect-tools.server.js +119 -185
- package/dist/mcps/auto-format.server.js +56 -74
- package/dist/mcps/boot-orchestrator.server.js +67 -85
- package/dist/mcps/config/config-loader.js +6 -0
- package/dist/mcps/config/plugin-server-registry.js +0 -1
- package/dist/mcps/enforcer-tools.server.js +207 -273
- package/dist/mcps/estimation.server.js +63 -107
- package/dist/mcps/framework-compliance-audit.server.js +52 -81
- package/dist/mcps/framework-help.server.js +71 -89
- package/dist/mcps/governance.server.js +97 -149
- package/dist/mcps/knowledge-skills/api-design.server.js +33 -65
- package/dist/mcps/knowledge-skills/architecture-patterns.server.js +33 -65
- package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +123 -163
- package/dist/mcps/knowledge-skills/code-analyzer.server.js +210 -237
- package/dist/mcps/knowledge-skills/code-review.server.js +108 -142
- package/dist/mcps/knowledge-skills/content-creator.server.js +203 -225
- package/dist/mcps/knowledge-skills/database-design.server.js +116 -150
- package/dist/mcps/knowledge-skills/devops-deployment.server.js +123 -157
- package/dist/mcps/knowledge-skills/git-workflow.server.js +34 -67
- package/dist/mcps/knowledge-skills/growth-strategist.server.js +301 -323
- package/dist/mcps/knowledge-skills/log-monitor.server.js +139 -159
- package/dist/mcps/knowledge-skills/mobile-development.server.js +170 -200
- package/dist/mcps/knowledge-skills/multimodal-looker.server.js +122 -158
- package/dist/mcps/knowledge-skills/performance-optimization.server.js +88 -138
- package/dist/mcps/knowledge-skills/project-analysis.server.js +131 -218
- package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +115 -150
- package/dist/mcps/knowledge-skills/security-audit.server.js +16 -143
- package/dist/mcps/knowledge-skills/seo-consultant.server.js +20 -213
- package/dist/mcps/knowledge-skills/session-management.server.js +13 -90
- package/dist/mcps/knowledge-skills/skill-invocation.server.js +43 -421
- package/dist/mcps/knowledge-skills/strategist.server.js +10 -55
- package/dist/mcps/knowledge-skills/tech-writer.server.js +16 -191
- package/dist/mcps/knowledge-skills/testing-best-practices.server.js +18 -191
- package/dist/mcps/knowledge-skills/testing-strategy.server.js +18 -156
- package/dist/mcps/knowledge-skills/ui-ux-design.server.js +22 -296
- package/dist/mcps/lint.server.js +50 -91
- package/dist/mcps/model-health-check.server.js +32 -60
- package/dist/mcps/orchestrator/aside-context.js +207 -0
- package/dist/mcps/orchestrator/handlers/complexity-handler.js +5 -1
- package/dist/mcps/orchestrator/handlers/status-handler.js +8 -1
- package/dist/mcps/orchestrator/handlers/task-handler.js +5 -0
- package/dist/mcps/orchestrator/index.js +5 -0
- package/dist/mcps/orchestrator/server.js +63 -8
- package/dist/mcps/performance-analysis.server.js +56 -87
- package/dist/mcps/processor-pipeline.server.js +68 -99
- package/dist/mcps/researcher.server.js +80 -153
- package/dist/mcps/security-scan.server.js +56 -70
- package/dist/mcps/shared/knowledge-skill-base.js +11 -4
- package/dist/mcps/state-manager.server.js +124 -152
- package/dist/monitoring/nudge-watchdog.js +0 -1
- package/dist/nucleus/default-plugins.js +13 -19
- package/dist/nucleus/index.js +0 -1
- package/dist/orchestrator/agent-spawn-governor.js +0 -1
- package/dist/orchestrator/intelligent-commit-batcher.js +2 -10
- package/dist/orchestrator/multi-agent-orchestration-coordinator.js +0 -1
- package/dist/orchestrator/orchestrator.js +8 -18
- package/dist/orchestrator/self-direction-activation.js +0 -1
- package/dist/orchestrator/universal-registry-bridge.js +0 -1
- package/dist/performance/performance-budget-enforcer.js +0 -1
- package/dist/performance/performance-regression-tester.js +0 -1
- package/dist/plugin/plugin-codex-context.js +87 -0
- package/dist/plugin/plugin-helpers.js +155 -0
- package/dist/plugin/plugin-logger.js +46 -0
- package/dist/plugin/plugin-modules.js +144 -0
- package/dist/plugin/plugin-quality-gate.js +88 -0
- package/dist/plugin/plugin-types.js +1 -0
- package/dist/plugin/xray-codex-injection.js +338 -0
- package/dist/postprocessor/PostProcessor.js +3 -9
- package/dist/postprocessor/analysis/CodeChangeAnalyzer.js +50 -0
- package/dist/postprocessor/config/ProcessorConfigLoader.js +16 -0
- package/dist/postprocessor/integration.js +194 -0
- package/dist/postprocessor/metamorphosis/SelfProposalEngine.js +472 -0
- package/dist/postprocessor/metamorphosis/index.js +1 -0
- package/dist/postprocessor/redeploy/RetryHandler.js +118 -0
- package/dist/postprocessor/services/RegressionAnalysisService.js +0 -1
- package/dist/postprocessor/triggers/APITrigger.js +0 -1
- package/dist/postprocessor/triggers/WebhookTrigger.js +0 -1
- package/dist/processors/implementations/agents-md-validation-processor.js +0 -1
- package/dist/processors/implementations/async-pattern-processor.js +0 -1
- package/dist/processors/implementations/console-log-guard-processor.js +0 -1
- package/dist/processors/implementations/coverage-analysis-processor.js +0 -1
- package/dist/processors/implementations/inference-improvement-processor.js +2 -9
- package/dist/processors/implementations/log-protection-processor.js +0 -1
- package/dist/processors/implementations/nudge-processor.js +0 -1
- package/dist/processors/implementations/performance-budget-processor.js +0 -1
- package/dist/processors/implementations/postprocessor-chain-validator.js +0 -1
- package/dist/processors/implementations/publish-preflight-processor.js +4 -12
- package/dist/processors/implementations/session-summary-processor.js +8 -16
- package/dist/processors/implementations/spawn-governance-processor.js +0 -1
- package/dist/processors/implementations/storytelling-trigger-processor.js +3 -28
- package/dist/processors/implementations/test-auto-creation-processor.js +0 -1
- package/dist/processors/implementations/typescript-compilation-processor.js +0 -1
- package/dist/processors/implementations/version-compliance-processor.js +0 -1
- package/dist/processors/processor-interfaces.js +0 -1
- package/dist/processors/processor-types.js +0 -1
- package/dist/scripts/integration.js +0 -1
- package/dist/security/comprehensive-security-audit.js +0 -1
- package/dist/security/security-agent-coordinator.js +0 -1
- package/dist/security/security-auditor.js +0 -1
- package/dist/security/security-hardener.js +0 -1
- package/dist/security/security-hardening-system.js +0 -1
- package/dist/security/security-headers.js +0 -1
- package/dist/security/security-orchestration-layer.js +0 -1
- package/dist/services/inference-tuner.js +0 -1
- package/dist/session/session-cleanup-manager.js +0 -1
- package/dist/session/session-monitor.js +0 -1
- package/dist/session/session-state-manager.js +0 -1
- package/dist/skills/xray-orchestrator/index.js +0 -1
- package/dist/utils/codex-parser.js +0 -1
- package/dist/utils/language-detector.js +0 -1
- package/dist/utils/shutdown-handler.js +0 -1
- package/dist/validation/agent-config-validator.js +280 -0
- package/dist/validation/orchestration-flow-validator.js +606 -0
- package/package.json +1 -1
- package/scripts/node/release.mjs +2 -2
- package/scripts/node/setup.cjs +28 -0
- package/scripts/node/universal-version-manager.js +1 -1
- package/src/mcps/agent-resolver.ts +0 -1
- package/src/mcps/architect-tools.server.ts +129 -211
- package/src/mcps/auto-format.server.ts +74 -103
- package/src/mcps/boot-orchestrator.server.ts +71 -96
- package/src/mcps/config/__tests__/config-loader.test.ts +6 -6
- package/src/mcps/config/config-loader.ts +7 -0
- package/src/mcps/config/plugin-server-registry.ts +0 -1
- package/src/mcps/enforcer-tools.server.ts +217 -294
- package/src/mcps/estimation.server.ts +62 -122
- package/src/mcps/framework-compliance-audit.server.ts +53 -95
- package/src/mcps/framework-help.server.ts +74 -96
- package/src/mcps/governance.server.ts +97 -162
- package/src/mcps/knowledge-skills/api-design.server.ts +33 -72
- package/src/mcps/knowledge-skills/architecture-patterns.server.ts +33 -72
- package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +148 -193
- package/src/mcps/knowledge-skills/code-analyzer.server.ts +222 -254
- package/src/mcps/knowledge-skills/code-review.server.ts +115 -157
- package/src/mcps/knowledge-skills/content-creator.server.ts +219 -246
- package/src/mcps/knowledge-skills/database-design.server.ts +119 -160
- package/src/mcps/knowledge-skills/devops-deployment.server.ts +126 -167
- package/src/mcps/knowledge-skills/git-workflow.server.ts +32 -77
- package/src/mcps/knowledge-skills/growth-strategist.server.ts +322 -360
- package/src/mcps/knowledge-skills/log-monitor.server.ts +68 -95
- package/src/mcps/knowledge-skills/mobile-development.server.ts +16 -56
- package/src/mcps/knowledge-skills/multimodal-looker.server.ts +13 -59
- package/src/mcps/knowledge-skills/performance-optimization.server.ts +13 -74
- package/src/mcps/knowledge-skills/project-analysis.server.ts +13 -120
- package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +13 -60
- package/src/mcps/knowledge-skills/security-audit.server.ts +19 -157
- package/src/mcps/knowledge-skills/seo-consultant.server.ts +23 -227
- package/src/mcps/knowledge-skills/session-management.server.ts +17 -106
- package/src/mcps/knowledge-skills/skill-invocation.server.ts +45 -446
- package/src/mcps/knowledge-skills/strategist.server.ts +13 -63
- package/src/mcps/knowledge-skills/tech-writer.server.ts +19 -204
- package/src/mcps/knowledge-skills/testing-best-practices.server.ts +21 -204
- package/src/mcps/knowledge-skills/testing-strategy.server.ts +21 -165
- package/src/mcps/knowledge-skills/ui-ux-design.server.ts +25 -342
- package/src/mcps/lint.server.ts +52 -105
- package/src/mcps/model-health-check.server.ts +34 -70
- package/src/mcps/orchestrator/aside-context.ts +245 -0
- package/src/mcps/orchestrator/handlers/complexity-handler.ts +9 -3
- package/src/mcps/orchestrator/handlers/status-handler.ts +11 -1
- package/src/mcps/orchestrator/handlers/task-handler.ts +8 -1
- package/src/mcps/orchestrator/index.ts +29 -0
- package/src/mcps/orchestrator/server.ts +79 -24
- package/src/mcps/orchestrator/types.ts +37 -0
- package/src/mcps/performance-analysis.server.ts +59 -102
- package/src/mcps/processor-pipeline.server.ts +70 -108
- package/src/mcps/researcher.server.ts +87 -175
- package/src/mcps/security-scan.server.ts +57 -76
- package/src/mcps/shared/knowledge-skill-base.ts +12 -4
- package/src/mcps/state-manager.server.ts +129 -169
- package/src/opencode/codex.codex +1 -1
- package/src/opencode/commands/auto-format.md +3 -3
- package/src/opencode/commands/auto-summary-capture.md +2 -2
- package/src/opencode/commands/enforcer-daily-scan.md +3 -3
- package/src/opencode/commands/framework-compliance-audit.md +4 -4
- package/src/opencode/commands/interactive-validator.md +2 -2
- package/src/opencode/commands/job-summary-logger.md +2 -2
- package/src/opencode/commands/mode-switch.md +1 -1
- package/src/opencode/commands/model-health-check.md +2 -2
- package/src/opencode/commands/performance-analysis.md +2 -2
- package/src/opencode/commands/pre-commit-introspection.md +3 -3
- package/src/opencode/commands/security-scan.md +3 -3
- package/src/opencode/commands/sisyphus-validation.md +3 -3
- package/src/opencode/commands/summary-logger.md +2 -2
- package/src/skills/xray-orchestrator/index.ts +0 -1
- package/dist/nucleus/orchestrator.js +0 -479
package/src/mcps/lint.server.ts
CHANGED
|
@@ -4,15 +4,10 @@
|
|
|
4
4
|
* Comprehensive ESLint validation and automated code quality checking
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
8
|
-
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
9
|
-
import {
|
|
10
|
-
CallToolRequestSchema,
|
|
11
|
-
ListToolsRequestSchema,
|
|
12
|
-
} from "@modelcontextprotocol/sdk/types.js";
|
|
13
7
|
import { execFileSync } from "child_process";
|
|
14
8
|
import fs from "fs";
|
|
15
9
|
import { frameworkLogger } from "../core/framework-logger.js";
|
|
10
|
+
import { XrayKnowledgeSkillBase } from "./shared/knowledge-skill-base.js";
|
|
16
11
|
|
|
17
12
|
interface LintArgs {
|
|
18
13
|
files?: string[];
|
|
@@ -33,20 +28,63 @@ interface LintResults {
|
|
|
33
28
|
details: string[];
|
|
34
29
|
}
|
|
35
30
|
|
|
36
|
-
class XrayLintServer {
|
|
37
|
-
private server: Server;
|
|
38
|
-
|
|
31
|
+
class XrayLintServer extends XrayKnowledgeSkillBase {
|
|
39
32
|
constructor() {
|
|
40
|
-
|
|
33
|
+
super("lint", "3.1.0");
|
|
34
|
+
|
|
35
|
+
this.tools = [
|
|
41
36
|
{
|
|
42
|
-
name: "lint",
|
|
37
|
+
name: "lint",
|
|
38
|
+
description:
|
|
39
|
+
"Comprehensive ESLint validation and automated code quality checking",
|
|
40
|
+
inputSchema: {
|
|
41
|
+
type: "object",
|
|
42
|
+
properties: {
|
|
43
|
+
files: {
|
|
44
|
+
type: "array",
|
|
45
|
+
items: { type: "string" },
|
|
46
|
+
description:
|
|
47
|
+
"Specific files to lint (optional - lints all if empty)",
|
|
48
|
+
},
|
|
49
|
+
fix: {
|
|
50
|
+
type: "boolean",
|
|
51
|
+
default: false,
|
|
52
|
+
description:
|
|
53
|
+
"Automatically fix linting issues where possible",
|
|
54
|
+
},
|
|
55
|
+
strict: {
|
|
56
|
+
type: "boolean",
|
|
57
|
+
default: false,
|
|
58
|
+
description: "Use strict linting rules",
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
},
|
|
43
62
|
},
|
|
44
63
|
{
|
|
45
|
-
|
|
46
|
-
|
|
64
|
+
name: "lint-check",
|
|
65
|
+
description: "Check code quality without making changes",
|
|
66
|
+
inputSchema: {
|
|
67
|
+
type: "object",
|
|
68
|
+
properties: {
|
|
69
|
+
files: {
|
|
70
|
+
type: "array",
|
|
71
|
+
items: { type: "string" },
|
|
72
|
+
description: "Files to check",
|
|
73
|
+
},
|
|
74
|
+
rules: {
|
|
75
|
+
type: "array",
|
|
76
|
+
items: { type: "string" },
|
|
77
|
+
description: "Specific ESLint rules to check",
|
|
78
|
+
},
|
|
79
|
+
},
|
|
47
80
|
},
|
|
48
81
|
},
|
|
49
|
-
|
|
82
|
+
];
|
|
83
|
+
|
|
84
|
+
this.handlers = {
|
|
85
|
+
"lint": async (args) => this.handleLint(args as LintArgs),
|
|
86
|
+
"lint-check": async (args) => this.handleLintCheck(args as LintCheckArgs),
|
|
87
|
+
};
|
|
50
88
|
|
|
51
89
|
this.setupToolHandlers();
|
|
52
90
|
void frameworkLogger.log(
|
|
@@ -57,87 +95,6 @@ class XrayLintServer {
|
|
|
57
95
|
);
|
|
58
96
|
}
|
|
59
97
|
|
|
60
|
-
private setupToolHandlers() {
|
|
61
|
-
// List available tools
|
|
62
|
-
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
63
|
-
return {
|
|
64
|
-
tools: [
|
|
65
|
-
{
|
|
66
|
-
name: "lint",
|
|
67
|
-
description:
|
|
68
|
-
"Comprehensive ESLint validation and automated code quality checking",
|
|
69
|
-
inputSchema: {
|
|
70
|
-
type: "object",
|
|
71
|
-
properties: {
|
|
72
|
-
files: {
|
|
73
|
-
type: "array",
|
|
74
|
-
items: { type: "string" },
|
|
75
|
-
description:
|
|
76
|
-
"Specific files to lint (optional - lints all if empty)",
|
|
77
|
-
},
|
|
78
|
-
fix: {
|
|
79
|
-
type: "boolean",
|
|
80
|
-
default: false,
|
|
81
|
-
description:
|
|
82
|
-
"Automatically fix linting issues where possible",
|
|
83
|
-
},
|
|
84
|
-
strict: {
|
|
85
|
-
type: "boolean",
|
|
86
|
-
default: false,
|
|
87
|
-
description: "Use strict linting rules",
|
|
88
|
-
},
|
|
89
|
-
},
|
|
90
|
-
},
|
|
91
|
-
},
|
|
92
|
-
{
|
|
93
|
-
name: "lint-check",
|
|
94
|
-
description: "Check code quality without making changes",
|
|
95
|
-
inputSchema: {
|
|
96
|
-
type: "object",
|
|
97
|
-
properties: {
|
|
98
|
-
files: {
|
|
99
|
-
type: "array",
|
|
100
|
-
items: { type: "string" },
|
|
101
|
-
description: "Files to check",
|
|
102
|
-
},
|
|
103
|
-
rules: {
|
|
104
|
-
type: "array",
|
|
105
|
-
items: { type: "string" },
|
|
106
|
-
description: "Specific ESLint rules to check",
|
|
107
|
-
},
|
|
108
|
-
},
|
|
109
|
-
},
|
|
110
|
-
},
|
|
111
|
-
],
|
|
112
|
-
};
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
// Handle tool calls
|
|
116
|
-
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
117
|
-
const { name, arguments: args } = request.params;
|
|
118
|
-
|
|
119
|
-
try {
|
|
120
|
-
switch (name) {
|
|
121
|
-
case "lint":
|
|
122
|
-
return await this.handleLint(args as unknown as LintArgs);
|
|
123
|
-
case "lint-check":
|
|
124
|
-
return await this.handleLintCheck(args as unknown as LintCheckArgs);
|
|
125
|
-
default:
|
|
126
|
-
throw new Error(`Unknown tool: ${name}`);
|
|
127
|
-
}
|
|
128
|
-
} catch (error) {
|
|
129
|
-
return {
|
|
130
|
-
content: [
|
|
131
|
-
{
|
|
132
|
-
type: "text",
|
|
133
|
-
text: `❌ Tool execution failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
134
|
-
},
|
|
135
|
-
],
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
|
|
141
98
|
private async handleLint(args: LintArgs) {
|
|
142
99
|
const files = args.files || [];
|
|
143
100
|
const fix = args.fix || false;
|
|
@@ -462,16 +419,6 @@ ${checkResults.details.map((d) => `• ${d}`).join("\n")}
|
|
|
462
419
|
- Fixed: ${results.issues.fixed}`;
|
|
463
420
|
}
|
|
464
421
|
|
|
465
|
-
async run() {
|
|
466
|
-
const transport = new StdioServerTransport();
|
|
467
|
-
await this.server.connect(transport);
|
|
468
|
-
await frameworkLogger.log(
|
|
469
|
-
"lint.server",
|
|
470
|
-
"-xray-lint-mcp-server-started-",
|
|
471
|
-
"info",
|
|
472
|
-
{ message: "0xRay Lint MCP Server started" },
|
|
473
|
-
);
|
|
474
|
-
}
|
|
475
422
|
}
|
|
476
423
|
|
|
477
424
|
// Start the server if run directly
|
|
@@ -4,16 +4,11 @@
|
|
|
4
4
|
* Advanced model compatibility validation and dynamic health assessment
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
8
|
-
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
9
7
|
import { modelRouter } from "../core/model-router.js";
|
|
10
|
-
import {
|
|
11
|
-
CallToolRequestSchema,
|
|
12
|
-
ListToolsRequestSchema,
|
|
13
|
-
} from "@modelcontextprotocol/sdk/types.js";
|
|
14
8
|
import { execSync } from "child_process";
|
|
15
9
|
import fs from "fs";
|
|
16
10
|
import { frameworkLogger } from "../core/framework-logger.js";
|
|
11
|
+
import { XrayKnowledgeSkillBase } from "./shared/knowledge-skill-base.js";
|
|
17
12
|
|
|
18
13
|
interface ModelHealthCheckArgs {
|
|
19
14
|
models?: string[];
|
|
@@ -36,73 +31,47 @@ interface ModelHealthReportData {
|
|
|
36
31
|
summary: { total: number; healthy: number; issues: number };
|
|
37
32
|
}
|
|
38
33
|
|
|
39
|
-
class XrayModelHealthCheckServer {
|
|
40
|
-
private server: Server;
|
|
41
|
-
|
|
34
|
+
class XrayModelHealthCheckServer extends XrayKnowledgeSkillBase {
|
|
42
35
|
constructor() {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
},
|
|
36
|
+
super("model-health-check", "3.1.0");
|
|
37
|
+
|
|
38
|
+
this.tools = [
|
|
47
39
|
{
|
|
48
|
-
|
|
49
|
-
|
|
40
|
+
name: "model-health-check",
|
|
41
|
+
description:
|
|
42
|
+
"Advanced model compatibility validation and dynamic health assessment",
|
|
43
|
+
inputSchema: {
|
|
44
|
+
type: "object",
|
|
45
|
+
properties: {
|
|
46
|
+
models: {
|
|
47
|
+
type: "array",
|
|
48
|
+
items: { type: "string" },
|
|
49
|
+
description:
|
|
50
|
+
"Specific models to check (optional - checks all configured if empty)",
|
|
51
|
+
},
|
|
52
|
+
compatibility: {
|
|
53
|
+
type: "boolean",
|
|
54
|
+
default: true,
|
|
55
|
+
description: "Include compatibility matrix in results",
|
|
56
|
+
},
|
|
57
|
+
performance: {
|
|
58
|
+
type: "boolean",
|
|
59
|
+
default: true,
|
|
60
|
+
description: "Include performance metrics in results",
|
|
61
|
+
},
|
|
62
|
+
},
|
|
50
63
|
},
|
|
51
64
|
},
|
|
52
|
-
|
|
65
|
+
];
|
|
66
|
+
|
|
67
|
+
this.handlers = {
|
|
68
|
+
"model-health-check": async (args) => this.handleModelHealthCheck((args || {}) as ModelHealthCheckArgs),
|
|
69
|
+
};
|
|
53
70
|
|
|
54
71
|
this.setupToolHandlers();
|
|
55
72
|
frameworkLogger.log("mcps/model-health-check", "initialize", "info");
|
|
56
73
|
}
|
|
57
74
|
|
|
58
|
-
private setupToolHandlers() {
|
|
59
|
-
// List available tools
|
|
60
|
-
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
61
|
-
return {
|
|
62
|
-
tools: [
|
|
63
|
-
{
|
|
64
|
-
name: "model-health-check",
|
|
65
|
-
description:
|
|
66
|
-
"Advanced model compatibility validation and dynamic health assessment",
|
|
67
|
-
inputSchema: {
|
|
68
|
-
type: "object",
|
|
69
|
-
properties: {
|
|
70
|
-
models: {
|
|
71
|
-
type: "array",
|
|
72
|
-
items: { type: "string" },
|
|
73
|
-
description:
|
|
74
|
-
"Specific models to check (optional - checks all configured if empty)",
|
|
75
|
-
},
|
|
76
|
-
compatibility: {
|
|
77
|
-
type: "boolean",
|
|
78
|
-
default: true,
|
|
79
|
-
description: "Include compatibility matrix in results",
|
|
80
|
-
},
|
|
81
|
-
performance: {
|
|
82
|
-
type: "boolean",
|
|
83
|
-
default: true,
|
|
84
|
-
description: "Include performance metrics in results",
|
|
85
|
-
},
|
|
86
|
-
},
|
|
87
|
-
},
|
|
88
|
-
},
|
|
89
|
-
],
|
|
90
|
-
};
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
// Handle tool calls
|
|
94
|
-
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
95
|
-
const { name, arguments: args } = request.params;
|
|
96
|
-
|
|
97
|
-
switch (name) {
|
|
98
|
-
case "model-health-check":
|
|
99
|
-
return await this.handleModelHealthCheck((args || {}) as unknown as ModelHealthCheckArgs);
|
|
100
|
-
default:
|
|
101
|
-
throw new Error(`Unknown tool: ${name}`);
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
|
|
106
75
|
private async handleModelHealthCheck(args: ModelHealthCheckArgs) {
|
|
107
76
|
const models = args.models || [modelRouter.getValidatedModel()];
|
|
108
77
|
const includeCompatibility = args.compatibility !== false;
|
|
@@ -276,17 +245,12 @@ class XrayModelHealthCheckServer {
|
|
|
276
245
|
return report;
|
|
277
246
|
}
|
|
278
247
|
|
|
279
|
-
public async start() {
|
|
280
|
-
const transport = new StdioServerTransport();
|
|
281
|
-
await this.server.connect(transport);
|
|
282
|
-
frameworkLogger.log("mcps/model-health-check", "start", "info");
|
|
283
|
-
}
|
|
284
248
|
}
|
|
285
249
|
|
|
286
250
|
// Start the server if this file is run directly
|
|
287
251
|
if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
|
|
288
252
|
const server = new XrayModelHealthCheckServer();
|
|
289
|
-
server.
|
|
253
|
+
server.run().catch((error) => frameworkLogger.log("mcps/model-health-check", "run", "error", { error: String(error) }));
|
|
290
254
|
}
|
|
291
255
|
|
|
292
256
|
export default XrayModelHealthCheckServer;
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AsideContext — bounded subcontext for depth, continuity, and layered exploration
|
|
3
|
+
*
|
|
4
|
+
* Enables the orchestrator to spawn sub-investigations that inherit session context,
|
|
5
|
+
* accumulate structured observations from v3 subsystems (governance, orchestration,
|
|
6
|
+
* complexity analysis), and feed results back into the governance loop.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { frameworkLogger } from "../../core/framework-logger.js";
|
|
10
|
+
import type {
|
|
11
|
+
AsideContextOptions,
|
|
12
|
+
AsideObservation,
|
|
13
|
+
AsideResult,
|
|
14
|
+
ActiveAside,
|
|
15
|
+
} from "./types.js";
|
|
16
|
+
import type { InferenceCycleResult } from "../../inference/inference-cycle.js";
|
|
17
|
+
import type { OrchestrationResult, ComplexityAnalysis } from "./types.js";
|
|
18
|
+
|
|
19
|
+
let asideCounter = 0;
|
|
20
|
+
const activeAsides = new Map<string, ActiveAside>();
|
|
21
|
+
|
|
22
|
+
export function getActiveAsideCount(): number {
|
|
23
|
+
return activeAsides.size;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function getActiveAsideIds(): string[] {
|
|
27
|
+
return Array.from(activeAsides.keys());
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function getAsideState(asideId: string): ActiveAside | undefined {
|
|
31
|
+
return activeAsides.get(asideId);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function addObservations(
|
|
35
|
+
asideId: string,
|
|
36
|
+
observations: AsideObservation[],
|
|
37
|
+
): boolean {
|
|
38
|
+
const aside = activeAsides.get(asideId);
|
|
39
|
+
if (!aside) return false;
|
|
40
|
+
aside.observations.push(...observations);
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function extractGovernanceObservations(
|
|
45
|
+
result: InferenceCycleResult,
|
|
46
|
+
): AsideObservation[] {
|
|
47
|
+
const obs: AsideObservation[] = [];
|
|
48
|
+
obs.push({
|
|
49
|
+
key: "governanceCycleId",
|
|
50
|
+
value: result.cycleId,
|
|
51
|
+
source: "inference/inference-cycle.ts",
|
|
52
|
+
});
|
|
53
|
+
obs.push({
|
|
54
|
+
key: "governanceVoteCount",
|
|
55
|
+
value: String(result.votes.length),
|
|
56
|
+
source: "inference/inference-cycle.ts",
|
|
57
|
+
});
|
|
58
|
+
const approved = result.votes.filter((v) => v.decision === "approve").length;
|
|
59
|
+
const rejected = result.votes.filter((v) => v.decision === "reject").length;
|
|
60
|
+
obs.push({
|
|
61
|
+
key: "governanceApprovedCount",
|
|
62
|
+
value: String(approved),
|
|
63
|
+
source: "inference/inference-cycle.ts",
|
|
64
|
+
});
|
|
65
|
+
obs.push({
|
|
66
|
+
key: "governanceRejectedCount",
|
|
67
|
+
value: String(rejected),
|
|
68
|
+
source: "inference/inference-cycle.ts",
|
|
69
|
+
});
|
|
70
|
+
if (result.corpusSummary) {
|
|
71
|
+
obs.push({
|
|
72
|
+
key: "corpusSessionCount",
|
|
73
|
+
value: String(result.corpusSummary.sessions),
|
|
74
|
+
source: "inference/inference-cycle.ts",
|
|
75
|
+
});
|
|
76
|
+
obs.push({
|
|
77
|
+
key: "corpusPatternCount",
|
|
78
|
+
value: String(result.corpusSummary.recurringPatterns),
|
|
79
|
+
source: "inference/inference-cycle.ts",
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
return obs;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export function extractOrchestrationObservations(
|
|
86
|
+
result: OrchestrationResult,
|
|
87
|
+
): AsideObservation[] {
|
|
88
|
+
const obs: AsideObservation[] = [];
|
|
89
|
+
obs.push({
|
|
90
|
+
key: "orchestrationSuccess",
|
|
91
|
+
value: String(result.success),
|
|
92
|
+
source: "mcps/orchestrator/types.ts",
|
|
93
|
+
});
|
|
94
|
+
obs.push({
|
|
95
|
+
key: "tasksCompleted",
|
|
96
|
+
value: String(result.completedTasks),
|
|
97
|
+
source: "mcps/orchestrator/types.ts",
|
|
98
|
+
});
|
|
99
|
+
obs.push({
|
|
100
|
+
key: "tasksFailed",
|
|
101
|
+
value: String(result.failedTasks),
|
|
102
|
+
source: "mcps/orchestrator/types.ts",
|
|
103
|
+
});
|
|
104
|
+
obs.push({
|
|
105
|
+
key: "orchestrationDuration",
|
|
106
|
+
value: `${result.duration}ms`,
|
|
107
|
+
source: "mcps/orchestrator/types.ts",
|
|
108
|
+
});
|
|
109
|
+
for (const b of result.bottlenecks) {
|
|
110
|
+
obs.push({
|
|
111
|
+
key: "bottleneck",
|
|
112
|
+
value: b.substring(0, 200),
|
|
113
|
+
source: "mcps/orchestrator/types.ts",
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
for (const r of result.recommendations) {
|
|
117
|
+
obs.push({
|
|
118
|
+
key: "recommendation",
|
|
119
|
+
value: r.substring(0, 200),
|
|
120
|
+
source: "mcps/orchestrator/types.ts",
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
return obs;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export function extractComplexityObservations(
|
|
127
|
+
analysis: ComplexityAnalysis,
|
|
128
|
+
): AsideObservation[] {
|
|
129
|
+
const obs: AsideObservation[] = [];
|
|
130
|
+
obs.push({
|
|
131
|
+
key: "complexityScore",
|
|
132
|
+
value: String(analysis.overallComplexity),
|
|
133
|
+
source: "mcps/orchestrator/execution/execution-planner.ts",
|
|
134
|
+
});
|
|
135
|
+
obs.push({
|
|
136
|
+
key: "recommendedStrategy",
|
|
137
|
+
value: analysis.recommendedStrategy,
|
|
138
|
+
source: "mcps/orchestrator/execution/execution-planner.ts",
|
|
139
|
+
});
|
|
140
|
+
obs.push({
|
|
141
|
+
key: "parallelPotential",
|
|
142
|
+
value: String(analysis.parallelPotential),
|
|
143
|
+
source: "mcps/orchestrator/execution/execution-planner.ts",
|
|
144
|
+
});
|
|
145
|
+
obs.push({
|
|
146
|
+
key: "estimatedDuration",
|
|
147
|
+
value: `${analysis.estimatedDuration}ms`,
|
|
148
|
+
source: "mcps/orchestrator/execution/execution-planner.ts",
|
|
149
|
+
});
|
|
150
|
+
for (const tc of analysis.taskComplexity) {
|
|
151
|
+
obs.push({
|
|
152
|
+
key: `taskComplexity`,
|
|
153
|
+
value: `${tc.complexity} (${tc.category})`,
|
|
154
|
+
source: "mcps/orchestrator/execution/execution-planner.ts",
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
return obs;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
export async function spawnAside(
|
|
161
|
+
options: AsideContextOptions,
|
|
162
|
+
): Promise<AsideResult> {
|
|
163
|
+
const asideId = options.parentAsideId
|
|
164
|
+
? `${options.parentAsideId}.aside-${++asideCounter}`
|
|
165
|
+
: `aside-${++asideCounter}-${Date.now()}`;
|
|
166
|
+
const startTime = Date.now();
|
|
167
|
+
|
|
168
|
+
const aside: ActiveAside = {
|
|
169
|
+
asideId,
|
|
170
|
+
description: options.description,
|
|
171
|
+
startedAt: startTime,
|
|
172
|
+
observations: [],
|
|
173
|
+
...(options.inheritedContext !== undefined ? { inheritedContext: options.inheritedContext } : {}),
|
|
174
|
+
...(options.parentAsideId !== undefined ? { parentAsideId: options.parentAsideId } : {}),
|
|
175
|
+
...(options.sessionId !== undefined ? { sessionId: options.sessionId } : {}),
|
|
176
|
+
...(options.priorVerdictContext !== undefined ? { priorVerdictContext: options.priorVerdictContext } : {}),
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
activeAsides.set(asideId, aside);
|
|
180
|
+
|
|
181
|
+
frameworkLogger.log("aside-context", "aside-spawn", "info", {
|
|
182
|
+
asideId,
|
|
183
|
+
description: options.description,
|
|
184
|
+
sessionId: options.sessionId,
|
|
185
|
+
parentAsideId: options.parentAsideId,
|
|
186
|
+
activeAsideCount: activeAsides.size,
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
if (options.priorVerdictContext) {
|
|
190
|
+
const decision = options.priorVerdictContext["decision"];
|
|
191
|
+
if (decision) {
|
|
192
|
+
aside.observations.push({
|
|
193
|
+
key: "governanceDecision",
|
|
194
|
+
value: String(decision),
|
|
195
|
+
source: "priorVerdictContext",
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
const duration = Date.now() - startTime;
|
|
201
|
+
|
|
202
|
+
const result: AsideResult = {
|
|
203
|
+
asideId,
|
|
204
|
+
description: options.description,
|
|
205
|
+
success: true,
|
|
206
|
+
duration,
|
|
207
|
+
observations: aside.observations,
|
|
208
|
+
...(options.priorVerdictContext !== undefined ? { priorVerdictContext: options.priorVerdictContext } : {}),
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
frameworkLogger.log("aside-context", "aside-complete", "info", {
|
|
212
|
+
asideId,
|
|
213
|
+
duration,
|
|
214
|
+
observationCount: aside.observations.length,
|
|
215
|
+
activeAsideCount: activeAsides.size,
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
return result;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
export function closeAside(asideId: string): boolean {
|
|
222
|
+
const aside = activeAsides.get(asideId);
|
|
223
|
+
if (!aside) return false;
|
|
224
|
+
activeAsides.delete(asideId);
|
|
225
|
+
frameworkLogger.log("aside-context", "aside-closed", "info", {
|
|
226
|
+
asideId,
|
|
227
|
+
duration: Date.now() - aside.startedAt,
|
|
228
|
+
remainingActive: activeAsides.size,
|
|
229
|
+
});
|
|
230
|
+
return true;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
export function closeAllAsides(): number {
|
|
234
|
+
const count = activeAsides.size;
|
|
235
|
+
activeAsides.clear();
|
|
236
|
+
frameworkLogger.log("aside-context", "aside-close-all", "info", {
|
|
237
|
+
closedCount: count,
|
|
238
|
+
});
|
|
239
|
+
return count;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
export function resetAsideContext(): void {
|
|
243
|
+
activeAsides.clear();
|
|
244
|
+
asideCounter = 0;
|
|
245
|
+
}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
import { frameworkLogger } from '../../../core/framework-logger.js';
|
|
8
8
|
import { getExecutionPlanner } from '../execution/execution-planner.js';
|
|
9
|
+
import { addObservations, extractComplexityObservations } from '../aside-context.js';
|
|
9
10
|
import type { OrchestrationTask, ComplexityAnalysis } from '../types.js';
|
|
10
11
|
|
|
11
12
|
/**
|
|
@@ -18,9 +19,10 @@ export class ComplexityHandler {
|
|
|
18
19
|
/**
|
|
19
20
|
* Handle analyze-complexity request
|
|
20
21
|
*/
|
|
21
|
-
async handleAnalyzeComplexity(
|
|
22
|
-
tasks: OrchestrationTask[]
|
|
23
|
-
|
|
22
|
+
async handleAnalyzeComplexity(
|
|
23
|
+
args: { tasks: OrchestrationTask[] },
|
|
24
|
+
asideId?: string,
|
|
25
|
+
): Promise<{ content: Array<{ type: string; text: string }> }> {
|
|
24
26
|
const { tasks = [] } = args;
|
|
25
27
|
|
|
26
28
|
await frameworkLogger.log(
|
|
@@ -34,6 +36,10 @@ export class ComplexityHandler {
|
|
|
34
36
|
const analysis = await this.planner.analyzeTaskComplexity(tasks);
|
|
35
37
|
const recommendations = this.generateRecommendations(analysis);
|
|
36
38
|
|
|
39
|
+
if (asideId) {
|
|
40
|
+
addObservations(asideId, extractComplexityObservations(analysis));
|
|
41
|
+
}
|
|
42
|
+
|
|
37
43
|
return {
|
|
38
44
|
content: [
|
|
39
45
|
{
|
|
@@ -18,6 +18,8 @@ interface HistoryItem {
|
|
|
18
18
|
interface StatusHandlerDeps {
|
|
19
19
|
activeTasks: Map<string, unknown>;
|
|
20
20
|
taskHistory: HistoryItem[];
|
|
21
|
+
asideCount?: number;
|
|
22
|
+
asideIds?: string[];
|
|
21
23
|
}
|
|
22
24
|
|
|
23
25
|
/**
|
|
@@ -68,7 +70,15 @@ export class StatusHandler {
|
|
|
68
70
|
status = this.getOverallStatus(deps);
|
|
69
71
|
}
|
|
70
72
|
|
|
71
|
-
|
|
73
|
+
let response = this.formatStatusResponse(status, detailed);
|
|
74
|
+
|
|
75
|
+
if (detailed && deps.asideCount !== undefined) {
|
|
76
|
+
response += `\n\n**Active Aside Contexts:**`;
|
|
77
|
+
response += `\n• Count: ${deps.asideCount}`;
|
|
78
|
+
if (deps.asideIds && deps.asideIds.length > 0) {
|
|
79
|
+
response += `\n• IDs: ${deps.asideIds.join(', ')}`;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
72
82
|
|
|
73
83
|
return { content: [{ type: 'text', text: response }] };
|
|
74
84
|
} catch (error) {
|
|
@@ -7,11 +7,13 @@
|
|
|
7
7
|
import { frameworkLogger } from '../../../core/framework-logger.js';
|
|
8
8
|
import { getExecutionPlanner } from '../execution/execution-planner.js';
|
|
9
9
|
import { mcpClientManager } from '../../../mcps/mcp-client.js';
|
|
10
|
-
import
|
|
10
|
+
import { addObservations, extractOrchestrationObservations } from '../aside-context.js';
|
|
11
|
+
import type { OrchestrationResult, OrchestrationTask } from '../types.js';
|
|
11
12
|
|
|
12
13
|
export interface TaskHandlerDeps {
|
|
13
14
|
taskHistory: OrchestrationHistoryItem[];
|
|
14
15
|
activeTasks: Map<string, unknown>;
|
|
16
|
+
asideId?: string;
|
|
15
17
|
}
|
|
16
18
|
|
|
17
19
|
interface OrchestrationHistoryItem {
|
|
@@ -88,6 +90,11 @@ export class TaskHandler {
|
|
|
88
90
|
orchestrationResult.agentOutputs = results.agentOutputs;
|
|
89
91
|
}
|
|
90
92
|
|
|
93
|
+
// Push observations into aside context if active
|
|
94
|
+
if (deps.asideId) {
|
|
95
|
+
addObservations(deps.asideId, extractOrchestrationObservations(orchestrationResult));
|
|
96
|
+
}
|
|
97
|
+
|
|
91
98
|
// Store in history
|
|
92
99
|
deps.taskHistory.push({
|
|
93
100
|
sessionId,
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export { OrchestratorServer, createOrchestratorServer } from './server.js';
|
|
2
|
+
export { TaskHandler } from './handlers/task-handler.js';
|
|
3
|
+
export { ComplexityHandler } from './handlers/complexity-handler.js';
|
|
4
|
+
export { StatusHandler } from './handlers/status-handler.js';
|
|
5
|
+
export {
|
|
6
|
+
spawnAside,
|
|
7
|
+
closeAside,
|
|
8
|
+
closeAllAsides,
|
|
9
|
+
addObservations,
|
|
10
|
+
getActiveAsideCount,
|
|
11
|
+
getActiveAsideIds,
|
|
12
|
+
getAsideState,
|
|
13
|
+
resetAsideContext,
|
|
14
|
+
extractGovernanceObservations,
|
|
15
|
+
extractOrchestrationObservations,
|
|
16
|
+
extractComplexityObservations,
|
|
17
|
+
} from './aside-context.js';
|
|
18
|
+
export type {
|
|
19
|
+
AsideContextOptions,
|
|
20
|
+
AsideObservation,
|
|
21
|
+
AsideResult,
|
|
22
|
+
ActiveAside,
|
|
23
|
+
OrchestrationTask,
|
|
24
|
+
OrchestrationResult,
|
|
25
|
+
OrchestrationStatus,
|
|
26
|
+
ComplexityAnalysis,
|
|
27
|
+
TaskExecutionResult,
|
|
28
|
+
ExecutionPlan,
|
|
29
|
+
} from './types.js';
|