0xray 2.0.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/agents/api-design.yml +31 -0
- package/.opencode/agents/architect.yml +15 -0
- package/.opencode/agents/architecture-patterns.yml +14 -0
- package/.opencode/agents/auto-format.yml +14 -0
- package/.opencode/agents/backend-engineer.yml +12 -0
- package/.opencode/agents/boot-orchestrator.yml +14 -0
- package/.opencode/agents/bug-triage-specialist.yml +15 -0
- package/.opencode/agents/code-analyzer.yml +12 -0
- package/.opencode/agents/code-reviewer.yml +14 -0
- package/.opencode/agents/content-creator.yml +12 -0
- package/.opencode/agents/database-engineer.yml +12 -0
- package/.opencode/agents/devops-engineer.yml +12 -0
- package/.opencode/agents/framework-compliance-audit.yml +14 -0
- package/.opencode/agents/frontend-engineer.yml +12 -0
- package/.opencode/agents/frontend-ui-ux-engineer.yml +12 -0
- package/.opencode/agents/git-workflow.yml +15 -0
- package/.opencode/agents/growth-strategist.yml +12 -0
- package/.opencode/agents/hermes-agent.yml +12 -0
- package/.opencode/agents/inference-improve.yml +12 -0
- package/.opencode/agents/lint.yml +14 -0
- package/.opencode/agents/log-monitor.yml +12 -0
- package/.opencode/agents/mobile-developer.yml +12 -0
- package/.opencode/agents/model-health-check.yml +12 -0
- package/.opencode/agents/multimodal-looker.yml +12 -0
- package/.opencode/agents/performance-analysis.yml +12 -0
- package/.opencode/agents/performance-engineer.yml +12 -0
- package/.opencode/agents/performance-optimization.yml +12 -0
- package/.opencode/agents/processor-pipeline.yml +14 -0
- package/.opencode/agents/project-analysis.yml +12 -0
- package/.opencode/agents/refactorer.yml +12 -0
- package/.opencode/agents/researcher.yml +12 -0
- package/.opencode/agents/security-auditor.yml +12 -0
- package/.opencode/agents/security-scan.yml +12 -0
- package/.opencode/agents/seo-consultant.yml +12 -0
- package/.opencode/agents/session-management.yml +12 -0
- package/.opencode/agents/state-manager.yml +12 -0
- package/.opencode/agents/storyteller.yml +12 -0
- package/.opencode/agents/strategist.yml +12 -0
- package/.opencode/agents/tech-writer.yml +12 -0
- package/.opencode/agents/testing-best-practices.yml +12 -0
- package/.opencode/agents/testing-lead.yml +12 -0
- package/.opencode/agents/ui-ux-design.yml +12 -0
- package/.opencode/codex.codex +8 -0
- package/.opencode/commands/auto-format.md +99 -0
- package/.opencode/commands/auto-summary-capture.md +90 -0
- package/.opencode/commands/dependency-audit.md +184 -0
- package/.opencode/commands/enforcer-daily-scan.md +137 -0
- package/.opencode/commands/framework-compliance-audit.md +205 -0
- package/.opencode/commands/interactive-validator.md +75 -0
- package/.opencode/commands/job-summary-logger.md +68 -0
- package/.opencode/commands/lint.md +11 -0
- package/.opencode/commands/mode-switch.md +95 -0
- package/.opencode/commands/model-health-check.md +186 -0
- package/.opencode/commands/performance-analysis.md +144 -0
- package/.opencode/commands/pre-commit-introspection.md +185 -0
- package/.opencode/commands/pre-commit-introspection.sh +133 -0
- package/.opencode/commands/security-scan.md +157 -0
- package/.opencode/commands/sisyphus-validation.md +128 -0
- package/.opencode/commands/summary-logger.md +83 -0
- package/.opencode/enforcer-config.json +285 -0
- package/.opencode/hooks/hook-metrics.json +380 -0
- package/.opencode/hooks/post-commit +114 -0
- package/.opencode/hooks/post-push +34 -0
- package/.opencode/init.sh +151 -0
- package/.opencode/skills/api-design/SKILL.md +37 -0
- package/.opencode/skills/architect-tools/SKILL.md +37 -0
- package/.opencode/skills/architecture-patterns/SKILL.md +37 -0
- package/.opencode/skills/auto-format/SKILL.md +37 -0
- package/.opencode/skills/backend-engineer/SKILL.md +49 -0
- package/.opencode/skills/boot-orchestrator/SKILL.md +37 -0
- package/.opencode/skills/bug-triage/SKILL.md +43 -0
- package/.opencode/skills/code-analyzer/SKILL.md +45 -0
- package/.opencode/skills/code-review/SKILL.md +52 -0
- package/.opencode/skills/content-creator/SKILL.md +38 -0
- package/.opencode/skills/database-engineer/SKILL.md +46 -0
- package/.opencode/skills/devops-engineer/SKILL.md +49 -0
- package/.opencode/skills/enforcer/SKILL.md +37 -0
- package/.opencode/skills/framework-compliance-audit/SKILL.md +37 -0
- package/.opencode/skills/frontend-engineer/SKILL.md +49 -0
- package/.opencode/skills/frontend-ui-ux-engineer/SKILL.md +41 -0
- package/.opencode/skills/git-workflow/SKILL.md +37 -0
- package/.opencode/skills/growth-strategist/SKILL.md +48 -0
- package/.opencode/skills/hermes-agent/SKILL.md +212 -0
- package/.opencode/skills/inference-improve/SKILL.md +97 -0
- package/.opencode/skills/lint/SKILL.md +37 -0
- package/.opencode/skills/log-monitor/SKILL.md +44 -0
- package/.opencode/skills/mobile-developer/SKILL.md +42 -0
- package/.opencode/skills/model-health-check/SKILL.md +37 -0
- package/.opencode/skills/multimodal-looker/SKILL.md +45 -0
- package/.opencode/skills/orchestrator/SKILL.md +37 -0
- package/.opencode/skills/performance-analysis/SKILL.md +37 -0
- package/.opencode/skills/performance-engineer/SKILL.md +41 -0
- package/.opencode/skills/performance-optimization/SKILL.md +37 -0
- package/.opencode/skills/processor-pipeline/SKILL.md +37 -0
- package/.opencode/skills/project-analysis/SKILL.md +42 -0
- package/.opencode/skills/refactoring-strategies/SKILL.md +37 -0
- package/.opencode/skills/registry.json +66 -0
- package/.opencode/skills/researcher/SKILL.md +37 -0
- package/.opencode/skills/security-audit/SKILL.md +47 -0
- package/.opencode/skills/security-scan/SKILL.md +37 -0
- package/.opencode/skills/seo-consultant/SKILL.md +43 -0
- package/.opencode/skills/session-management/SKILL.md +36 -0
- package/.opencode/skills/state-manager/SKILL.md +37 -0
- package/.opencode/skills/storyteller/SKILL.md +130 -0
- package/.opencode/skills/strategist/SKILL.md +32 -0
- package/.opencode/skills/tech-writer/SKILL.md +37 -0
- package/.opencode/skills/testing-best-practices/SKILL.md +37 -0
- package/.opencode/skills/testing-strategy/SKILL.md +43 -0
- package/.opencode/skills/ui-ux-design/SKILL.md +603 -0
- package/.opencode/workflows/post-deployment-audit.yml +123 -0
- package/AGENTS.md +110 -0
- package/LICENSE +21 -0
- package/README.md +131 -0
- package/dist/AGENTS.md +110 -0
- package/dist/CHANGELOG.md +2182 -0
- package/dist/LICENSE +21 -0
- package/dist/README.md +131 -0
- package/dist/agents/architect.js +56 -0
- package/dist/agents/backend-engineer.js +81 -0
- package/dist/agents/bug-triage-specialist.js +74 -0
- package/dist/agents/code-analyzer.js +150 -0
- package/dist/agents/code-reviewer.js +69 -0
- package/dist/agents/content-creator.js +72 -0
- package/dist/agents/database-engineer.js +76 -0
- package/dist/agents/devops-engineer.js +84 -0
- package/dist/agents/frontend-engineer.js +78 -0
- package/dist/agents/frontend-ui-ux-engineer.js +64 -0
- package/dist/agents/growth-strategist.js +111 -0
- package/dist/agents/index.js +45 -0
- package/dist/agents/librarian-agents-updater.js +333 -0
- package/dist/agents/log-monitor.js +109 -0
- package/dist/agents/mobile-developer.js +102 -0
- package/dist/agents/multimodal-looker.js +93 -0
- package/dist/agents/performance-engineer.js +86 -0
- package/dist/agents/refactorer.js +80 -0
- package/dist/agents/registry.js +340 -0
- package/dist/agents/researcher.js +83 -0
- package/dist/agents/security-auditor.js +158 -0
- package/dist/agents/seo-consultant.js +53 -0
- package/dist/agents/strategist.js +47 -0
- package/dist/agents/tech-writer.js +84 -0
- package/dist/agents/testing-lead.js +95 -0
- package/dist/agents/types.js +1 -0
- package/dist/analytics/consent-manager.js +258 -0
- package/dist/analytics/emerging-pattern-detector.js +260 -0
- package/dist/analytics/pattern-learning-engine.js +278 -0
- package/dist/analytics/pattern-performance-tracker.js +336 -0
- package/dist/analytics/predictive-analytics.js +248 -0
- package/dist/analytics/prompt-pattern-analyzer.js +371 -0
- package/dist/analytics/routing-performance-analyzer.js +356 -0
- package/dist/analytics/routing-refiner.js +380 -0
- package/dist/analytics/simple-pattern-analyzer.js +297 -0
- package/dist/architect/architect-tools.js +437 -0
- package/dist/architect/architectural-integrity.js +78 -0
- package/dist/benchmark/performance-benchmark.js +372 -0
- package/dist/cli/commands/analytics-disable.js +72 -0
- package/dist/cli/commands/analytics-enable-action.js +82 -0
- package/dist/cli/commands/analytics-preview.js +106 -0
- package/dist/cli/commands/analytics-status.js +68 -0
- package/dist/cli/commands/antigravity-status.js +106 -0
- package/dist/cli/commands/archive-logs.js +161 -0
- package/dist/cli/commands/credible-init.js +82 -0
- package/dist/cli/commands/grok-install.js +16 -0
- package/dist/cli/commands/hermes-install.js +66 -0
- package/dist/cli/commands/mcp-install.js +253 -0
- package/dist/cli/commands/openclaw-install.js +44 -0
- package/dist/cli/commands/opencode-install.js +99 -0
- package/dist/cli/commands/plugin-commands.js +246 -0
- package/dist/cli/commands/publish-agent.js +184 -0
- package/dist/cli/commands/security-audit.js +219 -0
- package/dist/cli/commands/skill-install.js +481 -0
- package/dist/cli/commands/status.js +196 -0
- package/dist/cli/commands/storyteller.js +230 -0
- package/dist/cli/index.js +986 -0
- package/dist/cli/server.js +147 -0
- package/dist/config/default-agents.js +16 -0
- package/dist/core/activity-logger.js +260 -0
- package/dist/core/adaptive-kernel.js +192 -0
- package/dist/core/agent-spawn-gate.js +120 -0
- package/dist/core/boot-orchestrator.js +812 -0
- package/dist/core/bridge.mjs +945 -0
- package/dist/core/codex-formatter.js +220 -0
- package/dist/core/codex-injector.js +424 -0
- package/dist/core/config-loader.js +148 -0
- package/dist/core/config-paths.js +162 -0
- package/dist/core/context-loader.js +269 -0
- package/dist/core/context-validator.js +212 -0
- package/dist/core/features-config.js +457 -0
- package/dist/core/framework-logger.js +275 -0
- package/dist/core/index.js +6 -0
- package/dist/core/kernel-patterns.js +302 -0
- package/dist/core/logging-config.js +43 -0
- package/dist/core/model-router.js +175 -0
- package/dist/core/orchestrator.js +408 -0
- package/dist/core/system-prompt-generator.js +265 -0
- package/dist/core/trace-context.js +33 -0
- package/dist/core/xray-activation.js +134 -0
- package/dist/delegation/agent-delegator.js +769 -0
- package/dist/delegation/agent-expertise.js +156 -0
- package/dist/delegation/analytics/index.js +12 -0
- package/dist/delegation/analytics/learning-engine.js +277 -0
- package/dist/delegation/analytics/outcome-tracker.js +279 -0
- package/dist/delegation/analytics/routing-analytics.js +193 -0
- package/dist/delegation/ast-code-parser.js +878 -0
- package/dist/delegation/codebase-context-analyzer.js +1040 -0
- package/dist/delegation/complexity-analyzer.js +282 -0
- package/dist/delegation/complexity-core.js +219 -0
- package/dist/delegation/config/types.js +6 -0
- package/dist/delegation/dependency-graph-builder.js +409 -0
- package/dist/delegation/index.js +20 -0
- package/dist/delegation/metrics-aggregator.js +335 -0
- package/dist/delegation/session-coordinator.js +352 -0
- package/dist/delegation/strategy-selector.js +108 -0
- package/dist/delegation/voting-coordinator.js +375 -0
- package/dist/delegation/voting-types.js +10 -0
- package/dist/delegation/weighted-voting-aggregator.js +194 -0
- package/dist/enforcement/core/index.js +19 -0
- package/dist/enforcement/core/rule-executor.js +365 -0
- package/dist/enforcement/core/rule-hierarchy.js +259 -0
- package/dist/enforcement/core/rule-registry.js +240 -0
- package/dist/enforcement/core/violation-fixer.js +651 -0
- package/dist/enforcement/enforcer-tools.js +909 -0
- package/dist/enforcement/index.js +41 -0
- package/dist/enforcement/loaders/agent-triage-loader.js +222 -0
- package/dist/enforcement/loaders/agents-md-validation-loader.js +252 -0
- package/dist/enforcement/loaders/base-loader.js +86 -0
- package/dist/enforcement/loaders/codex-loader.js +396 -0
- package/dist/enforcement/loaders/index.js +40 -0
- package/dist/enforcement/loaders/loader-orchestrator.js +168 -0
- package/dist/enforcement/loaders/processor-loader.js +113 -0
- package/dist/enforcement/rule-enforcer.js +298 -0
- package/dist/enforcement/test-auto-healing.js +325 -0
- package/dist/enforcement/types.js +30 -0
- package/dist/enforcement/validators/architecture-validators.js +600 -0
- package/dist/enforcement/validators/base-validator.js +108 -0
- package/dist/enforcement/validators/code-quality-validators.js +336 -0
- package/dist/enforcement/validators/index.js +21 -0
- package/dist/enforcement/validators/security-validators.js +220 -0
- package/dist/enforcement/validators/testing-validators.js +253 -0
- package/dist/enforcement/validators/validator-registry.js +150 -0
- package/dist/execution/opencode-cli-invoker.js +173 -0
- package/dist/execution/proposal-applier.js +254 -0
- package/dist/governance/codex-policy.service.js +167 -0
- package/dist/governance/governance-core.js +152 -0
- package/dist/governance/governance-service.js +274 -0
- package/dist/governance/governance-types.js +6 -0
- package/dist/index.js +24 -0
- package/dist/inference/deploy-verifier.js +161 -0
- package/dist/inference/index.js +5 -0
- package/dist/inference/inference-accumulator.js +126 -0
- package/dist/inference/inference-cycle.js +1168 -0
- package/dist/inference/semantic-patterns.js +310 -0
- package/dist/inference/session-capture.js +308 -0
- package/dist/integrations/base/ExampleIntegration.js +181 -0
- package/dist/integrations/base/Integration.js +395 -0
- package/dist/integrations/base/README.md +446 -0
- package/dist/integrations/base/index.js +16 -0
- package/dist/integrations/base/registry.js +606 -0
- package/dist/integrations/base/types.js +118 -0
- package/dist/integrations/governance/governance-client.js +316 -0
- package/dist/integrations/governance/index.js +373 -0
- package/dist/integrations/governance/types.js +97 -0
- package/dist/integrations/grok/grok-cli.js +83 -0
- package/dist/integrations/grok/hooks/pre-tool-use.js +134 -0
- package/dist/integrations/grok/plugin/0xray/.mcp.json +15 -0
- package/dist/integrations/grok/plugin/0xray/hooks/hooks.json +30 -0
- package/dist/integrations/hermes-agent/__init__.py +718 -0
- package/dist/integrations/hermes-agent/after-install.md +71 -0
- package/dist/integrations/hermes-agent/bridge.mjs +861 -0
- package/dist/integrations/hermes-agent/conftest.py +14 -0
- package/dist/integrations/hermes-agent/plugin.yaml +12 -0
- package/dist/integrations/hermes-agent/schemas.py +100 -0
- package/dist/integrations/hermes-agent/test_plugin.py +1100 -0
- package/dist/integrations/hermes-agent/tools.py +253 -0
- package/dist/integrations/openclaw/README.md +134 -0
- package/dist/integrations/openclaw/api-server.js +389 -0
- package/dist/integrations/openclaw/client.js +492 -0
- package/dist/integrations/openclaw/config.js +374 -0
- package/dist/integrations/openclaw/hooks/strray-hooks.js +280 -0
- package/dist/integrations/openclaw/index.js +351 -0
- package/dist/integrations/openclaw/types.js +153 -0
- package/dist/integrations/plugins/index.js +10 -0
- package/dist/integrations/plugins/plugin-integration.js +606 -0
- package/dist/integrations/plugins/plugin-registry.js +580 -0
- package/dist/mcps/agent-resolver.js +106 -0
- package/dist/mcps/architect-tools.server.js +277 -0
- package/dist/mcps/auto-format.server.js +413 -0
- package/dist/mcps/boot-orchestrator.server.js +853 -0
- package/dist/mcps/config/config-loader.js +103 -0
- package/dist/mcps/config/config-validator.js +101 -0
- package/dist/mcps/config/index.js +30 -0
- package/dist/mcps/config/plugin-server-registry.js +223 -0
- package/dist/mcps/config/server-config-registry.js +348 -0
- package/dist/mcps/connection/connection-manager.js +79 -0
- package/dist/mcps/connection/connection-pool.js +164 -0
- package/dist/mcps/connection/mcp-connection.js +233 -0
- package/dist/mcps/connection/process-spawner.js +34 -0
- package/dist/mcps/enforcer-tools.server.js +778 -0
- package/dist/mcps/estimation.server.js +192 -0
- package/dist/mcps/framework-compliance-audit.server.js +500 -0
- package/dist/mcps/framework-help.server.js +400 -0
- package/dist/mcps/governance.server.js +464 -0
- package/dist/mcps/in-process-skill-registry.js +48 -0
- package/dist/mcps/knowledge-skills/api-design.server.js +123 -0
- package/dist/mcps/knowledge-skills/architecture-patterns.server.js +113 -0
- package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +474 -0
- package/dist/mcps/knowledge-skills/code-analyzer.server.js +605 -0
- package/dist/mcps/knowledge-skills/code-review.server.js +847 -0
- package/dist/mcps/knowledge-skills/content-creator.server.js +256 -0
- package/dist/mcps/knowledge-skills/database-design.server.js +822 -0
- package/dist/mcps/knowledge-skills/devops-deployment.server.js +1180 -0
- package/dist/mcps/knowledge-skills/git-workflow.server.js +115 -0
- package/dist/mcps/knowledge-skills/growth-strategist.server.js +361 -0
- package/dist/mcps/knowledge-skills/log-monitor.server.js +451 -0
- package/dist/mcps/knowledge-skills/mobile-development.server.js +525 -0
- package/dist/mcps/knowledge-skills/multimodal-looker.server.js +1063 -0
- package/dist/mcps/knowledge-skills/performance-optimization.server.js +1587 -0
- package/dist/mcps/knowledge-skills/project-analysis.server.js +811 -0
- package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +796 -0
- package/dist/mcps/knowledge-skills/security-audit.server.js +846 -0
- package/dist/mcps/knowledge-skills/seo-consultant.server.js +937 -0
- package/dist/mcps/knowledge-skills/session-management.server.js +470 -0
- package/dist/mcps/knowledge-skills/skill-invocation.server.js +729 -0
- package/dist/mcps/knowledge-skills/strategist.server.js +217 -0
- package/dist/mcps/knowledge-skills/tech-writer.server.js +1191 -0
- package/dist/mcps/knowledge-skills/testing-best-practices.server.js +866 -0
- package/dist/mcps/knowledge-skills/testing-strategy.server.js +827 -0
- package/dist/mcps/knowledge-skills/ui-ux-design.server.js +1538 -0
- package/dist/mcps/lint.server.js +381 -0
- package/dist/mcps/mcp-client.js +574 -0
- package/dist/mcps/model-health-check.server.js +228 -0
- package/dist/mcps/orchestrator/config/agent-capabilities.js +87 -0
- package/dist/mcps/orchestrator/execution/execution-planner.js +279 -0
- package/dist/mcps/orchestrator/handlers/complexity-handler.js +94 -0
- package/dist/mcps/orchestrator/handlers/status-handler.js +232 -0
- package/dist/mcps/orchestrator/handlers/task-handler.js +197 -0
- package/dist/mcps/orchestrator/server.js +305 -0
- package/dist/mcps/orchestrator/types.js +6 -0
- package/dist/mcps/orchestrator.server.js +19 -0
- package/dist/mcps/performance-analysis.server.js +519 -0
- package/dist/mcps/processor-pipeline.server.js +561 -0
- package/dist/mcps/protocol/protocol-constants.js +46 -0
- package/dist/mcps/registry.json +110 -0
- package/dist/mcps/researcher.server.js +504 -0
- package/dist/mcps/security-scan.server.js +531 -0
- package/dist/mcps/simulation/index.js +12 -0
- package/dist/mcps/simulation/server-simulations.js +219 -0
- package/dist/mcps/simulation/simulation-engine.js +96 -0
- package/dist/mcps/state-manager.server.js +637 -0
- package/dist/mcps/tools/index.js +14 -0
- package/dist/mcps/tools/tool-cache.js +112 -0
- package/dist/mcps/tools/tool-discovery.js +65 -0
- package/dist/mcps/tools/tool-executor.js +75 -0
- package/dist/mcps/tools/tool-registry.js +67 -0
- package/dist/mcps/types/index.js +15 -0
- package/dist/mcps/types/json-rpc.types.js +7 -0
- package/dist/mcps/types/mcp.types.js +7 -0
- package/dist/metrics/agent-metrics.js +574 -0
- package/dist/metrics/index.js +6 -0
- package/dist/monitoring/advanced-profiler.js +232 -0
- package/dist/monitoring/memory-monitor.js +315 -0
- package/dist/monitoring/nudge-watchdog.js +356 -0
- package/dist/monitoring/test-auto-generation-monitor.js +157 -0
- package/dist/orchestrator/agent-spawn-governor.js +559 -0
- package/dist/orchestrator/enhanced-multi-agent-orchestrator.js +399 -0
- package/dist/orchestrator/intelligent-commit-batcher.js +353 -0
- package/dist/orchestrator/multi-agent-orchestration-coordinator.js +456 -0
- package/dist/orchestrator/orchestrator.js +657 -0
- package/dist/orchestrator/self-direction-activation.js +245 -0
- package/dist/orchestrator/universal-librarian-consultation.js +216 -0
- package/dist/orchestrator/universal-registry-bridge.js +247 -0
- package/dist/performance/performance-budget-enforcer.js +434 -0
- package/dist/performance/performance-regression-tester.js +342 -0
- package/dist/plugin/xray-codex-injection.js +857 -0
- package/dist/postprocessor/PostProcessor.js +1048 -0
- package/dist/postprocessor/analysis/FailureAnalysisEngine.js +245 -0
- package/dist/postprocessor/autofix/AutoFixEngine.js +254 -0
- package/dist/postprocessor/autofix/FixValidator.js +56 -0
- package/dist/postprocessor/config.js +65 -0
- package/dist/postprocessor/escalation/EscalationEngine.js +492 -0
- package/dist/postprocessor/monitoring/MonitoringEngine.js +125 -0
- package/dist/postprocessor/redeploy/RedeployCoordinator.js +342 -0
- package/dist/postprocessor/services/RegressionAnalysisService.js +131 -0
- package/dist/postprocessor/success/SuccessHandler.js +134 -0
- package/dist/postprocessor/triggers/APITrigger.js +115 -0
- package/dist/postprocessor/triggers/GitHookTrigger.js +551 -0
- package/dist/postprocessor/triggers/WebhookTrigger.js +211 -0
- package/dist/postprocessor/types.js +4 -0
- package/dist/processors/doc-write-guard.js +46 -0
- package/dist/processors/implementations/agents-md-validation-processor.js +286 -0
- package/dist/processors/implementations/async-pattern-processor.js +158 -0
- package/dist/processors/implementations/codex-compliance-processor.js +57 -0
- package/dist/processors/implementations/commit-batcher-processor.js +71 -0
- package/dist/processors/implementations/console-log-guard-processor.js +163 -0
- package/dist/processors/implementations/coverage-analysis-processor.js +138 -0
- package/dist/processors/implementations/error-boundary-processor.js +44 -0
- package/dist/processors/implementations/inference-improvement-processor.js +270 -0
- package/dist/processors/implementations/log-protection-processor.js +118 -0
- package/dist/processors/implementations/nudge-processor.js +130 -0
- package/dist/processors/implementations/performance-budget-processor.js +217 -0
- package/dist/processors/implementations/postprocessor-chain-validator.js +149 -0
- package/dist/processors/implementations/pre-validate-processor.js +18 -0
- package/dist/processors/implementations/publish-preflight-processor.js +249 -0
- package/dist/processors/implementations/refactoring-logging-processor-wrapper.js +33 -0
- package/dist/processors/implementations/refactoring-logging-processor.js +96 -0
- package/dist/processors/implementations/regression-testing-processor.js +59 -0
- package/dist/processors/implementations/session-capture-processor.js +37 -0
- package/dist/processors/implementations/session-summary-processor.js +130 -0
- package/dist/processors/implementations/spawn-governance-processor.js +219 -0
- package/dist/processors/implementations/state-validation-processor.js +15 -0
- package/dist/processors/implementations/storytelling-trigger-processor.js +589 -0
- package/dist/processors/implementations/test-auto-creation-processor.js +484 -0
- package/dist/processors/implementations/test-execution-processor.js +132 -0
- package/dist/processors/implementations/typescript-compilation-processor.js +87 -0
- package/dist/processors/implementations/version-compliance-processor.js +350 -0
- package/dist/processors/processor-interfaces.js +126 -0
- package/dist/processors/processor-manager.js +826 -0
- package/dist/processors/processor-types.js +12 -0
- package/dist/public/about.html +228 -0
- package/dist/public/enterprise.html +27 -0
- package/dist/public/features.html +102 -0
- package/dist/public/index.html +145 -0
- package/dist/reporting/framework-reporting-system.js +187 -0
- package/dist/reporting/log-parser.js +281 -0
- package/dist/reporting/metrics.js +202 -0
- package/dist/reporting/report-formatter.js +146 -0
- package/dist/reporting/types.js +1 -0
- package/dist/scripts/activate-kernel-pipeline.js +101 -0
- package/dist/scripts/integration.js +234 -0
- package/dist/scripts/pre-command +26 -0
- package/dist/scripts/pre-command.mjs +358 -0
- package/dist/security/comprehensive-security-audit.js +1005 -0
- package/dist/security/index.js +13 -0
- package/dist/security/prompt-security-validator.js +148 -0
- package/dist/security/security-agent-coordinator.js +204 -0
- package/dist/security/security-auditor.js +584 -0
- package/dist/security/security-hardener.js +170 -0
- package/dist/security/security-hardening-system.js +727 -0
- package/dist/security/security-headers.js +118 -0
- package/dist/security/security-orchestration-layer.js +496 -0
- package/dist/security/security-scanner.js +429 -0
- package/dist/services/inference-tuner.js +301 -0
- package/dist/session/index.js +3 -0
- package/dist/session/session-cleanup-manager.js +366 -0
- package/dist/session/session-monitor.js +503 -0
- package/dist/session/session-state-manager.js +522 -0
- package/dist/skills/api-design/SKILL.md +37 -0
- package/dist/skills/architect-tools/SKILL.md +37 -0
- package/dist/skills/architecture-patterns/SKILL.md +37 -0
- package/dist/skills/auto-format/SKILL.md +37 -0
- package/dist/skills/backend-engineer/SKILL.md +49 -0
- package/dist/skills/boot-orchestrator/SKILL.md +37 -0
- package/dist/skills/bug-triage/SKILL.md +43 -0
- package/dist/skills/code-analyzer/SKILL.md +45 -0
- package/dist/skills/code-review/SKILL.md +52 -0
- package/dist/skills/content-creator/SKILL.md +38 -0
- package/dist/skills/database-engineer/SKILL.md +46 -0
- package/dist/skills/devops-engineer/SKILL.md +49 -0
- package/dist/skills/enforcer/SKILL.md +37 -0
- package/dist/skills/framework-compliance-audit/SKILL.md +37 -0
- package/dist/skills/frontend-engineer/SKILL.md +49 -0
- package/dist/skills/frontend-ui-ux-engineer/SKILL.md +41 -0
- package/dist/skills/git-workflow/SKILL.md +37 -0
- package/dist/skills/growth-strategist/SKILL.md +48 -0
- package/dist/skills/hermes-agent/SKILL.md +212 -0
- package/dist/skills/inference-improve/SKILL.md +97 -0
- package/dist/skills/lint/SKILL.md +37 -0
- package/dist/skills/log-monitor/SKILL.md +44 -0
- package/dist/skills/mobile-developer/SKILL.md +42 -0
- package/dist/skills/model-health-check/SKILL.md +37 -0
- package/dist/skills/multimodal-looker/SKILL.md +45 -0
- package/dist/skills/orchestrator/SKILL.md +37 -0
- package/dist/skills/performance-analysis/SKILL.md +37 -0
- package/dist/skills/performance-engineer/SKILL.md +41 -0
- package/dist/skills/performance-optimization/SKILL.md +37 -0
- package/dist/skills/processor-pipeline/SKILL.md +37 -0
- package/dist/skills/project-analysis/SKILL.md +42 -0
- package/dist/skills/refactoring-strategies/SKILL.md +37 -0
- package/dist/skills/registry.json +66 -0
- package/dist/skills/researcher/SKILL.md +37 -0
- package/dist/skills/security-audit/SKILL.md +48 -0
- package/dist/skills/security-scan/SKILL.md +37 -0
- package/dist/skills/seo-consultant/SKILL.md +43 -0
- package/dist/skills/session-management/SKILL.md +36 -0
- package/dist/skills/state-manager/SKILL.md +37 -0
- package/dist/skills/storyteller/SKILL.md +130 -0
- package/dist/skills/strategist/SKILL.md +32 -0
- package/dist/skills/tech-writer/SKILL.md +37 -0
- package/dist/skills/testing-best-practices/SKILL.md +37 -0
- package/dist/skills/testing-strategy/SKILL.md +43 -0
- package/dist/skills/ui-ux-design/SKILL.md +603 -0
- package/dist/state/context-providers.js +1 -0
- package/dist/state/index.js +7 -0
- package/dist/state/state-manager.js +208 -0
- package/dist/state/state-types.js +1 -0
- package/dist/testing/memory-regression-suite.js +258 -0
- package/dist/utils/batch-operations.js +292 -0
- package/dist/utils/codex-parser.js +445 -0
- package/dist/utils/command-runner.js +96 -0
- package/dist/utils/import-resolver.js +189 -0
- package/dist/utils/language-detector.js +383 -0
- package/dist/utils/path-resolver.js +112 -0
- package/dist/utils/shutdown-handler.js +75 -0
- package/dist/utils/test-template-generator.js +178 -0
- package/dist/utils/token-manager.js +163 -0
- package/dist/validation/estimation-validator.js +241 -0
- package/dist/validation/report-content-validator.js +218 -0
- package/opencode.json +153 -0
- package/package.json +170 -0
- package/scripts/helpers/resolve-config-path.cjs +57 -0
- package/scripts/helpers/resolve-config-path.mjs +73 -0
- package/scripts/hooks/pre-command +26 -0
- package/scripts/hooks/pre-command.mjs +358 -0
- package/scripts/hooks/run-hook.js +570 -0
- package/scripts/mjs/test-consumer-readiness.mjs +273 -0
- package/scripts/mjs/test-mcp-functionality.mjs +507 -0
- package/scripts/mjs/validate-mcp-connectivity.cjs +75 -0
- package/scripts/mjs/validate-postinstall-config.mjs +308 -0
- package/scripts/node/auto-reflection-generator.mjs +496 -0
- package/scripts/node/basic-security-audit.cjs +338 -0
- package/scripts/node/ci-cd-auto-fix.cjs +263 -0
- package/scripts/node/ci-report-generator.mjs +227 -0
- package/scripts/node/enforce-agents-md.mjs +420 -0
- package/scripts/node/enforce-version-compliance.sh +22 -0
- package/scripts/node/enforce-version-compliance.ts +126 -0
- package/scripts/node/github-actions-monitor.cjs +23 -0
- package/scripts/node/govern-reflection.mjs +160 -0
- package/scripts/node/postinstall.cjs +78 -0
- package/scripts/node/pre-publish-guard.js +267 -0
- package/scripts/node/prepare-consumer.cjs +143 -0
- package/scripts/node/reflection-processor.cjs +213 -0
- package/scripts/node/reflection-validate.sh +194 -0
- package/scripts/node/release-tweet.mjs +39 -0
- package/scripts/node/release.js +159 -0
- package/scripts/node/release.mjs +213 -0
- package/scripts/node/setup-dev.cjs +83 -0
- package/scripts/node/setup.cjs +214 -0
- package/scripts/node/sync-versions.mjs +140 -0
- package/scripts/node/universal-version-manager.js +1025 -0
- package/scripts/node/validate-external-processes.js +265 -0
- package/scripts/node/validate-mcp-connectivity.js +258 -0
- package/scripts/node/version-manager.mjs +524 -0
- package/scripts/validate-stringray-comprehensive.js +636 -0
- package/src/integrations/grok/plugin/0xray/.mcp.json +15 -0
- package/src/integrations/grok/plugin/0xray/hooks/hooks.json +30 -0
- package/src/mcps/agent-resolver.ts +168 -0
- package/src/mcps/architect-tools.server.ts +343 -0
- package/src/mcps/auto-format.server.ts +529 -0
- package/src/mcps/boot-orchestrator.server.ts +1082 -0
- package/src/mcps/config/__tests__/config-loader.test.ts +338 -0
- package/src/mcps/config/__tests__/config-validator.test.ts +646 -0
- package/src/mcps/config/__tests__/server-config-registry.test.ts +257 -0
- package/src/mcps/config/config-loader.ts +127 -0
- package/src/mcps/config/config-validator.ts +127 -0
- package/src/mcps/config/index.ts +32 -0
- package/src/mcps/config/plugin-server-registry.ts +335 -0
- package/src/mcps/config/server-config-registry.ts +395 -0
- package/src/mcps/connection/connection-manager.ts +91 -0
- package/src/mcps/connection/connection-pool.ts +216 -0
- package/src/mcps/connection/mcp-connection.ts +327 -0
- package/src/mcps/connection/process-spawner.ts +47 -0
- package/src/mcps/enforcer-tools.server.ts +1106 -0
- package/src/mcps/estimation.server.ts +229 -0
- package/src/mcps/framework-compliance-audit.server.ts +635 -0
- package/src/mcps/framework-help.server.ts +467 -0
- package/src/mcps/governance.server.ts +551 -0
- package/src/mcps/in-process-skill-registry.ts +79 -0
- package/src/mcps/knowledge-skills/api-design.server.test.ts +41 -0
- package/src/mcps/knowledge-skills/api-design.server.ts +160 -0
- package/src/mcps/knowledge-skills/architecture-patterns.server.ts +152 -0
- package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +624 -0
- package/src/mcps/knowledge-skills/code-analyzer.server.test.ts +129 -0
- package/src/mcps/knowledge-skills/code-analyzer.server.ts +591 -0
- package/src/mcps/knowledge-skills/code-review.server.ts +1132 -0
- package/src/mcps/knowledge-skills/content-creator.server.ts +300 -0
- package/src/mcps/knowledge-skills/database-design.server.ts +1200 -0
- package/src/mcps/knowledge-skills/devops-deployment.server.ts +1622 -0
- package/src/mcps/knowledge-skills/git-workflow.server.ts +152 -0
- package/src/mcps/knowledge-skills/growth-strategist.server.ts +413 -0
- package/src/mcps/knowledge-skills/log-monitor.server.ts +619 -0
- package/src/mcps/knowledge-skills/mobile-development.server.ts +672 -0
- package/src/mcps/knowledge-skills/multimodal-looker.server.ts +1500 -0
- package/src/mcps/knowledge-skills/performance-optimization.server.ts +2065 -0
- package/src/mcps/knowledge-skills/project-analysis.server.ts +1111 -0
- package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +1092 -0
- package/src/mcps/knowledge-skills/security-audit.server.test.ts +112 -0
- package/src/mcps/knowledge-skills/security-audit.server.ts +1193 -0
- package/src/mcps/knowledge-skills/seo-consultant.server.ts +1160 -0
- package/src/mcps/knowledge-skills/session-management.server.ts +576 -0
- package/src/mcps/knowledge-skills/skill-invocation.server.ts +941 -0
- package/src/mcps/knowledge-skills/strategist.server.ts +267 -0
- package/src/mcps/knowledge-skills/tech-writer.server.ts +1638 -0
- package/src/mcps/knowledge-skills/testing-best-practices.server.test.ts +136 -0
- package/src/mcps/knowledge-skills/testing-best-practices.server.ts +1232 -0
- package/src/mcps/knowledge-skills/testing-strategy.server.test.ts +100 -0
- package/src/mcps/knowledge-skills/testing-strategy.server.ts +1172 -0
- package/src/mcps/knowledge-skills/ui-ux-design.server.ts +2076 -0
- package/src/mcps/lint.server.ts +483 -0
- package/src/mcps/mcp-client.ts +706 -0
- package/src/mcps/model-health-check.server.ts +292 -0
- package/src/mcps/orchestrator/config/agent-capabilities.ts +108 -0
- package/src/mcps/orchestrator/execution/execution-planner.ts +353 -0
- package/src/mcps/orchestrator/handlers/complexity-handler.ts +125 -0
- package/src/mcps/orchestrator/handlers/status-handler.ts +295 -0
- package/src/mcps/orchestrator/handlers/task-handler.ts +268 -0
- package/src/mcps/orchestrator/server.ts +388 -0
- package/src/mcps/orchestrator/types.ts +81 -0
- package/src/mcps/orchestrator.server.ts +34 -0
- package/src/mcps/performance-analysis.server.ts +715 -0
- package/src/mcps/processor-pipeline.server.ts +778 -0
- package/src/mcps/protocol/protocol-constants.ts +51 -0
- package/src/mcps/registry.json +110 -0
- package/src/mcps/researcher.server.ts +595 -0
- package/src/mcps/security-scan.server.ts +651 -0
- package/src/mcps/simulation/__tests__/simulation-engine.test.ts +275 -0
- package/src/mcps/simulation/index.ts +23 -0
- package/src/mcps/simulation/server-simulations.ts +241 -0
- package/src/mcps/simulation/simulation-engine.ts +126 -0
- package/src/mcps/state-manager.server.ts +777 -0
- package/src/mcps/tools/__tests__/tool-cache.test.ts +205 -0
- package/src/mcps/tools/__tests__/tool-discovery.test.ts +189 -0
- package/src/mcps/tools/__tests__/tool-executor.test.ts +215 -0
- package/src/mcps/tools/__tests__/tool-registry.test.ts +230 -0
- package/src/mcps/tools/index.ts +15 -0
- package/src/mcps/tools/tool-cache.ts +145 -0
- package/src/mcps/tools/tool-discovery.ts +83 -0
- package/src/mcps/tools/tool-executor.ts +106 -0
- package/src/mcps/tools/tool-registry.ts +78 -0
- package/src/mcps/types/__tests__/types.test.ts +341 -0
- package/src/mcps/types/index.ts +17 -0
- package/src/mcps/types/json-rpc.types.ts +38 -0
- package/src/mcps/types/mcp.types.ts +115 -0
- package/src/opencode/agents/api-design.yml +31 -0
- package/src/opencode/agents/architect.yml +15 -0
- package/src/opencode/agents/architecture-patterns.yml +14 -0
- package/src/opencode/agents/auto-format.yml +14 -0
- package/src/opencode/agents/backend-engineer.yml +12 -0
- package/src/opencode/agents/boot-orchestrator.yml +14 -0
- package/src/opencode/agents/bug-triage-specialist.yml +15 -0
- package/src/opencode/agents/code-analyzer.yml +12 -0
- package/src/opencode/agents/code-reviewer.yml +14 -0
- package/src/opencode/agents/content-creator.yml +12 -0
- package/src/opencode/agents/database-engineer.yml +12 -0
- package/src/opencode/agents/devops-engineer.yml +12 -0
- package/src/opencode/agents/framework-compliance-audit.yml +14 -0
- package/src/opencode/agents/frontend-engineer.yml +12 -0
- package/src/opencode/agents/frontend-ui-ux-engineer.yml +12 -0
- package/src/opencode/agents/git-workflow.yml +15 -0
- package/src/opencode/agents/growth-strategist.yml +12 -0
- package/src/opencode/agents/hermes-agent.yml +12 -0
- package/src/opencode/agents/inference-improve.yml +12 -0
- package/src/opencode/agents/lint.yml +14 -0
- package/src/opencode/agents/log-monitor.yml +12 -0
- package/src/opencode/agents/mobile-developer.yml +12 -0
- package/src/opencode/agents/model-health-check.yml +12 -0
- package/src/opencode/agents/multimodal-looker.yml +12 -0
- package/src/opencode/agents/performance-analysis.yml +12 -0
- package/src/opencode/agents/performance-engineer.yml +12 -0
- package/src/opencode/agents/performance-optimization.yml +12 -0
- package/src/opencode/agents/processor-pipeline.yml +14 -0
- package/src/opencode/agents/project-analysis.yml +12 -0
- package/src/opencode/agents/refactorer.yml +12 -0
- package/src/opencode/agents/researcher.yml +12 -0
- package/src/opencode/agents/security-auditor.yml +12 -0
- package/src/opencode/agents/security-scan.yml +12 -0
- package/src/opencode/agents/seo-consultant.yml +12 -0
- package/src/opencode/agents/session-management.yml +12 -0
- package/src/opencode/agents/state-manager.yml +12 -0
- package/src/opencode/agents/storyteller.yml +12 -0
- package/src/opencode/agents/strategist.yml +12 -0
- package/src/opencode/agents/tech-writer.yml +12 -0
- package/src/opencode/agents/testing-best-practices.yml +12 -0
- package/src/opencode/agents/testing-lead.yml +12 -0
- package/src/opencode/agents/ui-ux-design.yml +12 -0
- package/src/opencode/codex.codex +8 -0
- package/src/opencode/commands/auto-format.md +99 -0
- package/src/opencode/commands/auto-summary-capture.md +90 -0
- package/src/opencode/commands/dependency-audit.md +184 -0
- package/src/opencode/commands/enforcer-daily-scan.md +137 -0
- package/src/opencode/commands/framework-compliance-audit.md +205 -0
- package/src/opencode/commands/interactive-validator.md +75 -0
- package/src/opencode/commands/job-summary-logger.md +68 -0
- package/src/opencode/commands/lint.md +11 -0
- package/src/opencode/commands/mode-switch.md +95 -0
- package/src/opencode/commands/model-health-check.md +186 -0
- package/src/opencode/commands/performance-analysis.md +144 -0
- package/src/opencode/commands/pre-commit-introspection.md +185 -0
- package/src/opencode/commands/pre-commit-introspection.sh +133 -0
- package/src/opencode/commands/security-scan.md +157 -0
- package/src/opencode/commands/sisyphus-validation.md +128 -0
- package/src/opencode/commands/summary-logger.md +83 -0
- package/src/opencode/enforcer-config.json +285 -0
- package/src/opencode/openclaw/config.json +25 -0
- package/src/opencode/workflows/post-deployment-audit.yml +123 -0
- package/src/skills/api-design/SKILL.md +37 -0
- package/src/skills/architect-tools/SKILL.md +37 -0
- package/src/skills/architecture-patterns/SKILL.md +37 -0
- package/src/skills/auto-format/SKILL.md +37 -0
- package/src/skills/backend-engineer/SKILL.md +49 -0
- package/src/skills/boot-orchestrator/SKILL.md +37 -0
- package/src/skills/bug-triage/SKILL.md +43 -0
- package/src/skills/code-analyzer/SKILL.md +45 -0
- package/src/skills/code-review/SKILL.md +52 -0
- package/src/skills/content-creator/SKILL.md +38 -0
- package/src/skills/database-engineer/SKILL.md +46 -0
- package/src/skills/devops-engineer/SKILL.md +49 -0
- package/src/skills/enforcer/SKILL.md +37 -0
- package/src/skills/framework-compliance-audit/SKILL.md +37 -0
- package/src/skills/frontend-engineer/SKILL.md +49 -0
- package/src/skills/frontend-ui-ux-engineer/SKILL.md +41 -0
- package/src/skills/git-workflow/SKILL.md +37 -0
- package/src/skills/growth-strategist/SKILL.md +48 -0
- package/src/skills/hermes-agent/SKILL.md +212 -0
- package/src/skills/inference-improve/SKILL.md +97 -0
- package/src/skills/lint/SKILL.md +37 -0
- package/src/skills/log-monitor/SKILL.md +44 -0
- package/src/skills/mobile-developer/SKILL.md +42 -0
- package/src/skills/model-health-check/SKILL.md +37 -0
- package/src/skills/multimodal-looker/SKILL.md +45 -0
- package/src/skills/orchestrator/SKILL.md +37 -0
- package/src/skills/performance-analysis/SKILL.md +37 -0
- package/src/skills/performance-engineer/SKILL.md +41 -0
- package/src/skills/performance-optimization/SKILL.md +37 -0
- package/src/skills/processor-pipeline/SKILL.md +37 -0
- package/src/skills/project-analysis/SKILL.md +42 -0
- package/src/skills/refactoring-strategies/SKILL.md +37 -0
- package/src/skills/registry.json +66 -0
- package/src/skills/researcher/SKILL.md +37 -0
- package/src/skills/security-audit/SKILL.md +48 -0
- package/src/skills/security-scan/SKILL.md +37 -0
- package/src/skills/seo-consultant/SKILL.md +43 -0
- package/src/skills/session-management/SKILL.md +36 -0
- package/src/skills/state-manager/SKILL.md +37 -0
- package/src/skills/storyteller/SKILL.md +130 -0
- package/src/skills/strategist/SKILL.md +32 -0
- package/src/skills/tech-writer/SKILL.md +37 -0
- package/src/skills/testing-best-practices/SKILL.md +37 -0
- package/src/skills/testing-strategy/SKILL.md +43 -0
- package/src/skills/ui-ux-design/SKILL.md +603 -0
|
@@ -0,0 +1,812 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Boot Orchestrator (min documented consumer runtime compat shim from prior StringRay releases; primary Xray* paths + XRAY_||STRRAY_ env + .strray fallbacks only; 1-line per Scope Rule).
|
|
3
|
+
*/
|
|
4
|
+
import { StringRayContextLoader } from "./context-loader.js";
|
|
5
|
+
import { StringRayStateManager } from "../state/state-manager.js";
|
|
6
|
+
import { ProcessorManager } from "../processors/processor-manager.js";
|
|
7
|
+
import { pathResolver } from "../utils/path-resolver.js";
|
|
8
|
+
import * as fs from "fs";
|
|
9
|
+
import * as path from "path";
|
|
10
|
+
const { existsSync, readFileSync } = fs;
|
|
11
|
+
// Path configuration - can be overridden by environment or use path resolver
|
|
12
|
+
const AGENTS_BASE_PATH = process.env.STRRAY_AGENTS_PATH || "../agents";
|
|
13
|
+
import { createAgentDelegator, createSessionCoordinator, } from "../delegation/index.js";
|
|
14
|
+
import { createSessionCleanupManager } from "../session/session-cleanup-manager.js";
|
|
15
|
+
import { createSessionMonitor } from "../session/session-monitor.js";
|
|
16
|
+
import { createSessionStateManager } from "../session/session-state-manager.js";
|
|
17
|
+
import { securityHardener } from "../security/security-hardener.js";
|
|
18
|
+
import { securityHeadersMiddleware } from "../security/security-headers.js";
|
|
19
|
+
import { frameworkLogger } from "../core/framework-logger.js";
|
|
20
|
+
import { featuresConfigLoader } from "../core/features-config.js";
|
|
21
|
+
import { memoryMonitor } from "../monitoring/memory-monitor.js";
|
|
22
|
+
import { advancedProfiler } from "../monitoring/advanced-profiler.js";
|
|
23
|
+
import { strRayConfigLoader } from "./config-loader.js";
|
|
24
|
+
import { PluginRegistry } from "../integrations/plugins/index.js";
|
|
25
|
+
import { PluginServerConfigRegistry } from "../mcps/config/index.js";
|
|
26
|
+
import { initializeGovernanceIntegration } from "../integrations/governance/index.js";
|
|
27
|
+
/**
|
|
28
|
+
* Set up graceful interruption handling to prevent JSON parsing errors
|
|
29
|
+
* when processes are interrupted mid-operation
|
|
30
|
+
*/
|
|
31
|
+
function setupGracefulShutdown() {
|
|
32
|
+
// Prevent duplicate listeners
|
|
33
|
+
if (process._strrayShutdownSetup) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
process._strrayShutdownSetup = true;
|
|
37
|
+
let isShuttingDown = false;
|
|
38
|
+
process.on("SIGINT", async () => {
|
|
39
|
+
if (isShuttingDown) {
|
|
40
|
+
process.exit(0);
|
|
41
|
+
}
|
|
42
|
+
isShuttingDown = true;
|
|
43
|
+
try {
|
|
44
|
+
await frameworkLogger.log("boot-orchestrator", "-received-sigint-shutting-down-gracefully-", "info", { message: "Received SIGINT, shutting down gracefully..." });
|
|
45
|
+
// Basic cleanup - orchestrator shutdown handled by process termination
|
|
46
|
+
process.exit(0);
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
// Suppress error output in CLI mode to avoid breaking interface
|
|
50
|
+
if (process.env.STRRAY_CLI_MODE !== "true" &&
|
|
51
|
+
process.env.OPENCODE_CLI !== "true") {
|
|
52
|
+
frameworkLogger.log("boot-orchestrator", "shutdown-error", "error", { error, message: "Error during graceful shutdown" });
|
|
53
|
+
}
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
process.on("SIGTERM", async () => {
|
|
58
|
+
// Termination signal message kept as console.log
|
|
59
|
+
try {
|
|
60
|
+
memoryMonitor.stop();
|
|
61
|
+
advancedProfiler.stop();
|
|
62
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
63
|
+
process.exit(0);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
// Handle uncaught exceptions that might cause JSON parsing errors
|
|
70
|
+
process.on("uncaughtException", (error) => {
|
|
71
|
+
// Suppress error output in CLI mode to avoid breaking interface
|
|
72
|
+
if (process.env.STRRAY_CLI_MODE !== "true" &&
|
|
73
|
+
process.env.OPENCODE_CLI !== "true") {
|
|
74
|
+
frameworkLogger.log("boot-orchestrator", "uncaught-exception", "error", { error, message: "Uncaught Exception" });
|
|
75
|
+
}
|
|
76
|
+
memoryMonitor.stop();
|
|
77
|
+
advancedProfiler.stop();
|
|
78
|
+
process.exit(1);
|
|
79
|
+
});
|
|
80
|
+
process.on("unhandledRejection", (reason, promise) => {
|
|
81
|
+
// Suppress error output in CLI mode to avoid breaking interface
|
|
82
|
+
if (process.env.STRRAY_CLI_MODE !== "true" &&
|
|
83
|
+
process.env.OPENCODE_CLI !== "true") {
|
|
84
|
+
frameworkLogger.log("boot-orchestrator", "unhandled-rejection", "error", { promise, reason, message: "Unhandled Rejection" });
|
|
85
|
+
}
|
|
86
|
+
memoryMonitor.stop();
|
|
87
|
+
advancedProfiler.stop();
|
|
88
|
+
process.exit(1);
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
export class BootOrchestrator {
|
|
92
|
+
contextLoader;
|
|
93
|
+
stateManager;
|
|
94
|
+
processorManager;
|
|
95
|
+
config;
|
|
96
|
+
pluginRegistry;
|
|
97
|
+
pluginServerRegistry;
|
|
98
|
+
shutdownInitialized = false;
|
|
99
|
+
constructor(config = {}, stateManager) {
|
|
100
|
+
// Initialize components first for state management
|
|
101
|
+
this.contextLoader = StringRayContextLoader.getInstance();
|
|
102
|
+
this.stateManager = stateManager || new StringRayStateManager();
|
|
103
|
+
this.processorManager = new ProcessorManager(this.stateManager);
|
|
104
|
+
this.config = {
|
|
105
|
+
enableEnforcement: true,
|
|
106
|
+
codexValidation: true,
|
|
107
|
+
sessionManagement: true,
|
|
108
|
+
processorActivation: true,
|
|
109
|
+
agentLoading: true,
|
|
110
|
+
...config,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Initialize delegation system components
|
|
115
|
+
*/
|
|
116
|
+
async initializeDelegationSystem() {
|
|
117
|
+
try {
|
|
118
|
+
const agentDelegator = createAgentDelegator(this.stateManager, strRayConfigLoader);
|
|
119
|
+
this.stateManager.set("delegation:agent_delegator", agentDelegator);
|
|
120
|
+
const sessionCoordinator = createSessionCoordinator(this.stateManager);
|
|
121
|
+
this.stateManager.set("delegation:session_coordinator", sessionCoordinator);
|
|
122
|
+
const defaultSession = sessionCoordinator.initializeSession("default");
|
|
123
|
+
this.stateManager.set("delegation:default_session", defaultSession);
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
frameworkLogger.log("boot-orchestrator", "delegation-init-failed", "error", { error, message: "Failed to initialize delegation system" });
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
loadProcessorsConfig() {
|
|
132
|
+
try {
|
|
133
|
+
const configPaths = [
|
|
134
|
+
path.join(process.cwd(), ".strray", "features.json"),
|
|
135
|
+
path.join(process.cwd(), ".opencode", "strray", "features.json"),
|
|
136
|
+
];
|
|
137
|
+
for (const configPath of configPaths) {
|
|
138
|
+
if (existsSync(configPath)) {
|
|
139
|
+
const config = JSON.parse(readFileSync(configPath, "utf-8"));
|
|
140
|
+
return config.processors || null;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
// ignore - use defaults
|
|
146
|
+
}
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Initialize plugin system and register MCP servers
|
|
151
|
+
*/
|
|
152
|
+
async initializePluginSystem(jobId) {
|
|
153
|
+
try {
|
|
154
|
+
frameworkLogger.log("boot-orchestrator", "initializing plugin system", "info", { jobId });
|
|
155
|
+
const pluginsDir = path.join(process.cwd(), ".strray", "plugins");
|
|
156
|
+
this.pluginRegistry = new PluginRegistry({
|
|
157
|
+
pluginsDir,
|
|
158
|
+
autoStart: true,
|
|
159
|
+
enableMetrics: true,
|
|
160
|
+
});
|
|
161
|
+
await this.pluginRegistry.initialize();
|
|
162
|
+
this.pluginServerRegistry = new PluginServerConfigRegistry();
|
|
163
|
+
const registered = this.pluginServerRegistry.registerAllPluginServers(this.pluginRegistry, { overwrite: false });
|
|
164
|
+
this.stateManager.set("plugin:registry", this.pluginRegistry);
|
|
165
|
+
this.stateManager.set("plugin:serverRegistry", this.pluginServerRegistry);
|
|
166
|
+
this.stateManager.set("plugin:registered", registered);
|
|
167
|
+
frameworkLogger.log("boot-orchestrator", "plugin system initialized", "success", { jobId, pluginsDir, registeredServers: registered });
|
|
168
|
+
return true;
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
frameworkLogger.log("boot-orchestrator", "plugin-system-init-failed", "error", { jobId, error: error instanceof Error ? error.message : String(error) });
|
|
172
|
+
return false;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Load orchestrator as the first component
|
|
177
|
+
*/
|
|
178
|
+
async loadOrchestrator() {
|
|
179
|
+
try {
|
|
180
|
+
// Import orchestrator dynamically to ensure it's loaded first
|
|
181
|
+
let orchestratorModule;
|
|
182
|
+
try {
|
|
183
|
+
orchestratorModule = await import("../core/orchestrator");
|
|
184
|
+
}
|
|
185
|
+
catch (importError) {
|
|
186
|
+
frameworkLogger.log("boot-orchestrator", "orchestrator-load-failed", "error", {
|
|
187
|
+
error: importError,
|
|
188
|
+
message: "Failed to load orchestrator",
|
|
189
|
+
});
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
const orchestratorInstance = orchestratorModule.strRayOrchestrator;
|
|
193
|
+
if (!orchestratorInstance) {
|
|
194
|
+
frameworkLogger.log("boot-orchestrator", "orchestrator-not-found", "error", { message: "Orchestrator instance not found in module" });
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
// Store in state manager for later access
|
|
198
|
+
this.stateManager.set("orchestrator", orchestratorInstance);
|
|
199
|
+
return true;
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
frameworkLogger.log("boot-orchestrator", "orchestrator-load-failed-outer", "error", { error, message: "Failed to load orchestrator" });
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Initialize session management system
|
|
208
|
+
*/
|
|
209
|
+
async initializeSessionManagement() {
|
|
210
|
+
try {
|
|
211
|
+
// Initialize session state
|
|
212
|
+
this.stateManager.set("session:active", true);
|
|
213
|
+
this.stateManager.set("session:boot_time", Date.now());
|
|
214
|
+
this.stateManager.set("session:agents", []);
|
|
215
|
+
const sessionCoordinator = this.stateManager.get("delegation:session_coordinator");
|
|
216
|
+
if (sessionCoordinator) {
|
|
217
|
+
// Initialize session monitor first
|
|
218
|
+
const sessionMonitor = createSessionMonitor(this.stateManager, sessionCoordinator, undefined);
|
|
219
|
+
this.stateManager.set("session:monitor", sessionMonitor);
|
|
220
|
+
// Initialize session cleanup manager with session monitor reference
|
|
221
|
+
const cleanupManager = createSessionCleanupManager(this.stateManager, {}, sessionMonitor);
|
|
222
|
+
this.stateManager.set("session:cleanup_manager", cleanupManager);
|
|
223
|
+
cleanupManager.start();
|
|
224
|
+
// Update session monitor with cleanup manager reference
|
|
225
|
+
sessionMonitor.cleanupManager = cleanupManager;
|
|
226
|
+
const stateManagerInstance = createSessionStateManager(this.stateManager, sessionCoordinator);
|
|
227
|
+
this.stateManager.set("session:state_manager", stateManagerInstance);
|
|
228
|
+
const defaultSession = this.stateManager.get("delegation:default_session");
|
|
229
|
+
if (defaultSession?.sessionId) {
|
|
230
|
+
cleanupManager.registerSession(defaultSession.sessionId);
|
|
231
|
+
sessionMonitor.registerSession(defaultSession.sessionId);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return true;
|
|
235
|
+
}
|
|
236
|
+
catch (error) {
|
|
237
|
+
frameworkLogger.log("boot-orchestrator", "session-init-failed", "error", { error, message: "Failed to initialize session management" });
|
|
238
|
+
return false;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Activate pre/post processors
|
|
243
|
+
*/
|
|
244
|
+
async activateProcessors(jobId) {
|
|
245
|
+
try {
|
|
246
|
+
frameworkLogger.log("boot-orchestrator", "activateProcessors started", "info", { jobId });
|
|
247
|
+
// Processor definitions — single source of truth for all registrations
|
|
248
|
+
// Load from features.json if available, otherwise use defaults
|
|
249
|
+
const processorsConfig = this.loadProcessorsConfig();
|
|
250
|
+
const prePriorityOrder = processorsConfig?.pre_processors?.priority_order || ["preValidate", "codexCompliance"];
|
|
251
|
+
const postPriorityOrder = processorsConfig?.post_processors?.priority_order || ["storytellingTrigger", "testExecution", "regressionTesting"];
|
|
252
|
+
const prePriorityMap = {};
|
|
253
|
+
prePriorityOrder.forEach((name, idx) => { prePriorityMap[name] = 10 + (idx * 10); });
|
|
254
|
+
const postPriorityMap = {};
|
|
255
|
+
postPriorityOrder.forEach((name, idx) => { postPriorityMap[name] = 5 + (idx * 10); });
|
|
256
|
+
const PROCESSOR_DEFS = [
|
|
257
|
+
{ name: "preValidate", type: "pre", priority: prePriorityMap["preValidate"] || 10, enabled: true },
|
|
258
|
+
{ name: "typescriptCompilation", type: "pre", priority: prePriorityMap["typescriptCompilation"] || 15, enabled: true },
|
|
259
|
+
{ name: "codexCompliance", type: "pre", priority: prePriorityMap["codexCompliance"] || 20, enabled: true },
|
|
260
|
+
{ name: "testAutoCreation", type: "pre", priority: prePriorityMap["testAutoCreation"] || 22, enabled: true },
|
|
261
|
+
{ name: "versionCompliance", type: "pre", priority: prePriorityMap["versionCompliance"] || 25, enabled: true },
|
|
262
|
+
{ name: "errorBoundary", type: "pre", priority: prePriorityMap["errorBoundary"] || 30, enabled: true },
|
|
263
|
+
{ name: "agentsMdValidation", type: "pre", priority: prePriorityMap["agentsMdValidation"] || 35, enabled: true },
|
|
264
|
+
{ name: "logProtection", type: "pre", priority: prePriorityMap["logProtection"] || 37, enabled: true },
|
|
265
|
+
{ name: "stateValidation", type: "post", priority: postPriorityMap["stateValidation"] || 130, enabled: true },
|
|
266
|
+
{ name: "spawnGovernance", type: "pre", priority: prePriorityMap["spawnGovernance"] || 40, enabled: true },
|
|
267
|
+
{ name: "performanceBudget", type: "pre", priority: prePriorityMap["performanceBudget"] || 45, enabled: true },
|
|
268
|
+
{ name: "asyncPattern", type: "pre", priority: prePriorityMap["asyncPattern"] || 50, enabled: true },
|
|
269
|
+
{ name: "consoleLogGuard", type: "pre", priority: prePriorityMap["consoleLogGuard"] || 55, enabled: true },
|
|
270
|
+
{ name: "testExecution", type: "post", priority: postPriorityMap["testExecution"] || 60, enabled: true },
|
|
271
|
+
{ name: "regressionTesting", type: "post", priority: postPriorityMap["regressionTesting"] || 65, enabled: true },
|
|
272
|
+
{ name: "coverageAnalysis", type: "post", priority: postPriorityMap["coverageAnalysis"] || 70, enabled: true },
|
|
273
|
+
{ name: "inferenceImprovement", type: "post", priority: postPriorityMap["inferenceImprovement"] || 75, enabled: true },
|
|
274
|
+
{ name: "nudge", type: "post", priority: postPriorityMap["nudge"] || 78, enabled: true },
|
|
275
|
+
{ name: "refactoringLogging", type: "post", priority: postPriorityMap["refactoringLogging"] || 80, enabled: true },
|
|
276
|
+
{ name: "postProcessorChain", type: "post", priority: postPriorityMap["postProcessorChain"] || 140, enabled: true },
|
|
277
|
+
{ name: "publishPreflight", type: "post", priority: postPriorityMap["publishPreflight"] || 125, enabled: true },
|
|
278
|
+
{ name: "storytellingTrigger", type: "post", priority: postPriorityMap["storytellingTrigger"] || 5, enabled: true },
|
|
279
|
+
{ name: "sessionSummary", type: "post", priority: postPriorityMap["sessionSummary"] || 10, enabled: true },
|
|
280
|
+
{ name: "commitBatcher", type: "post", priority: postPriorityMap["commitBatcher"] || 85, enabled: true },
|
|
281
|
+
];
|
|
282
|
+
for (const def of PROCESSOR_DEFS) {
|
|
283
|
+
this.processorManager.registerProcessor({
|
|
284
|
+
name: def.name,
|
|
285
|
+
type: def.type,
|
|
286
|
+
priority: def.priority,
|
|
287
|
+
enabled: def.enabled,
|
|
288
|
+
});
|
|
289
|
+
frameworkLogger.log("boot-orchestrator", `registered ${def.name} processor`, "success", { jobId });
|
|
290
|
+
}
|
|
291
|
+
// Note: refactoringLogging is registered but requires agentName/task/startTime in context
|
|
292
|
+
// to actually log. When running via tool execution, these fields may not be present.
|
|
293
|
+
// The sessionSummary processor handles emoji output for tool execution flows.
|
|
294
|
+
frameworkLogger.log("boot-orchestrator", "processors configured", "info", { jobId, postProcessorCount: PROCESSOR_DEFS.filter(p => p.type === "post").length });
|
|
295
|
+
const initSuccess = await this.processorManager.initializeProcessors();
|
|
296
|
+
if (!initSuccess) {
|
|
297
|
+
frameworkLogger.log("boot-orchestrator", "processor initialization failed", "error", { jobId });
|
|
298
|
+
throw new Error("Processor initialization failed");
|
|
299
|
+
}
|
|
300
|
+
frameworkLogger.log("boot-orchestrator", "processors initialized successfully", "success", { jobId });
|
|
301
|
+
this.stateManager.set("processor:manager", this.processorManager);
|
|
302
|
+
this.stateManager.set("processor:active", true);
|
|
303
|
+
frameworkLogger.log("boot-orchestrator", "processors activated and stored in state", "success", { jobId });
|
|
304
|
+
return true;
|
|
305
|
+
}
|
|
306
|
+
catch (error) {
|
|
307
|
+
frameworkLogger.log("boot-orchestrator", "activateProcessors failed", "error", { jobId, error });
|
|
308
|
+
frameworkLogger.log("boot-orchestrator", "activate-processors-failed", "error", { error, message: "Failed to activate processors" });
|
|
309
|
+
return false;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Load remaining agents after orchestrator
|
|
314
|
+
*/
|
|
315
|
+
async loadRemainingAgents(jobId) {
|
|
316
|
+
const agents = [
|
|
317
|
+
"enforcer",
|
|
318
|
+
"architect",
|
|
319
|
+
"bug-triage-specialist",
|
|
320
|
+
"code-reviewer",
|
|
321
|
+
"security-auditor",
|
|
322
|
+
"refactorer",
|
|
323
|
+
"testing-lead",
|
|
324
|
+
];
|
|
325
|
+
const loadedAgents = [];
|
|
326
|
+
for (const agentName of agents) {
|
|
327
|
+
try {
|
|
328
|
+
await frameworkLogger.log("boot-orchestrator", "agent-loading", "info", { jobId, agentName });
|
|
329
|
+
const { getAgentEntry } = await import("../agents/registry.js");
|
|
330
|
+
const agentEntry = getAgentEntry(agentName);
|
|
331
|
+
if (agentEntry) {
|
|
332
|
+
this.stateManager.set(`agent:${agentName}`, agentEntry);
|
|
333
|
+
loadedAgents.push(agentName);
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
frameworkLogger.log("boot-orchestrator", "agent-not-found", "warning", { agentName });
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
catch (error) {
|
|
340
|
+
frameworkLogger.log("boot-orchestrator", "agent-load-failed", "warning", {
|
|
341
|
+
agentName,
|
|
342
|
+
error: error instanceof Error ? error.message : String(error),
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
this.stateManager.set("session:agents", loadedAgents);
|
|
347
|
+
return loadedAgents;
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Enable automatic enforcement activation
|
|
351
|
+
*/
|
|
352
|
+
async enableEnforcement() {
|
|
353
|
+
try {
|
|
354
|
+
// Load codex terms for enforcement
|
|
355
|
+
const loadResult = await this.contextLoader.loadCodexContext(process.cwd());
|
|
356
|
+
if (!loadResult.success || !loadResult.context) {
|
|
357
|
+
throw new Error("No codex terms loaded for enforcement");
|
|
358
|
+
}
|
|
359
|
+
const codexTerms = Array.from(loadResult.context.terms.values());
|
|
360
|
+
// Enable enforcement mechanisms
|
|
361
|
+
this.stateManager.set("enforcement:active", true);
|
|
362
|
+
this.stateManager.set("enforcement:codex_terms", codexTerms);
|
|
363
|
+
this.stateManager.set("enforcement:enabled_at", Date.now());
|
|
364
|
+
return true;
|
|
365
|
+
}
|
|
366
|
+
catch (error) {
|
|
367
|
+
frameworkLogger.log("boot-orchestrator", "enforcement-failed", "error", { error, message: "Failed to enable enforcement" });
|
|
368
|
+
return false;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Activate codex compliance checking during boot
|
|
373
|
+
*/
|
|
374
|
+
async activateCodexCompliance() {
|
|
375
|
+
try {
|
|
376
|
+
// Initialize codex injector if not already done
|
|
377
|
+
let codexInjector = this.stateManager.get("processor:codex_injector");
|
|
378
|
+
if (!codexInjector) {
|
|
379
|
+
// Import and initialize codex injector
|
|
380
|
+
// Try import with .js extension first (for Node.js/test environment)
|
|
381
|
+
let CodexInjector;
|
|
382
|
+
try {
|
|
383
|
+
({ CodexInjector } = await import("./codex-injector"));
|
|
384
|
+
}
|
|
385
|
+
catch (importError) {
|
|
386
|
+
frameworkLogger.log("boot-orchestrator", "codex-injector-load-failed", "error", { error: importError, message: "Failed to load codex injector" });
|
|
387
|
+
return false;
|
|
388
|
+
}
|
|
389
|
+
codexInjector = new CodexInjector();
|
|
390
|
+
this.stateManager.set("processor:codex_injector", codexInjector);
|
|
391
|
+
}
|
|
392
|
+
// Enable compliance validation
|
|
393
|
+
this.stateManager.set("compliance:active", true);
|
|
394
|
+
this.stateManager.set("compliance:validator", codexInjector);
|
|
395
|
+
this.stateManager.set("compliance:activated_at", Date.now());
|
|
396
|
+
return true;
|
|
397
|
+
}
|
|
398
|
+
catch (error) {
|
|
399
|
+
frameworkLogger.log("boot-orchestrator", "codex-compliance-failed", "error", { error, message: "Failed to activate codex compliance" });
|
|
400
|
+
return false;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
async initializeSecurityComponents() {
|
|
404
|
+
try {
|
|
405
|
+
this.stateManager.set("security:hardener", securityHardener);
|
|
406
|
+
this.stateManager.set("security:headers_middleware", securityHeadersMiddleware);
|
|
407
|
+
this.stateManager.set("security:initialized", true);
|
|
408
|
+
}
|
|
409
|
+
catch (error) {
|
|
410
|
+
frameworkLogger.log("boot-orchestrator", "security-init-failed", "error", { error, message: "Failed to initialize security components" });
|
|
411
|
+
throw error;
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
async finalizeSecurityIntegration() {
|
|
415
|
+
try {
|
|
416
|
+
const auditResult = await this.runInitialSecurityAudit();
|
|
417
|
+
this.stateManager.set("security:initial_audit", auditResult);
|
|
418
|
+
const hardener = this.stateManager.get("security:hardener");
|
|
419
|
+
if (hardener?.config?.enableSecureHeaders) {
|
|
420
|
+
this.stateManager.set("security:headers_active", true);
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
catch (error) {
|
|
424
|
+
frameworkLogger.log("boot-orchestrator", "security-finalize-failed", "error", { error, message: "Failed to finalize security integration" });
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
async runInitialSecurityAudit() {
|
|
428
|
+
try {
|
|
429
|
+
const securityAuditorPath = pathResolver.resolveModulePath("security/security-auditor");
|
|
430
|
+
const { SecurityAuditor } = await import(securityAuditorPath);
|
|
431
|
+
const auditor = new SecurityAuditor();
|
|
432
|
+
const result = await auditor.auditProject(process.cwd());
|
|
433
|
+
if (result.score < 80) {
|
|
434
|
+
frameworkLogger.log("boot-orchestrator", "low-security-score", "warning", {
|
|
435
|
+
score: result.score,
|
|
436
|
+
message: `Initial security score: ${result.score}/100 (target: 80+)`,
|
|
437
|
+
});
|
|
438
|
+
}
|
|
439
|
+
return result;
|
|
440
|
+
}
|
|
441
|
+
catch (error) {
|
|
442
|
+
frameworkLogger.log("boot-orchestrator", "security-audit-failed", "error", { error, message: "Failed to run initial security audit" });
|
|
443
|
+
return { score: 0, issues: [] };
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* Validate processor health during boot
|
|
448
|
+
*/
|
|
449
|
+
async validateProcessorHealth() {
|
|
450
|
+
try {
|
|
451
|
+
const healthStatus = this.processorManager.getProcessorHealth();
|
|
452
|
+
const failedProcessors = healthStatus.filter((h) => h.status === "failed");
|
|
453
|
+
if (failedProcessors.length > 0) {
|
|
454
|
+
frameworkLogger.log("boot-orchestrator", "processor-health-failed", "error", {
|
|
455
|
+
failedProcessors: failedProcessors.map((p) => p.name),
|
|
456
|
+
message: `${failedProcessors.length} processors failed health check`,
|
|
457
|
+
});
|
|
458
|
+
return false;
|
|
459
|
+
}
|
|
460
|
+
const degradedProcessors = healthStatus.filter((h) => h.status === "degraded");
|
|
461
|
+
if (degradedProcessors.length > 0) {
|
|
462
|
+
frameworkLogger.log("boot-orchestrator", "processors-degraded", "warning", {
|
|
463
|
+
degradedProcessors: degradedProcessors.map((p) => p.name),
|
|
464
|
+
message: `${degradedProcessors.length} processors are degraded`,
|
|
465
|
+
});
|
|
466
|
+
}
|
|
467
|
+
return true;
|
|
468
|
+
}
|
|
469
|
+
catch (error) {
|
|
470
|
+
frameworkLogger.log("boot-orchestrator", "processor-health-validation-failed", "error", { error, message: "Processor health validation failed" });
|
|
471
|
+
return false;
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
/**
|
|
475
|
+
* Get current boot status information
|
|
476
|
+
*/
|
|
477
|
+
getBootStatus() {
|
|
478
|
+
const agentsLoaded = this.stateManager.get("session:agents") || [];
|
|
479
|
+
const errors = [];
|
|
480
|
+
// Check for any stored errors
|
|
481
|
+
const storedErrors = this.stateManager.get("boot:errors");
|
|
482
|
+
if (Array.isArray(storedErrors)) {
|
|
483
|
+
errors.push(...storedErrors);
|
|
484
|
+
}
|
|
485
|
+
return {
|
|
486
|
+
success: this.stateManager.get("boot:success") || false,
|
|
487
|
+
orchestratorLoaded: !!this.stateManager.get("orchestrator"),
|
|
488
|
+
sessionManagementActive: this.stateManager.get("session:active") || false,
|
|
489
|
+
processorsActivated: this.stateManager.get("processor:active") || false,
|
|
490
|
+
enforcementEnabled: this.stateManager.get("enforcement:active") || false,
|
|
491
|
+
codexComplianceActive: this.stateManager.get("compliance:active") || false,
|
|
492
|
+
agentsLoaded: Array.isArray(agentsLoaded) ? agentsLoaded : [],
|
|
493
|
+
errors,
|
|
494
|
+
};
|
|
495
|
+
}
|
|
496
|
+
/**
|
|
497
|
+
* Set up comprehensive memory monitoring and alerting
|
|
498
|
+
*/
|
|
499
|
+
setupMemoryMonitoring() {
|
|
500
|
+
// Start memory monitor
|
|
501
|
+
memoryMonitor.start();
|
|
502
|
+
advancedProfiler.start();
|
|
503
|
+
// CRITICAL FIX: Only add alert listener once to prevent memory leak
|
|
504
|
+
// Each BootOrchestrator instantiation was adding duplicate listeners
|
|
505
|
+
let currentListenerCount = 0;
|
|
506
|
+
try {
|
|
507
|
+
if (typeof memoryMonitor.listenerCount === "function") {
|
|
508
|
+
currentListenerCount = memoryMonitor.listenerCount("alert");
|
|
509
|
+
}
|
|
510
|
+
else if (memoryMonitor.listeners &&
|
|
511
|
+
typeof memoryMonitor.listeners === "function") {
|
|
512
|
+
currentListenerCount = memoryMonitor.listeners("alert").length;
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
catch (e) {
|
|
516
|
+
// Fallback: assume no listeners if we can't determine count
|
|
517
|
+
currentListenerCount = 0;
|
|
518
|
+
}
|
|
519
|
+
if (currentListenerCount === 0) {
|
|
520
|
+
// First time setup - add the memory alert handler
|
|
521
|
+
memoryMonitor.on("alert", (alert) => {
|
|
522
|
+
const level = alert.severity === "critical"
|
|
523
|
+
? "error"
|
|
524
|
+
: alert.severity === "high"
|
|
525
|
+
? "warn"
|
|
526
|
+
: "info";
|
|
527
|
+
frameworkLogger.log("boot-orchestrator", `🚨 MEMORY ALERT: ${alert.message}`, "error");
|
|
528
|
+
// Store alert in state for dashboard access
|
|
529
|
+
const alerts = this.stateManager.get("memory:alerts") || [];
|
|
530
|
+
alerts.push({
|
|
531
|
+
...alert,
|
|
532
|
+
timestamp: Date.now(),
|
|
533
|
+
});
|
|
534
|
+
// Keep only last 100 alerts
|
|
535
|
+
if (alerts.length > 100) {
|
|
536
|
+
alerts.shift();
|
|
537
|
+
}
|
|
538
|
+
this.stateManager.set("memory:alerts", alerts);
|
|
539
|
+
// Log recommendations
|
|
540
|
+
alert.details.recommendations.forEach((rec) => {
|
|
541
|
+
frameworkLogger.log("boot-orchestrator", `💡 ${rec}`, "info");
|
|
542
|
+
});
|
|
543
|
+
});
|
|
544
|
+
}
|
|
545
|
+
// Log initial memory status
|
|
546
|
+
const initialStats = memoryMonitor.getCurrentStats();
|
|
547
|
+
frameworkLogger.log("boot-orchestrator", `🧠 Initial memory: ${initialStats.heapUsed.toFixed(1)}MB heap, ${initialStats.heapTotal.toFixed(1)}MB total`, "info");
|
|
548
|
+
// Store initial memory baseline
|
|
549
|
+
this.stateManager.set("memory:baseline", initialStats);
|
|
550
|
+
}
|
|
551
|
+
/**
|
|
552
|
+
* Perform comprehensive memory health check
|
|
553
|
+
*/
|
|
554
|
+
getMemoryHealth() {
|
|
555
|
+
const summary = memoryMonitor.getSummary();
|
|
556
|
+
const issues = [];
|
|
557
|
+
// Check for memory issues
|
|
558
|
+
if (summary.current.heapUsed > 400) {
|
|
559
|
+
issues.push(`Critical heap usage: ${summary.current.heapUsed.toFixed(1)}MB`);
|
|
560
|
+
}
|
|
561
|
+
else if (summary.current.heapUsed > 200) {
|
|
562
|
+
issues.push(`High heap usage: ${summary.current.heapUsed.toFixed(1)}MB`);
|
|
563
|
+
}
|
|
564
|
+
if (summary.trend === "increasing") {
|
|
565
|
+
issues.push("Memory usage trending upward - potential leak detected");
|
|
566
|
+
}
|
|
567
|
+
if (summary.peak.heapUsed > 500) {
|
|
568
|
+
issues.push(`Peak usage exceeded safe limits: ${summary.peak.heapUsed.toFixed(1)}MB`);
|
|
569
|
+
}
|
|
570
|
+
return {
|
|
571
|
+
healthy: issues.length === 0,
|
|
572
|
+
issues,
|
|
573
|
+
metrics: summary,
|
|
574
|
+
};
|
|
575
|
+
}
|
|
576
|
+
/**
|
|
577
|
+
* Execute the boot sequence (internal framework initialization)
|
|
578
|
+
*/
|
|
579
|
+
async executeBootSequence() {
|
|
580
|
+
const jobId = `boot-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`;
|
|
581
|
+
if (!this.shutdownInitialized) {
|
|
582
|
+
setupGracefulShutdown();
|
|
583
|
+
this.shutdownInitialized = true;
|
|
584
|
+
}
|
|
585
|
+
this.setupMemoryMonitoring();
|
|
586
|
+
frameworkLogger.log("boot-orchestrator", "executeBootSequence started", "info", { jobId });
|
|
587
|
+
const result = {
|
|
588
|
+
success: false,
|
|
589
|
+
orchestratorLoaded: false,
|
|
590
|
+
sessionManagementActive: false,
|
|
591
|
+
processorsActivated: false,
|
|
592
|
+
agentsLoaded: [],
|
|
593
|
+
enforcementEnabled: false,
|
|
594
|
+
codexComplianceActive: false,
|
|
595
|
+
errors: [],
|
|
596
|
+
};
|
|
597
|
+
try {
|
|
598
|
+
frameworkLogger.log("boot-orchestrator", "loading xray configuration", "info", { jobId });
|
|
599
|
+
// Consumer runtime compat shim from prior StringRay releases (1-line min per Scope Rule; primary xray paths + XRAY_||STRRAY_ env + .strray fallbacks)
|
|
600
|
+
await this.loadStringRayConfiguration(jobId);
|
|
601
|
+
frameworkLogger.log("boot-orchestrator", "xray configuration loaded", "success", { jobId });
|
|
602
|
+
// Phase 1: Initialize core systems
|
|
603
|
+
frameworkLogger.log("boot-orchestrator", "initializing core systems", "info", { jobId });
|
|
604
|
+
result.orchestratorLoaded = await this.loadOrchestrator();
|
|
605
|
+
if (!result.orchestratorLoaded) {
|
|
606
|
+
frameworkLogger.log("boot-orchestrator", "orchestrator loading failed", "error", { jobId });
|
|
607
|
+
result.errors.push("Failed to load orchestrator");
|
|
608
|
+
return result;
|
|
609
|
+
}
|
|
610
|
+
frameworkLogger.log("boot-orchestrator", "orchestrator loaded successfully", "success", { jobId });
|
|
611
|
+
const delegationInitialized = await this.initializeDelegationSystem();
|
|
612
|
+
if (!delegationInitialized) {
|
|
613
|
+
frameworkLogger.log("boot-orchestrator", "delegation system initialization failed", "error", { jobId });
|
|
614
|
+
result.errors.push("Failed to initialize delegation system");
|
|
615
|
+
return result;
|
|
616
|
+
}
|
|
617
|
+
frameworkLogger.log("boot-orchestrator", "delegation system initialized", "success", { jobId });
|
|
618
|
+
// Phase 2: Session management
|
|
619
|
+
if (this.config.sessionManagement) {
|
|
620
|
+
result.sessionManagementActive =
|
|
621
|
+
await this.initializeSessionManagement();
|
|
622
|
+
if (!result.sessionManagementActive) {
|
|
623
|
+
frameworkLogger.log("boot-orchestrator", "session management initialization failed", "error", { jobId });
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
// Phase 2.5: Initialize activity logging from features.json config
|
|
627
|
+
try {
|
|
628
|
+
const { initializeActivityLogger } = await import("./activity-logger.js");
|
|
629
|
+
const activityConfig = featuresConfigLoader.loadConfig().activity_logging;
|
|
630
|
+
if (activityConfig?.enabled !== false) {
|
|
631
|
+
initializeActivityLogger({
|
|
632
|
+
enabled: activityConfig?.enabled ?? true,
|
|
633
|
+
log_path: activityConfig?.log_path,
|
|
634
|
+
});
|
|
635
|
+
frameworkLogger.log("boot-orchestrator", "activity logging initialized from config", "info", { jobId, enabled: activityConfig?.enabled ?? true });
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
catch (error) {
|
|
639
|
+
// Activity logger init failure is non-fatal
|
|
640
|
+
frameworkLogger.log("boot-orchestrator", "activity logging init skipped", "info", { jobId });
|
|
641
|
+
}
|
|
642
|
+
// Phase 3: Processors
|
|
643
|
+
if (this.config.processorActivation) {
|
|
644
|
+
frameworkLogger.log("boot-orchestrator", "activating processors", "info", { jobId });
|
|
645
|
+
result.processorsActivated = await this.activateProcessors(jobId);
|
|
646
|
+
if (!result.processorsActivated) {
|
|
647
|
+
frameworkLogger.log("boot-orchestrator", "processor activation failed", "error", { jobId });
|
|
648
|
+
result.errors.push("Failed to activate processors");
|
|
649
|
+
return result;
|
|
650
|
+
}
|
|
651
|
+
else {
|
|
652
|
+
frameworkLogger.log("boot-orchestrator", "processors activated successfully", "success", { jobId });
|
|
653
|
+
}
|
|
654
|
+
frameworkLogger.log("boot-orchestrator", "processors activated successfully", "success", { jobId });
|
|
655
|
+
// Validate processor health
|
|
656
|
+
const healthValid = await this.validateProcessorHealth();
|
|
657
|
+
if (!healthValid) {
|
|
658
|
+
frameworkLogger.log("boot-orchestrator", "processor health validation failed", "error", { jobId });
|
|
659
|
+
result.errors.push("Processor health validation failed");
|
|
660
|
+
return result;
|
|
661
|
+
}
|
|
662
|
+
frameworkLogger.log("boot-orchestrator", "processor health validated", "success", { jobId });
|
|
663
|
+
}
|
|
664
|
+
// Phase 4: Load agents
|
|
665
|
+
if (this.config.agentLoading) {
|
|
666
|
+
result.agentsLoaded = await this.loadRemainingAgents(jobId);
|
|
667
|
+
}
|
|
668
|
+
// Phase 4.5: Initialize plugin system
|
|
669
|
+
if (await this.initializePluginSystem(jobId)) {
|
|
670
|
+
frameworkLogger.log("boot-orchestrator", "plugin system initialized", "success", { jobId });
|
|
671
|
+
}
|
|
672
|
+
else {
|
|
673
|
+
frameworkLogger.log("boot-orchestrator", "plugin system init failed", "warning", { jobId });
|
|
674
|
+
}
|
|
675
|
+
// Phase 5: Security & compliance
|
|
676
|
+
if (this.config.enableEnforcement) {
|
|
677
|
+
frameworkLogger.log("boot-orchestrator", "enabling enforcement", "info", { jobId });
|
|
678
|
+
result.enforcementEnabled = await this.enableEnforcement();
|
|
679
|
+
if (!result.enforcementEnabled) {
|
|
680
|
+
frameworkLogger.log("boot-orchestrator", "enforcement enable failed", "error", { jobId });
|
|
681
|
+
result.errors.push("Failed to enable enforcement");
|
|
682
|
+
return result;
|
|
683
|
+
}
|
|
684
|
+
else {
|
|
685
|
+
frameworkLogger.log("boot-orchestrator", "enforcement enabled successfully", "success", { jobId });
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
if (this.config.codexValidation) {
|
|
689
|
+
frameworkLogger.log("boot-orchestrator", "activating codex compliance", "info", { jobId });
|
|
690
|
+
result.codexComplianceActive = await this.activateCodexCompliance();
|
|
691
|
+
if (!result.codexComplianceActive) {
|
|
692
|
+
frameworkLogger.log("boot-orchestrator", "codex compliance activation failed", "error", { jobId });
|
|
693
|
+
result.errors.push("Failed to activate codex compliance");
|
|
694
|
+
return result;
|
|
695
|
+
}
|
|
696
|
+
else {
|
|
697
|
+
frameworkLogger.log("boot-orchestrator", "codex compliance activated successfully", "success", { jobId });
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
// Finalize security integration
|
|
701
|
+
await this.finalizeSecurityIntegration();
|
|
702
|
+
// Initialize governance (Dynamo Solar SSOT + GovernanceService)
|
|
703
|
+
// This must happen early so GovernanceService has the managed integration ready.
|
|
704
|
+
const govConfig = featuresConfigLoader.config?.governance ??
|
|
705
|
+
featuresConfigLoader.config?.inference_governance;
|
|
706
|
+
if (govConfig?.enabled !== false) {
|
|
707
|
+
try {
|
|
708
|
+
await initializeGovernanceIntegration();
|
|
709
|
+
frameworkLogger.log("boot-orchestrator", "governance-initialized", "info", {
|
|
710
|
+
message: "Dynamo Solar SSOT integration initialized during boot",
|
|
711
|
+
});
|
|
712
|
+
}
|
|
713
|
+
catch (err) {
|
|
714
|
+
frameworkLogger.log("boot-orchestrator", "governance-init-warning", "warning", {
|
|
715
|
+
message: "Failed to initialize governance integration during boot",
|
|
716
|
+
error: err instanceof Error ? err.message : String(err),
|
|
717
|
+
});
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
result.success = true;
|
|
721
|
+
}
|
|
722
|
+
catch (error) {
|
|
723
|
+
result.errors.push(`Boot sequence error: ${error}`);
|
|
724
|
+
}
|
|
725
|
+
// Store boot result in state manager for getBootStatus
|
|
726
|
+
this.stateManager.set("boot:success", result.success);
|
|
727
|
+
this.stateManager.set("boot:errors", result.errors);
|
|
728
|
+
return result;
|
|
729
|
+
}
|
|
730
|
+
// Consumer runtime compat shim from prior StringRay releases (1-line min per Scope Rule; primary xray paths + XRAY_||STRRAY_ env + .strray fallbacks)
|
|
731
|
+
async loadStringRayConfiguration(jobId) {
|
|
732
|
+
try {
|
|
733
|
+
// Consumer runtime compat shim from prior StringRay releases (1-line min per Scope Rule; primary xray paths + XRAY_||STRRAY_ env + .strray fallbacks)
|
|
734
|
+
const stringRayConfig = {
|
|
735
|
+
version: "1.22.67",
|
|
736
|
+
codex_enabled: true,
|
|
737
|
+
codex_version: "v1.7.5",
|
|
738
|
+
codex_terms: [
|
|
739
|
+
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
|
|
740
|
+
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
|
|
741
|
+
38, 39, 40, 41, 42, 43,
|
|
742
|
+
],
|
|
743
|
+
monitoring_metrics: [
|
|
744
|
+
"bundle-size",
|
|
745
|
+
"test-coverage",
|
|
746
|
+
"code-duplication",
|
|
747
|
+
"build-time",
|
|
748
|
+
"error-rate",
|
|
749
|
+
],
|
|
750
|
+
monitoring_alerts: [
|
|
751
|
+
"threshold-violations",
|
|
752
|
+
"security-issues",
|
|
753
|
+
"performance-degradation",
|
|
754
|
+
"test-failures",
|
|
755
|
+
],
|
|
756
|
+
agent_capabilities: {
|
|
757
|
+
enforcer: [
|
|
758
|
+
"compliance-monitoring",
|
|
759
|
+
"threshold-enforcement",
|
|
760
|
+
"automation-orchestration",
|
|
761
|
+
],
|
|
762
|
+
architect: [
|
|
763
|
+
"design-review",
|
|
764
|
+
"architecture-validation",
|
|
765
|
+
"dependency-analysis",
|
|
766
|
+
],
|
|
767
|
+
orchestrator: [
|
|
768
|
+
"task-coordination",
|
|
769
|
+
"multi-agent-orchestration",
|
|
770
|
+
"workflow-management",
|
|
771
|
+
],
|
|
772
|
+
"bug-triage-specialist": [
|
|
773
|
+
"error-analysis",
|
|
774
|
+
"root-cause-identification",
|
|
775
|
+
"fix-suggestions",
|
|
776
|
+
],
|
|
777
|
+
"code-reviewer": [
|
|
778
|
+
"code-quality-assessment",
|
|
779
|
+
"best-practice-validation",
|
|
780
|
+
"security-review",
|
|
781
|
+
],
|
|
782
|
+
"security-auditor": [
|
|
783
|
+
"vulnerability-detection",
|
|
784
|
+
"threat-analysis",
|
|
785
|
+
"security-validation",
|
|
786
|
+
],
|
|
787
|
+
refactorer: ["code-modernization", "debt-reduction", "consolidation"],
|
|
788
|
+
"testing-lead": [
|
|
789
|
+
"test-strategy-design",
|
|
790
|
+
"coverage-optimization",
|
|
791
|
+
"behavioral-testing",
|
|
792
|
+
],
|
|
793
|
+
},
|
|
794
|
+
};
|
|
795
|
+
// Store configuration in state manager for use by other components
|
|
796
|
+
this.stateManager.set("strray:config", stringRayConfig);
|
|
797
|
+
this.stateManager.set("strray:version", stringRayConfig.version);
|
|
798
|
+
this.stateManager.set("strray:codex_enabled", stringRayConfig.codex_enabled);
|
|
799
|
+
this.stateManager.set("strray:codex_terms", stringRayConfig.codex_terms);
|
|
800
|
+
this.stateManager.set("strray:monitoring_metrics", stringRayConfig.monitoring_metrics);
|
|
801
|
+
this.stateManager.set("strray:monitoring_alerts", stringRayConfig.monitoring_alerts);
|
|
802
|
+
this.stateManager.set("strray:agent_capabilities", stringRayConfig.agent_capabilities);
|
|
803
|
+
await frameworkLogger.log("boot-orchestrator", "configuration-loaded", "success", { jobId });
|
|
804
|
+
}
|
|
805
|
+
catch (error) {
|
|
806
|
+
frameworkLogger.log("boot-orchestrator", "config-load-warning", "warning", { error, message: "Failed to load xray configuration" });
|
|
807
|
+
// Continue with defaults if loading fails
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
}
|
|
811
|
+
// Export singleton instance
|
|
812
|
+
export const bootOrchestrator = new BootOrchestrator();
|