stringray-ai 1.0.37 → 1.0.39

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.
Files changed (115) hide show
  1. package/dist/plugin/architectural-integrity.d.ts +21 -0
  2. package/dist/plugin/architectural-integrity.d.ts.map +1 -0
  3. package/dist/plugin/architectural-integrity.js +81 -0
  4. package/dist/plugin/architectural-integrity.js.map +1 -0
  5. package/dist/plugin/boot-orchestrator.d.ts +100 -0
  6. package/dist/plugin/boot-orchestrator.d.ts.map +1 -0
  7. package/dist/plugin/boot-orchestrator.js +606 -0
  8. package/dist/plugin/boot-orchestrator.js.map +1 -0
  9. package/dist/plugin/codex-injector.d.ts +72 -0
  10. package/dist/plugin/codex-injector.d.ts.map +1 -0
  11. package/dist/plugin/codex-injector.js +387 -0
  12. package/dist/plugin/codex-injector.js.map +1 -0
  13. package/dist/plugin/delegation/index.d.ts +16 -0
  14. package/dist/plugin/delegation/index.d.ts.map +1 -0
  15. package/dist/plugin/delegation/index.js +13 -0
  16. package/dist/plugin/delegation/index.js.map +1 -0
  17. package/dist/plugin/delegation/session-coordinator.d.ts +121 -0
  18. package/dist/plugin/delegation/session-coordinator.d.ts.map +1 -0
  19. package/dist/plugin/delegation/session-coordinator.js +346 -0
  20. package/dist/plugin/delegation/session-coordinator.js.map +1 -0
  21. package/dist/plugin/index.d.ts +3 -0
  22. package/dist/plugin/index.d.ts.map +1 -0
  23. package/dist/plugin/index.js +3 -0
  24. package/dist/plugin/index.js.map +1 -0
  25. package/dist/plugin/monitoring/memory-monitor.d.ts +113 -0
  26. package/dist/plugin/monitoring/memory-monitor.d.ts.map +1 -0
  27. package/dist/plugin/monitoring/memory-monitor.js +283 -0
  28. package/dist/plugin/monitoring/memory-monitor.js.map +1 -0
  29. package/dist/plugin/postprocessor/PostProcessor.d.ts +90 -0
  30. package/dist/plugin/postprocessor/PostProcessor.d.ts.map +1 -0
  31. package/dist/plugin/postprocessor/PostProcessor.js +631 -0
  32. package/dist/plugin/postprocessor/PostProcessor.js.map +1 -0
  33. package/dist/plugin/postprocessor/analysis/FailureAnalysisEngine.d.ts +40 -0
  34. package/dist/plugin/postprocessor/analysis/FailureAnalysisEngine.d.ts.map +1 -0
  35. package/dist/plugin/postprocessor/analysis/FailureAnalysisEngine.js +244 -0
  36. package/dist/plugin/postprocessor/analysis/FailureAnalysisEngine.js.map +1 -0
  37. package/dist/plugin/postprocessor/autofix/AutoFixEngine.d.ts +50 -0
  38. package/dist/plugin/postprocessor/autofix/AutoFixEngine.d.ts.map +1 -0
  39. package/dist/plugin/postprocessor/autofix/AutoFixEngine.js +246 -0
  40. package/dist/plugin/postprocessor/autofix/AutoFixEngine.js.map +1 -0
  41. package/dist/plugin/postprocessor/autofix/FixValidator.d.ts +27 -0
  42. package/dist/plugin/postprocessor/autofix/FixValidator.d.ts.map +1 -0
  43. package/dist/plugin/postprocessor/autofix/FixValidator.js +158 -0
  44. package/dist/plugin/postprocessor/autofix/FixValidator.js.map +1 -0
  45. package/dist/plugin/postprocessor/config.d.ts +7 -0
  46. package/dist/plugin/postprocessor/config.d.ts.map +1 -0
  47. package/dist/plugin/postprocessor/config.js +66 -0
  48. package/dist/plugin/postprocessor/config.js.map +1 -0
  49. package/dist/plugin/postprocessor/escalation/EscalationEngine.d.ts +73 -0
  50. package/dist/plugin/postprocessor/escalation/EscalationEngine.d.ts.map +1 -0
  51. package/dist/plugin/postprocessor/escalation/EscalationEngine.js +249 -0
  52. package/dist/plugin/postprocessor/escalation/EscalationEngine.js.map +1 -0
  53. package/dist/plugin/postprocessor/monitoring/MonitoringEngine.d.ts +19 -0
  54. package/dist/plugin/postprocessor/monitoring/MonitoringEngine.d.ts.map +1 -0
  55. package/dist/plugin/postprocessor/monitoring/MonitoringEngine.js +120 -0
  56. package/dist/plugin/postprocessor/monitoring/MonitoringEngine.js.map +1 -0
  57. package/dist/plugin/postprocessor/redeploy/RedeployCoordinator.d.ts +92 -0
  58. package/dist/plugin/postprocessor/redeploy/RedeployCoordinator.d.ts.map +1 -0
  59. package/dist/plugin/postprocessor/redeploy/RedeployCoordinator.js +319 -0
  60. package/dist/plugin/postprocessor/redeploy/RedeployCoordinator.js.map +1 -0
  61. package/dist/plugin/postprocessor/success/SuccessHandler.d.ts +61 -0
  62. package/dist/plugin/postprocessor/success/SuccessHandler.d.ts.map +1 -0
  63. package/dist/plugin/postprocessor/success/SuccessHandler.js +148 -0
  64. package/dist/plugin/postprocessor/success/SuccessHandler.js.map +1 -0
  65. package/dist/plugin/postprocessor/triggers/APITrigger.d.ts +13 -0
  66. package/dist/plugin/postprocessor/triggers/APITrigger.d.ts.map +1 -0
  67. package/dist/plugin/postprocessor/triggers/APITrigger.js +20 -0
  68. package/dist/plugin/postprocessor/triggers/APITrigger.js.map +1 -0
  69. package/dist/plugin/postprocessor/triggers/GitHookTrigger.d.ts +17 -0
  70. package/dist/plugin/postprocessor/triggers/GitHookTrigger.d.ts.map +1 -0
  71. package/dist/plugin/postprocessor/triggers/GitHookTrigger.js +285 -0
  72. package/dist/plugin/postprocessor/triggers/GitHookTrigger.js.map +1 -0
  73. package/dist/plugin/postprocessor/triggers/WebhookTrigger.d.ts +13 -0
  74. package/dist/plugin/postprocessor/triggers/WebhookTrigger.d.ts.map +1 -0
  75. package/dist/plugin/postprocessor/triggers/WebhookTrigger.js +21 -0
  76. package/dist/plugin/postprocessor/triggers/WebhookTrigger.js.map +1 -0
  77. package/dist/plugin/postprocessor/types.d.ts +198 -0
  78. package/dist/plugin/postprocessor/types.d.ts.map +1 -0
  79. package/dist/plugin/postprocessor/types.js +5 -0
  80. package/dist/plugin/postprocessor/types.js.map +1 -0
  81. package/dist/plugin/security/security-auditor.d.ts +57 -0
  82. package/dist/plugin/security/security-auditor.d.ts.map +1 -0
  83. package/dist/plugin/security/security-auditor.js +583 -0
  84. package/dist/plugin/security/security-auditor.js.map +1 -0
  85. package/dist/plugin/security/security-hardener.d.ts +63 -0
  86. package/dist/plugin/security/security-hardener.d.ts.map +1 -0
  87. package/dist/plugin/security/security-hardener.js +181 -0
  88. package/dist/plugin/security/security-hardener.js.map +1 -0
  89. package/dist/plugin/security/security-headers.d.ts +52 -0
  90. package/dist/plugin/security/security-headers.d.ts.map +1 -0
  91. package/dist/plugin/security/security-headers.js +118 -0
  92. package/dist/plugin/security/security-headers.js.map +1 -0
  93. package/dist/plugin/session/session-cleanup-manager.d.ts +118 -0
  94. package/dist/plugin/session/session-cleanup-manager.d.ts.map +1 -0
  95. package/dist/plugin/session/session-cleanup-manager.js +324 -0
  96. package/dist/plugin/session/session-cleanup-manager.js.map +1 -0
  97. package/dist/plugin/session/session-monitor.d.ts +99 -0
  98. package/dist/plugin/session/session-monitor.d.ts.map +1 -0
  99. package/dist/plugin/session/session-monitor.js +363 -0
  100. package/dist/plugin/session/session-monitor.js.map +1 -0
  101. package/dist/plugin/session/session-state-manager.d.ts +142 -0
  102. package/dist/plugin/session/session-state-manager.d.ts.map +1 -0
  103. package/dist/plugin/session/session-state-manager.js +504 -0
  104. package/dist/plugin/session/session-state-manager.js.map +1 -0
  105. package/dist/plugin/strray-activation.d.ts +18 -0
  106. package/dist/plugin/strray-activation.d.ts.map +1 -0
  107. package/dist/plugin/strray-activation.js +114 -0
  108. package/dist/plugin/strray-activation.js.map +1 -0
  109. package/dist/plugin/validation/report-content-validator.d.ts +43 -0
  110. package/dist/plugin/validation/report-content-validator.d.ts.map +1 -0
  111. package/dist/plugin/validation/report-content-validator.js +219 -0
  112. package/dist/plugin/validation/report-content-validator.js.map +1 -0
  113. package/package.json +1 -1
  114. package/scripts/test-complex-orchestration.mjs +1 -1
  115. package/scripts/test-simple-prompt.mjs +1 -1
@@ -0,0 +1,606 @@
1
+ /**
2
+ * StringRay Framework v1.0.0 - Boot Orchestrator
3
+ *
4
+ * Implements orchestrator-first boot sequence with automatic enforcement activation.
5
+ * Coordinates the initialization of all framework components in the correct order.
6
+ *
7
+ * @version 1.0.0
8
+ * @since 2026-01-07
9
+ */
10
+ import { StringRayContextLoader } from "./context-loader.js";
11
+ import { StringRayStateManager } from "./state/state-manager.js";
12
+ import { ProcessorManager } from "./processors/processor-manager.js";
13
+ import { pathResolver } from "./utils/path-resolver.js";
14
+ // Path configuration - can be overridden by environment or use path resolver
15
+ const AGENTS_BASE_PATH = process.env.STRRAY_AGENTS_PATH || "../agents";
16
+ import { createAgentDelegator, createSessionCoordinator, } from "./delegation/index.js";
17
+ import { createSessionCleanupManager } from "./session/session-cleanup-manager.js";
18
+ import { createSessionMonitor } from "./session/session-monitor.js";
19
+ import { createSessionStateManager } from "./session/session-state-manager.js";
20
+ import { securityHardener } from "./security/security-hardener.js";
21
+ import { securityHeadersMiddleware } from "./security/security-headers.js";
22
+ import { frameworkLogger } from "./framework-logger.js";
23
+ import { memoryMonitor } from "./monitoring/memory-monitor.js";
24
+ /**
25
+ * Set up graceful interruption handling to prevent JSON parsing errors
26
+ * when processes are interrupted mid-operation
27
+ */
28
+ function setupGracefulShutdown() {
29
+ let isShuttingDown = false;
30
+ process.on("SIGINT", async () => {
31
+ if (isShuttingDown) {
32
+ console.log("🔄 Force exit requested...");
33
+ process.exit(1);
34
+ }
35
+ isShuttingDown = true;
36
+ console.log("⏹️ Received interrupt signal, shutting down gracefully...");
37
+ try {
38
+ // Stop memory monitoring
39
+ memoryMonitor.stop();
40
+ // Give ongoing operations a moment to complete
41
+ await new Promise((resolve) => setTimeout(resolve, 1000));
42
+ console.log("✅ Graceful shutdown completed");
43
+ process.exit(0);
44
+ }
45
+ catch (error) {
46
+ console.error("❌ Error during graceful shutdown:", error);
47
+ process.exit(1);
48
+ }
49
+ });
50
+ process.on("SIGTERM", async () => {
51
+ console.log("⏹️ Received termination signal, shutting down gracefully...");
52
+ try {
53
+ memoryMonitor.stop();
54
+ await new Promise((resolve) => setTimeout(resolve, 500));
55
+ process.exit(0);
56
+ }
57
+ catch (error) {
58
+ process.exit(1);
59
+ }
60
+ });
61
+ // Handle uncaught exceptions that might cause JSON parsing errors
62
+ process.on("uncaughtException", (error) => {
63
+ console.error("❌ Uncaught Exception:", error);
64
+ memoryMonitor.stop();
65
+ process.exit(1);
66
+ });
67
+ process.on("unhandledRejection", (reason, promise) => {
68
+ console.error("❌ Unhandled Rejection at:", promise, "reason:", reason);
69
+ memoryMonitor.stop();
70
+ process.exit(1);
71
+ });
72
+ }
73
+ export class BootOrchestrator {
74
+ contextLoader;
75
+ stateManager;
76
+ processorManager;
77
+ config;
78
+ constructor(config = {}, stateManager) {
79
+ // Set up graceful shutdown handling first
80
+ setupGracefulShutdown();
81
+ // Initialize components first for state management
82
+ this.contextLoader = StringRayContextLoader.getInstance();
83
+ this.stateManager = stateManager || new StringRayStateManager();
84
+ this.processorManager = new ProcessorManager(this.stateManager);
85
+ // Initialize memory monitoring with alerts
86
+ this.setupMemoryMonitoring();
87
+ this.config = {
88
+ enableEnforcement: true,
89
+ codexValidation: true,
90
+ sessionManagement: true,
91
+ processorActivation: true,
92
+ agentLoading: true,
93
+ ...config,
94
+ };
95
+ }
96
+ /**
97
+ * Initialize delegation system components
98
+ */
99
+ async initializeDelegationSystem() {
100
+ try {
101
+ const agentDelegator = createAgentDelegator(this.stateManager);
102
+ this.stateManager.set("delegation:agent_delegator", agentDelegator);
103
+ const sessionCoordinator = createSessionCoordinator(this.stateManager);
104
+ this.stateManager.set("delegation:session_coordinator", sessionCoordinator);
105
+ const defaultSession = sessionCoordinator.initializeSession("default");
106
+ this.stateManager.set("delegation:default_session", defaultSession);
107
+ return true;
108
+ }
109
+ catch (error) {
110
+ console.error("❌ Failed to initialize delegation system:", error);
111
+ return false;
112
+ }
113
+ }
114
+ /**
115
+ * Load orchestrator as the first component
116
+ */
117
+ async loadOrchestrator() {
118
+ try {
119
+ // Import orchestrator dynamically to ensure it's loaded first
120
+ const orchestratorModule = await import("./orchestrator.js");
121
+ const orchestratorInstance = orchestratorModule.strRayOrchestrator;
122
+ if (!orchestratorInstance) {
123
+ console.error("❌ Orchestrator instance not found in module");
124
+ return false;
125
+ }
126
+ // Store in state manager for later access
127
+ this.stateManager.set("orchestrator", orchestratorInstance);
128
+ return true;
129
+ }
130
+ catch (error) {
131
+ console.error("❌ Failed to load orchestrator:", error);
132
+ return false;
133
+ }
134
+ }
135
+ /**
136
+ * Initialize session management system
137
+ */
138
+ async initializeSessionManagement() {
139
+ try {
140
+ // Initialize session state
141
+ this.stateManager.set("session:active", true);
142
+ this.stateManager.set("session:boot_time", Date.now());
143
+ this.stateManager.set("session:agents", []);
144
+ const sessionCoordinator = this.stateManager.get("delegation:session_coordinator");
145
+ if (sessionCoordinator) {
146
+ // Initialize session monitor first
147
+ const sessionMonitor = createSessionMonitor(this.stateManager, sessionCoordinator, undefined);
148
+ this.stateManager.set("session:monitor", sessionMonitor);
149
+ // Initialize session cleanup manager with session monitor reference
150
+ const cleanupManager = createSessionCleanupManager(this.stateManager, {}, sessionMonitor);
151
+ this.stateManager.set("session:cleanup_manager", cleanupManager);
152
+ // Update session monitor with cleanup manager reference
153
+ sessionMonitor.cleanupManager = cleanupManager;
154
+ const stateManagerInstance = createSessionStateManager(this.stateManager, sessionCoordinator);
155
+ this.stateManager.set("session:state_manager", stateManagerInstance);
156
+ const defaultSession = this.stateManager.get("delegation:default_session");
157
+ if (defaultSession?.sessionId) {
158
+ cleanupManager.registerSession(defaultSession.sessionId);
159
+ sessionMonitor.registerSession(defaultSession.sessionId);
160
+ }
161
+ }
162
+ return true;
163
+ }
164
+ catch (error) {
165
+ console.error("❌ Failed to initialize session management:", error);
166
+ return false;
167
+ }
168
+ }
169
+ /**
170
+ * Activate pre/post processors
171
+ */
172
+ async activateProcessors() {
173
+ try {
174
+ frameworkLogger.log("boot-orchestrator", "activateProcessors started", "info");
175
+ this.processorManager.registerProcessor({
176
+ name: "preValidate",
177
+ type: "pre",
178
+ priority: 10,
179
+ enabled: true,
180
+ });
181
+ frameworkLogger.log("boot-orchestrator", "registered preValidate processor", "success");
182
+ this.processorManager.registerProcessor({
183
+ name: "codexCompliance",
184
+ type: "pre",
185
+ priority: 20,
186
+ enabled: true,
187
+ });
188
+ frameworkLogger.log("boot-orchestrator", "registered codexCompliance processor", "success");
189
+ this.processorManager.registerProcessor({
190
+ name: "errorBoundary",
191
+ type: "pre",
192
+ priority: 30,
193
+ enabled: true,
194
+ });
195
+ frameworkLogger.log("boot-orchestrator", "registered errorBoundary processor", "success");
196
+ this.processorManager.registerProcessor({
197
+ name: "stateValidation",
198
+ type: "post",
199
+ priority: 130,
200
+ enabled: true,
201
+ });
202
+ frameworkLogger.log("boot-orchestrator", "registered stateValidation processor", "success");
203
+ // Register the refactoring logging processor with its hook
204
+ const { refactoringLoggingProcessor } = await import("./processors/refactoring-logging-processor.js");
205
+ this.processorManager.registerProcessorWithHook(refactoringLoggingProcessor);
206
+ frameworkLogger.log("boot-orchestrator", "registered refactoringLogging processor with hook", "success");
207
+ const initSuccess = await this.processorManager.initializeProcessors();
208
+ if (!initSuccess) {
209
+ frameworkLogger.log("boot-orchestrator", "processor initialization failed", "error");
210
+ throw new Error("Processor initialization failed");
211
+ }
212
+ frameworkLogger.log("boot-orchestrator", "processors initialized successfully", "success");
213
+ this.stateManager.set("processor:manager", this.processorManager);
214
+ this.stateManager.set("processor:active", true);
215
+ frameworkLogger.log("boot-orchestrator", "processors activated and stored in state", "success");
216
+ return true;
217
+ }
218
+ catch (error) {
219
+ frameworkLogger.log("boot-orchestrator", "activateProcessors failed", "error", error);
220
+ console.error("❌ Failed to activate processors:", error);
221
+ return false;
222
+ }
223
+ }
224
+ /**
225
+ * Load remaining agents after orchestrator
226
+ */
227
+ async loadRemainingAgents() {
228
+ const agents = [
229
+ "enforcer",
230
+ "architect",
231
+ "bug-triage-specialist",
232
+ "code-reviewer",
233
+ "security-auditor",
234
+ "refactorer",
235
+ "test-architect",
236
+ ];
237
+ const loadedAgents = [];
238
+ for (const agentName of agents) {
239
+ try {
240
+ // Dynamic import of agent modules using path resolver
241
+ const agentPath = pathResolver.resolveAgentPath(agentName);
242
+ console.log(`🔗 Loading agent ${agentName} from: ${agentPath}`);
243
+ const agentModule = await import(agentPath);
244
+ const agentClass = agentModule[`StringRay${agentName.charAt(0).toUpperCase() + agentName.slice(1)}Agent`];
245
+ if (agentClass) {
246
+ const agentInstance = new agentClass();
247
+ this.stateManager.set(`agent:${agentName}`, agentInstance);
248
+ loadedAgents.push(agentName);
249
+ }
250
+ else {
251
+ console.warn(`⚠️ Agent class not found in module: ${agentName}`);
252
+ }
253
+ }
254
+ catch (error) {
255
+ console.warn(`⚠️ Failed to load agent ${agentName}:`, error instanceof Error ? error.message : String(error));
256
+ }
257
+ }
258
+ // Update session state with loaded agents
259
+ this.stateManager.set("session:agents", loadedAgents);
260
+ return loadedAgents;
261
+ }
262
+ /**
263
+ * Enable automatic enforcement activation
264
+ */
265
+ async enableEnforcement() {
266
+ try {
267
+ // Load codex terms for enforcement
268
+ const loadResult = await this.contextLoader.loadCodexContext(process.cwd());
269
+ if (!loadResult.success || !loadResult.context) {
270
+ throw new Error("No codex terms loaded for enforcement");
271
+ }
272
+ const codexTerms = Array.from(loadResult.context.terms.values());
273
+ // Enable enforcement mechanisms
274
+ this.stateManager.set("enforcement:active", true);
275
+ this.stateManager.set("enforcement:codex_terms", codexTerms);
276
+ this.stateManager.set("enforcement:enabled_at", Date.now());
277
+ return true;
278
+ }
279
+ catch (error) {
280
+ console.error("❌ Failed to enable enforcement:", error);
281
+ return false;
282
+ }
283
+ }
284
+ /**
285
+ * Activate codex compliance checking during boot
286
+ */
287
+ async activateCodexCompliance() {
288
+ try {
289
+ // Initialize codex injector if not already done
290
+ let codexInjector = this.stateManager.get("processor:codex_injector");
291
+ if (!codexInjector) {
292
+ // Import and initialize codex injector
293
+ // Try import with .js extension first (for Node.js/test environment)
294
+ let CodexInjector;
295
+ try {
296
+ ({ CodexInjector } = await import("./codex-injector.js"));
297
+ }
298
+ catch (error) {
299
+ // Fallback to import without .js extension (for oh-my-opencode plugin environment)
300
+ ({ CodexInjector } = await import("./codex-injector"));
301
+ }
302
+ codexInjector = new CodexInjector();
303
+ this.stateManager.set("processor:codex_injector", codexInjector);
304
+ }
305
+ // Enable compliance validation
306
+ this.stateManager.set("compliance:active", true);
307
+ this.stateManager.set("compliance:validator", codexInjector);
308
+ this.stateManager.set("compliance:activated_at", Date.now());
309
+ return true;
310
+ }
311
+ catch (error) {
312
+ console.error("❌ Failed to activate codex compliance:", error);
313
+ return false;
314
+ }
315
+ }
316
+ async initializeSecurityComponents() {
317
+ try {
318
+ this.stateManager.set("security:hardener", securityHardener);
319
+ this.stateManager.set("security:headers_middleware", securityHeadersMiddleware);
320
+ this.stateManager.set("security:initialized", true);
321
+ }
322
+ catch (error) {
323
+ console.error("❌ Failed to initialize security components:", error);
324
+ throw error;
325
+ }
326
+ }
327
+ async finalizeSecurityIntegration() {
328
+ try {
329
+ const auditResult = await this.runInitialSecurityAudit();
330
+ this.stateManager.set("security:initial_audit", auditResult);
331
+ const hardener = this.stateManager.get("security:hardener");
332
+ if (hardener?.config?.enableSecureHeaders) {
333
+ this.stateManager.set("security:headers_active", true);
334
+ }
335
+ }
336
+ catch (error) {
337
+ console.error("❌ Failed to finalize security integration:", error);
338
+ }
339
+ }
340
+ async runInitialSecurityAudit() {
341
+ try {
342
+ const securityAuditorPath = pathResolver.resolveModulePath("security/security-auditor");
343
+ const { SecurityAuditor } = await import(securityAuditorPath);
344
+ const auditor = new SecurityAuditor();
345
+ const result = await auditor.auditProject(process.cwd());
346
+ if (result.score < 80) {
347
+ console.warn(`⚠️ Initial security score: ${result.score}/100 (target: 80+)`);
348
+ }
349
+ return result;
350
+ }
351
+ catch (error) {
352
+ console.error("❌ Failed to run initial security audit:", error);
353
+ return { score: 0, issues: [] };
354
+ }
355
+ }
356
+ /**
357
+ * Validate processor health during boot
358
+ */
359
+ async validateProcessorHealth() {
360
+ try {
361
+ const healthStatus = this.processorManager.getProcessorHealth();
362
+ const failedProcessors = healthStatus.filter((h) => h.status === "failed");
363
+ if (failedProcessors.length > 0) {
364
+ console.error(`❌ ${failedProcessors.length} processors failed health check:`, failedProcessors.map((p) => p.name));
365
+ return false;
366
+ }
367
+ const degradedProcessors = healthStatus.filter((h) => h.status === "degraded");
368
+ if (degradedProcessors.length > 0) {
369
+ console.warn(`⚠️ ${degradedProcessors.length} processors are degraded:`, degradedProcessors.map((p) => p.name));
370
+ }
371
+ return true;
372
+ }
373
+ catch (error) {
374
+ console.error("❌ Processor health validation failed:", error);
375
+ return false;
376
+ }
377
+ }
378
+ /**
379
+ * Get current boot status information
380
+ */
381
+ getBootStatus() {
382
+ const agentsLoaded = this.stateManager.get("session:agents") || [];
383
+ const errors = [];
384
+ // Check for any stored errors
385
+ const storedErrors = this.stateManager.get("boot:errors");
386
+ if (Array.isArray(storedErrors)) {
387
+ errors.push(...storedErrors);
388
+ }
389
+ return {
390
+ success: this.stateManager.get("boot:success") || false,
391
+ orchestratorLoaded: !!this.stateManager.get("orchestrator"),
392
+ sessionManagementActive: this.stateManager.get("session:active") || false,
393
+ processorsActivated: this.stateManager.get("processor:active") || false,
394
+ enforcementEnabled: this.stateManager.get("enforcement:active") || false,
395
+ codexComplianceActive: this.stateManager.get("compliance:active") || false,
396
+ agentsLoaded: Array.isArray(agentsLoaded) ? agentsLoaded : [],
397
+ errors,
398
+ };
399
+ }
400
+ /**
401
+ * Set up comprehensive memory monitoring and alerting
402
+ */
403
+ setupMemoryMonitoring() {
404
+ // Start memory monitor
405
+ memoryMonitor.start();
406
+ // Set up alert handlers
407
+ memoryMonitor.on("alert", (alert) => {
408
+ const level = alert.severity === "critical"
409
+ ? "error"
410
+ : alert.severity === "high"
411
+ ? "warn"
412
+ : "info";
413
+ frameworkLogger.log("boot-orchestrator", `🚨 MEMORY ALERT: ${alert.message}`, "error");
414
+ // Store alert in state for dashboard access
415
+ const alerts = this.stateManager.get("memory:alerts") || [];
416
+ alerts.push({
417
+ ...alert,
418
+ timestamp: Date.now(),
419
+ });
420
+ // Keep only last 100 alerts
421
+ if (alerts.length > 100) {
422
+ alerts.shift();
423
+ }
424
+ this.stateManager.set("memory:alerts", alerts);
425
+ // Log recommendations
426
+ alert.details.recommendations.forEach((rec) => {
427
+ frameworkLogger.log("boot-orchestrator", `💡 ${rec}`, "info");
428
+ });
429
+ });
430
+ // Log initial memory status
431
+ const initialStats = memoryMonitor.getCurrentStats();
432
+ frameworkLogger.log("boot-orchestrator", `🧠 Initial memory: ${initialStats.heapUsed.toFixed(1)}MB heap, ${initialStats.heapTotal.toFixed(1)}MB total`, "info");
433
+ // Store initial memory baseline
434
+ this.stateManager.set("memory:baseline", initialStats);
435
+ }
436
+ /**
437
+ * Perform comprehensive memory health check
438
+ */
439
+ getMemoryHealth() {
440
+ const summary = memoryMonitor.getSummary();
441
+ const issues = [];
442
+ // Check for memory issues
443
+ if (summary.current.heapUsed > 400) {
444
+ issues.push(`Critical heap usage: ${summary.current.heapUsed.toFixed(1)}MB`);
445
+ }
446
+ else if (summary.current.heapUsed > 200) {
447
+ issues.push(`High heap usage: ${summary.current.heapUsed.toFixed(1)}MB`);
448
+ }
449
+ if (summary.trend === "increasing") {
450
+ issues.push("Memory usage trending upward - potential leak detected");
451
+ }
452
+ if (summary.peak.heapUsed > 500) {
453
+ issues.push(`Peak usage exceeded safe limits: ${summary.peak.heapUsed.toFixed(1)}MB`);
454
+ }
455
+ return {
456
+ healthy: issues.length === 0,
457
+ issues,
458
+ metrics: summary,
459
+ };
460
+ }
461
+ /**
462
+ * Execute the boot sequence (internal framework initialization)
463
+ */
464
+ async executeBootSequence() {
465
+ frameworkLogger.log("boot-orchestrator", "executeBootSequence started", "info");
466
+ const result = {
467
+ success: false,
468
+ orchestratorLoaded: false,
469
+ sessionManagementActive: false,
470
+ processorsActivated: false,
471
+ agentsLoaded: [],
472
+ enforcementEnabled: false,
473
+ codexComplianceActive: false,
474
+ errors: [],
475
+ };
476
+ try {
477
+ frameworkLogger.log("boot-orchestrator", "loading StringRay configuration", "info");
478
+ // Phase 0: Load StringRay configuration from Python ConfigManager
479
+ await this.loadStringRayConfiguration();
480
+ frameworkLogger.log("boot-orchestrator", "StringRay configuration loaded", "success");
481
+ // Phase 1: Initialize core systems
482
+ frameworkLogger.log("boot-orchestrator", "initializing core systems", "info");
483
+ result.orchestratorLoaded = await this.loadOrchestrator();
484
+ if (!result.orchestratorLoaded) {
485
+ frameworkLogger.log("boot-orchestrator", "orchestrator loading failed", "error");
486
+ result.errors.push("Failed to load orchestrator");
487
+ return result;
488
+ }
489
+ frameworkLogger.log("boot-orchestrator", "orchestrator loaded successfully", "success");
490
+ const delegationInitialized = await this.initializeDelegationSystem();
491
+ if (!delegationInitialized) {
492
+ frameworkLogger.log("boot-orchestrator", "delegation system initialization failed", "error");
493
+ result.errors.push("Failed to initialize delegation system");
494
+ return result;
495
+ }
496
+ frameworkLogger.log("boot-orchestrator", "delegation system initialized", "success");
497
+ // Phase 2: Session management
498
+ if (this.config.sessionManagement) {
499
+ result.sessionManagementActive =
500
+ await this.initializeSessionManagement();
501
+ if (!result.sessionManagementActive) {
502
+ result.errors.push("Failed to initialize session management");
503
+ return result;
504
+ }
505
+ }
506
+ // Phase 3: Processors
507
+ if (this.config.processorActivation) {
508
+ frameworkLogger.log("boot-orchestrator", "activating processors", "info");
509
+ result.processorsActivated = await this.activateProcessors();
510
+ if (!result.processorsActivated) {
511
+ frameworkLogger.log("boot-orchestrator", "processor activation failed", "error");
512
+ result.errors.push("Failed to activate processors");
513
+ return result;
514
+ }
515
+ frameworkLogger.log("boot-orchestrator", "processors activated successfully", "success");
516
+ // Validate processor health
517
+ const healthValid = await this.validateProcessorHealth();
518
+ if (!healthValid) {
519
+ frameworkLogger.log("boot-orchestrator", "processor health validation failed", "error");
520
+ result.errors.push("Processor health validation failed");
521
+ return result;
522
+ }
523
+ frameworkLogger.log("boot-orchestrator", "processor health validated", "success");
524
+ }
525
+ // Phase 4: Load agents
526
+ if (this.config.agentLoading) {
527
+ result.agentsLoaded = await this.loadRemainingAgents();
528
+ }
529
+ // Phase 5: Security & compliance
530
+ if (this.config.enableEnforcement) {
531
+ result.enforcementEnabled = await this.enableEnforcement();
532
+ if (!result.enforcementEnabled) {
533
+ result.errors.push("Failed to enable enforcement");
534
+ return result;
535
+ }
536
+ }
537
+ if (this.config.codexValidation) {
538
+ result.codexComplianceActive = await this.activateCodexCompliance();
539
+ if (!result.codexComplianceActive) {
540
+ result.errors.push("Failed to activate codex compliance");
541
+ return result;
542
+ }
543
+ }
544
+ // Finalize security integration
545
+ await this.finalizeSecurityIntegration();
546
+ result.success = true;
547
+ }
548
+ catch (error) {
549
+ result.errors.push(`Boot sequence error: ${error}`);
550
+ }
551
+ // Store boot result in state manager for getBootStatus
552
+ this.stateManager.set("boot:success", result.success);
553
+ this.stateManager.set("boot:errors", result.errors);
554
+ return result;
555
+ }
556
+ /**
557
+ * Load StringRay configuration from Python ConfigManager
558
+ */
559
+ async loadStringRayConfiguration() {
560
+ try {
561
+ // Load StringRay configuration directly (no Python dependency)
562
+ const stringRayConfig = {
563
+ version: "1.0.0",
564
+ codex_enabled: true,
565
+ codex_version: "v1.2.20",
566
+ codex_terms: [
567
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
568
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
569
+ 41, 42, 43
570
+ ],
571
+ monitoring_metrics: [
572
+ "bundle-size", "test-coverage", "code-duplication", "build-time", "error-rate"
573
+ ],
574
+ monitoring_alerts: [
575
+ "threshold-violations", "security-issues", "performance-degradation", "test-failures"
576
+ ],
577
+ agent_capabilities: {
578
+ enforcer: ["compliance-monitoring", "threshold-enforcement", "automation-orchestration"],
579
+ architect: ["design-review", "architecture-validation", "dependency-analysis"],
580
+ orchestrator: ["task-coordination", "multi-agent-orchestration", "workflow-management"],
581
+ "bug-triage-specialist": ["error-analysis", "root-cause-identification", "fix-suggestions"],
582
+ "code-reviewer": ["code-quality-assessment", "best-practice-validation", "security-review"],
583
+ "security-auditor": ["vulnerability-detection", "threat-analysis", "security-validation"],
584
+ refactorer: ["code-modernization", "debt-reduction", "consolidation"],
585
+ "test-architect": ["test-strategy-design", "coverage-optimization", "behavioral-testing"]
586
+ }
587
+ };
588
+ // Store configuration in state manager for use by other components
589
+ this.stateManager.set("strray:config", stringRayConfig);
590
+ this.stateManager.set("strray:version", stringRayConfig.version);
591
+ this.stateManager.set("strray:codex_enabled", stringRayConfig.codex_enabled);
592
+ this.stateManager.set("strray:codex_terms", stringRayConfig.codex_terms);
593
+ this.stateManager.set("strray:monitoring_metrics", stringRayConfig.monitoring_metrics);
594
+ this.stateManager.set("strray:monitoring_alerts", stringRayConfig.monitoring_alerts);
595
+ this.stateManager.set("strray:agent_capabilities", stringRayConfig.agent_capabilities);
596
+ console.log("✅ StringRay configuration loaded successfully");
597
+ }
598
+ catch (error) {
599
+ console.warn("⚠️ Failed to load StringRay configuration:", error);
600
+ // Continue with defaults if loading fails
601
+ }
602
+ }
603
+ }
604
+ // Export singleton instance
605
+ export const bootOrchestrator = new BootOrchestrator();
606
+ //# sourceMappingURL=boot-orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boot-orchestrator.js","sourceRoot":"","sources":["../../src/boot-orchestrator.ts"],"names":[],"mappings":"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"}