crewly 1.0.3 → 1.0.5
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/config/roles/orchestrator/prompt.md +61 -2
- package/config/skills/orchestrator/remember/instructions.md +8 -1
- package/config/skills/orchestrator/update-team/execute.sh +16 -0
- package/config/skills/orchestrator/update-team/instructions.md +21 -0
- package/config/skills/orchestrator/update-team/skill.json +20 -0
- package/dist/backend/backend/src/controllers/messaging/delivery-logs.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/messaging/delivery-logs.controller.js +4 -2
- package/dist/backend/backend/src/controllers/messaging/delivery-logs.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/messaging/scheduled-messages.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/messaging/scheduled-messages.controller.js +10 -8
- package/dist/backend/backend/src/controllers/messaging/scheduled-messages.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/orchestrator/orchestrator.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/orchestrator/orchestrator.controller.js +28 -26
- package/dist/backend/backend/src/controllers/orchestrator/orchestrator.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/project/git.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/project/git.controller.js +9 -7
- package/dist/backend/backend/src/controllers/project/git.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/project/project.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/project/project.controller.js +52 -50
- package/dist/backend/backend/src/controllers/project/project.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/skill/skill.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/skill/skill.controller.js +3 -1
- package/dist/backend/backend/src/controllers/skill/skill.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack-thread.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack-thread.controller.js +3 -1
- package/dist/backend/backend/src/controllers/slack/slack-thread.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/system/config.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/system/config.controller.js +3 -1
- package/dist/backend/backend/src/controllers/system/config.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/system/errors.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/system/errors.controller.js +7 -5
- package/dist/backend/backend/src/controllers/system/errors.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/system/scheduler.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/system/scheduler.controller.js +6 -4
- package/dist/backend/backend/src/controllers/system/scheduler.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/system/system.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/system/system.controller.js +20 -19
- package/dist/backend/backend/src/controllers/system/system.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/assignments.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/assignments.controller.js +4 -2
- package/dist/backend/backend/src/controllers/task-management/assignments.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/in-progress-tasks.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/in-progress-tasks.controller.js +3 -1
- package/dist/backend/backend/src/controllers/task-management/in-progress-tasks.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.js +30 -28
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/tasks.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/tasks.controller.js +7 -5
- package/dist/backend/backend/src/controllers/task-management/tasks.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/tickets.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/tickets.controller.js +12 -10
- package/dist/backend/backend/src/controllers/task-management/tickets.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.js +44 -42
- package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.routes.js +1 -0
- package/dist/backend/backend/src/controllers/team/team.routes.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +5 -1
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/routes/factory.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/factory.routes.js +4 -2
- package/dist/backend/backend/src/routes/factory.routes.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.js +8 -2
- package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +6 -0
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js +29 -6
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +22 -8
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +9 -3
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/ai/context-loader.service.d.ts +1 -0
- package/dist/backend/backend/src/services/ai/context-loader.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/context-loader.service.js +9 -7
- package/dist/backend/backend/src/services/ai/context-loader.service.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-template.service.d.ts +1 -0
- package/dist/backend/backend/src/services/ai/prompt-template.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-template.service.js +7 -5
- package/dist/backend/backend/src/services/ai/prompt-template.service.js.map +1 -1
- package/dist/backend/backend/src/services/core/config.service.d.ts +6 -0
- package/dist/backend/backend/src/services/core/config.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/config.service.js +25 -5
- package/dist/backend/backend/src/services/core/config.service.js.map +1 -1
- package/dist/backend/backend/src/services/core/storage.service.d.ts +10 -2
- package/dist/backend/backend/src/services/core/storage.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/storage.service.js +45 -29
- package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js +50 -33
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/team-activity-websocket.service.d.ts +4 -1
- package/dist/backend/backend/src/services/monitoring/team-activity-websocket.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/team-activity-websocket.service.js +28 -14
- package/dist/backend/backend/src/services/monitoring/team-activity-websocket.service.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/improvement-startup.service.d.ts +1 -0
- package/dist/backend/backend/src/services/orchestrator/improvement-startup.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/improvement-startup.service.js +22 -20
- package/dist/backend/backend/src/services/orchestrator/improvement-startup.service.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js +11 -2
- package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/safe-restart.service.d.ts +1 -0
- package/dist/backend/backend/src/services/orchestrator/safe-restart.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/safe-restart.service.js +25 -23
- package/dist/backend/backend/src/services/orchestrator/safe-restart.service.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/self-improvement.service.d.ts +1 -0
- package/dist/backend/backend/src/services/orchestrator/self-improvement.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/self-improvement.service.js +12 -10
- package/dist/backend/backend/src/services/orchestrator/self-improvement.service.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/slack-bridge-lazy.d.ts +17 -0
- package/dist/backend/backend/src/services/orchestrator/slack-bridge-lazy.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/slack-bridge-lazy.js +30 -0
- package/dist/backend/backend/src/services/orchestrator/slack-bridge-lazy.js.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/state-persistence.service.d.ts +1 -0
- package/dist/backend/backend/src/services/orchestrator/state-persistence.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/state-persistence.service.js +14 -12
- package/dist/backend/backend/src/services/orchestrator/state-persistence.service.js.map +1 -1
- package/dist/backend/backend/src/services/project/active-projects.service.d.ts +1 -0
- package/dist/backend/backend/src/services/project/active-projects.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project/active-projects.service.js +8 -6
- package/dist/backend/backend/src/services/project/active-projects.service.js.map +1 -1
- package/dist/backend/backend/src/services/project/task-tracking.service.d.ts +1 -0
- package/dist/backend/backend/src/services/project/task-tracking.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project/task-tracking.service.js +18 -16
- package/dist/backend/backend/src/services/project/task-tracking.service.js.map +1 -1
- package/dist/backend/backend/src/services/project/ticket-editor.service.d.ts +1 -0
- package/dist/backend/backend/src/services/project/ticket-editor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project/ticket-editor.service.js +6 -4
- package/dist/backend/backend/src/services/project/ticket-editor.service.js.map +1 -1
- package/dist/backend/backend/src/services/settings/role.service.d.ts +1 -0
- package/dist/backend/backend/src/services/settings/role.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/settings/role.service.js +3 -1
- package/dist/backend/backend/src/services/settings/role.service.js.map +1 -1
- package/dist/backend/backend/src/services/skill/skill-executor.service.d.ts +1 -0
- package/dist/backend/backend/src/services/skill/skill-executor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/skill/skill-executor.service.js +4 -2
- package/dist/backend/backend/src/services/skill/skill-executor.service.js.map +1 -1
- package/dist/backend/backend/src/services/skill/skill.service.d.ts +1 -0
- package/dist/backend/backend/src/services/skill/skill.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/skill/skill.service.js +7 -5
- package/dist/backend/backend/src/services/skill/skill.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-image.service.d.ts +1 -0
- package/dist/backend/backend/src/services/slack/slack-image.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-image.service.js +6 -4
- package/dist/backend/backend/src/services/slack/slack-image.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.js +7 -5
- package/dist/backend/backend/src/services/slack/slack-initializer.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +1 -0
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +25 -20
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack.service.d.ts +1 -0
- package/dist/backend/backend/src/services/slack/slack.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack.service.js +19 -15
- package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
- package/dist/backend/backend/src/utils/process-recovery.d.ts +1 -0
- package/dist/backend/backend/src/utils/process-recovery.d.ts.map +1 -1
- package/dist/backend/backend/src/utils/process-recovery.js +40 -37
- package/dist/backend/backend/src/utils/process-recovery.js.map +1 -1
- package/dist/backend/backend/src/utils/prompt-resolver.d.ts.map +1 -1
- package/dist/backend/backend/src/utils/prompt-resolver.js +3 -1
- package/dist/backend/backend/src/utils/prompt-resolver.js.map +1 -1
- package/dist/backend/backend/src/utils/resource-monitor.d.ts +2 -1
- package/dist/backend/backend/src/utils/resource-monitor.d.ts.map +1 -1
- package/dist/backend/backend/src/utils/resource-monitor.js +34 -24
- package/dist/backend/backend/src/utils/resource-monitor.js.map +1 -1
- package/dist/cli/cli/src/commands/onboard.d.ts +89 -0
- package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -0
- package/dist/cli/cli/src/commands/onboard.js +268 -0
- package/dist/cli/cli/src/commands/onboard.js.map +1 -0
- package/dist/cli/cli/src/index.js +5 -0
- package/dist/cli/cli/src/index.js.map +1 -1
- package/dist/cli/cli/src/utils/marketplace.d.ts +22 -0
- package/dist/cli/cli/src/utils/marketplace.d.ts.map +1 -1
- package/dist/cli/cli/src/utils/marketplace.js +43 -0
- package/dist/cli/cli/src/utils/marketplace.js.map +1 -1
- package/frontend/dist/assets/{index-4c56763b.js → index-419da091.js} +2 -2
- package/frontend/dist/assets/index-5adb4dff.css +33 -0
- package/frontend/dist/index.html +2 -2
- package/package.json +2 -1
- package/frontend/dist/assets/index-c1dd0b10.css +0 -33
|
@@ -10,7 +10,8 @@ import { spawn } from 'child_process';
|
|
|
10
10
|
import * as path from 'path';
|
|
11
11
|
import * as fs from 'fs/promises';
|
|
12
12
|
import { getStatePersistenceService } from './state-persistence.service.js';
|
|
13
|
-
import {
|
|
13
|
+
import { getSlackBridgeLazy } from './slack-bridge-lazy.js';
|
|
14
|
+
import { LoggerService } from '../core/logger.service.js';
|
|
14
15
|
/**
|
|
15
16
|
* Safe restart service singleton
|
|
16
17
|
*/
|
|
@@ -47,6 +48,7 @@ export class SafeRestartService {
|
|
|
47
48
|
shutdownCallbacks = [];
|
|
48
49
|
startupCallbacks = [];
|
|
49
50
|
signalHandlersRegistered = false;
|
|
51
|
+
logger = LoggerService.getInstance().createComponentLogger('SafeRestart');
|
|
50
52
|
/**
|
|
51
53
|
* Create a new SafeRestartService
|
|
52
54
|
*
|
|
@@ -67,7 +69,7 @@ export class SafeRestartService {
|
|
|
67
69
|
return;
|
|
68
70
|
// Handle graceful shutdown signals
|
|
69
71
|
const shutdownHandler = async (signal) => {
|
|
70
|
-
|
|
72
|
+
this.logger.info('Received signal, initiating graceful shutdown...', { signal });
|
|
71
73
|
await this.gracefulShutdown(`signal:${signal}`);
|
|
72
74
|
process.exit(0);
|
|
73
75
|
};
|
|
@@ -75,16 +77,16 @@ export class SafeRestartService {
|
|
|
75
77
|
process.on('SIGINT', () => shutdownHandler('SIGINT'));
|
|
76
78
|
// Handle uncaught errors
|
|
77
79
|
process.on('uncaughtException', async (error) => {
|
|
78
|
-
|
|
80
|
+
this.logger.error('Uncaught exception', { error: error instanceof Error ? error.message : String(error) });
|
|
79
81
|
await this.emergencyShutdown(error.message);
|
|
80
82
|
process.exit(1);
|
|
81
83
|
});
|
|
82
84
|
process.on('unhandledRejection', async (reason) => {
|
|
83
|
-
|
|
85
|
+
this.logger.error('Unhandled rejection', { reason: reason instanceof Error ? reason.message : String(reason) });
|
|
84
86
|
// Don't exit, just log and try to recover
|
|
85
87
|
});
|
|
86
88
|
this.signalHandlersRegistered = true;
|
|
87
|
-
|
|
89
|
+
this.logger.info('Process handlers registered');
|
|
88
90
|
}
|
|
89
91
|
/**
|
|
90
92
|
* Register a callback to run before shutdown
|
|
@@ -114,14 +116,14 @@ export class SafeRestartService {
|
|
|
114
116
|
const statePersistence = getStatePersistenceService();
|
|
115
117
|
const previousState = await statePersistence.initialize();
|
|
116
118
|
if (!previousState) {
|
|
117
|
-
|
|
119
|
+
this.logger.info('Fresh start - no previous state');
|
|
118
120
|
return null;
|
|
119
121
|
}
|
|
120
122
|
// Generate resume instructions
|
|
121
123
|
const instructions = statePersistence.generateResumeInstructions(previousState);
|
|
122
124
|
// Notify via Slack if available
|
|
123
125
|
try {
|
|
124
|
-
const slackBridge =
|
|
126
|
+
const slackBridge = await getSlackBridgeLazy();
|
|
125
127
|
for (const notification of instructions.notifications) {
|
|
126
128
|
if (notification.type === 'slack') {
|
|
127
129
|
await slackBridge.sendNotification({
|
|
@@ -136,7 +138,7 @@ export class SafeRestartService {
|
|
|
136
138
|
}
|
|
137
139
|
catch {
|
|
138
140
|
// Slack not available, continue without notification
|
|
139
|
-
|
|
141
|
+
this.logger.info('Slack notification skipped (not connected)');
|
|
140
142
|
}
|
|
141
143
|
// Run startup callbacks
|
|
142
144
|
for (const callback of this.startupCallbacks) {
|
|
@@ -144,7 +146,7 @@ export class SafeRestartService {
|
|
|
144
146
|
await callback(instructions);
|
|
145
147
|
}
|
|
146
148
|
catch (error) {
|
|
147
|
-
|
|
149
|
+
this.logger.error('Startup callback error', { error: error instanceof Error ? error.message : String(error) });
|
|
148
150
|
}
|
|
149
151
|
}
|
|
150
152
|
return instructions;
|
|
@@ -160,14 +162,14 @@ export class SafeRestartService {
|
|
|
160
162
|
if (this.isRestartingFlag)
|
|
161
163
|
return;
|
|
162
164
|
this.isRestartingFlag = true;
|
|
163
|
-
|
|
165
|
+
this.logger.info('Graceful shutdown', { reason });
|
|
164
166
|
// Run shutdown callbacks
|
|
165
167
|
for (const callback of this.shutdownCallbacks) {
|
|
166
168
|
try {
|
|
167
169
|
await callback();
|
|
168
170
|
}
|
|
169
171
|
catch (error) {
|
|
170
|
-
|
|
172
|
+
this.logger.error('Shutdown callback error', { error: error instanceof Error ? error.message : String(error) });
|
|
171
173
|
}
|
|
172
174
|
}
|
|
173
175
|
// Save state
|
|
@@ -176,11 +178,11 @@ export class SafeRestartService {
|
|
|
176
178
|
await statePersistence.prepareForShutdown();
|
|
177
179
|
}
|
|
178
180
|
catch (error) {
|
|
179
|
-
|
|
181
|
+
this.logger.error('Failed to save state', { error: error instanceof Error ? error.message : String(error) });
|
|
180
182
|
}
|
|
181
183
|
// Notify Slack
|
|
182
184
|
try {
|
|
183
|
-
const slackBridge =
|
|
185
|
+
const slackBridge = await getSlackBridgeLazy();
|
|
184
186
|
await slackBridge.sendNotification({
|
|
185
187
|
type: 'alert',
|
|
186
188
|
title: 'Crewly Shutting Down',
|
|
@@ -190,9 +192,9 @@ export class SafeRestartService {
|
|
|
190
192
|
});
|
|
191
193
|
}
|
|
192
194
|
catch {
|
|
193
|
-
|
|
195
|
+
this.logger.info('Slack notification skipped (not connected)');
|
|
194
196
|
}
|
|
195
|
-
|
|
197
|
+
this.logger.info('Shutdown complete');
|
|
196
198
|
}
|
|
197
199
|
/**
|
|
198
200
|
* Emergency shutdown (minimal cleanup)
|
|
@@ -202,13 +204,13 @@ export class SafeRestartService {
|
|
|
202
204
|
* @param reason - Reason for emergency shutdown
|
|
203
205
|
*/
|
|
204
206
|
async emergencyShutdown(reason) {
|
|
205
|
-
|
|
207
|
+
this.logger.error('Emergency shutdown', { reason });
|
|
206
208
|
try {
|
|
207
209
|
const statePersistence = getStatePersistenceService();
|
|
208
210
|
await statePersistence.saveState('error_recovery');
|
|
209
211
|
}
|
|
210
212
|
catch (error) {
|
|
211
|
-
|
|
213
|
+
this.logger.error('Failed to save state in emergency', { error: error instanceof Error ? error.message : String(error) });
|
|
212
214
|
}
|
|
213
215
|
}
|
|
214
216
|
/**
|
|
@@ -220,7 +222,7 @@ export class SafeRestartService {
|
|
|
220
222
|
*/
|
|
221
223
|
scheduleRestart(config) {
|
|
222
224
|
const delayMs = config.delayMs ?? 5000;
|
|
223
|
-
|
|
225
|
+
this.logger.info('Restart scheduled', { delayMs, reason: config.reason });
|
|
224
226
|
this.scheduledRestartReason = config.reason;
|
|
225
227
|
this.scheduledRestartTime = new Date(Date.now() + delayMs);
|
|
226
228
|
// Notify Slack
|
|
@@ -242,7 +244,7 @@ export class SafeRestartService {
|
|
|
242
244
|
this.restartTimer = null;
|
|
243
245
|
this.scheduledRestartReason = null;
|
|
244
246
|
this.scheduledRestartTime = null;
|
|
245
|
-
|
|
247
|
+
this.logger.info('Scheduled restart cancelled');
|
|
246
248
|
return true;
|
|
247
249
|
}
|
|
248
250
|
return false;
|
|
@@ -256,7 +258,7 @@ export class SafeRestartService {
|
|
|
256
258
|
if (!config.skipStateSave) {
|
|
257
259
|
await this.gracefulShutdown(config.reason);
|
|
258
260
|
}
|
|
259
|
-
|
|
261
|
+
this.logger.info('Restarting process...');
|
|
260
262
|
// Write restart marker file
|
|
261
263
|
const markerPath = path.join(process.cwd(), '.restart-marker');
|
|
262
264
|
const marker = {
|
|
@@ -288,7 +290,7 @@ export class SafeRestartService {
|
|
|
288
290
|
*/
|
|
289
291
|
async notifyRestartScheduled(reason, delayMs) {
|
|
290
292
|
try {
|
|
291
|
-
const slackBridge =
|
|
293
|
+
const slackBridge = await getSlackBridgeLazy();
|
|
292
294
|
await slackBridge.sendNotification({
|
|
293
295
|
type: 'alert',
|
|
294
296
|
title: 'Crewly Restart Scheduled',
|
|
@@ -298,7 +300,7 @@ export class SafeRestartService {
|
|
|
298
300
|
});
|
|
299
301
|
}
|
|
300
302
|
catch {
|
|
301
|
-
|
|
303
|
+
this.logger.info('Slack notification skipped (not connected)');
|
|
302
304
|
}
|
|
303
305
|
}
|
|
304
306
|
/**
|
|
@@ -346,7 +348,7 @@ export class SafeRestartService {
|
|
|
346
348
|
// Delete marker
|
|
347
349
|
await fs.unlink(markerPath);
|
|
348
350
|
if (marker.postRestartCommand) {
|
|
349
|
-
|
|
351
|
+
this.logger.info('Post-restart command found', { command: marker.postRestartCommand });
|
|
350
352
|
// Note: Actual command execution would be implemented here
|
|
351
353
|
// For safety, we just log for now
|
|
352
354
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safe-restart.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/orchestrator/safe-restart.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"safe-restart.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/orchestrator/safe-restart.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"self-improvement.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/orchestrator/self-improvement.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,EAEL,iBAAiB,EAElB,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"self-improvement.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/orchestrator/self-improvement.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,EAEL,iBAAiB,EAElB,MAAM,iCAAiC,CAAC;AAIzC;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,+BAA+B;IAC/B,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;QACrC,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,sCAAsC;IACtC,YAAY,CAAC,EAAE;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,sBAAsB;IACtB,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;QACrC,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IACH,4BAA4B;IAC5B,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrC,sCAAsC;IACtC,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAOD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAyF;IAEvG;;;;OAIG;gBACS,WAAW,CAAC,EAAE,MAAM;IAIhC;;;;;;OAMG;IACG,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC;IAmD5E;;;;;;;;;;;;;OAaG;IACG,kBAAkB,CACtB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC;IAyE7B;;;;OAIG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBxC;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAKpD;;;;;OAKG;IACG,UAAU,CAAC,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAKlE;;;;OAIG;YACW,mBAAmB;IAWjC;;;;;OAKG;YACW,iBAAiB;IA+C/B;;;;;OAKG;YACW,YAAY;IAuC1B;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IA8BnB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAY5B;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;IAyBlB;;;;;OAKG;YACW,WAAW;CAc1B;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,IAAI,sBAAsB,CAKlE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAElD"}
|
|
@@ -11,7 +11,8 @@ import * as path from 'path';
|
|
|
11
11
|
import * as crypto from 'crypto';
|
|
12
12
|
import { spawn } from 'child_process';
|
|
13
13
|
import { getImprovementMarkerService, } from './improvement-marker.service.js';
|
|
14
|
-
import {
|
|
14
|
+
import { getSlackBridgeLazy } from './slack-bridge-lazy.js';
|
|
15
|
+
import { LoggerService } from '../core/logger.service.js';
|
|
15
16
|
/**
|
|
16
17
|
* Self-improvement service singleton
|
|
17
18
|
*/
|
|
@@ -44,6 +45,7 @@ let selfImprovementInstance = null;
|
|
|
44
45
|
*/
|
|
45
46
|
export class SelfImprovementService {
|
|
46
47
|
projectRoot;
|
|
48
|
+
logger = LoggerService.getInstance().createComponentLogger('SelfImprovement');
|
|
47
49
|
/**
|
|
48
50
|
* Create a new SelfImprovementService.
|
|
49
51
|
*
|
|
@@ -78,7 +80,7 @@ export class SelfImprovementService {
|
|
|
78
80
|
`Files: ${request.targetFiles.length}\n` +
|
|
79
81
|
`Risk: ${riskLevel}\n` +
|
|
80
82
|
`Requires restart: ${requiresRestart}`, 'normal');
|
|
81
|
-
|
|
83
|
+
this.logger.info('Task planned', { taskId });
|
|
82
84
|
return {
|
|
83
85
|
id: taskId,
|
|
84
86
|
description: request.description,
|
|
@@ -118,10 +120,10 @@ export class SelfImprovementService {
|
|
|
118
120
|
}
|
|
119
121
|
try {
|
|
120
122
|
// Step 1: Create git checkpoint
|
|
121
|
-
|
|
123
|
+
this.logger.info('Creating git checkpoint...');
|
|
122
124
|
const gitInfo = await this.createGitCheckpoint();
|
|
123
125
|
// Step 2: Create file backups
|
|
124
|
-
|
|
126
|
+
this.logger.info('Creating file backups...');
|
|
125
127
|
const backups = await this.createFileBackups(request.targetFiles);
|
|
126
128
|
// Step 3: Record backup in marker (CRITICAL: do this before changes)
|
|
127
129
|
await markerService.recordBackup(gitInfo.commit, gitInfo.branch, backups);
|
|
@@ -131,7 +133,7 @@ export class SelfImprovementService {
|
|
|
131
133
|
`Files to modify: ${request.changes.length}\n\n` +
|
|
132
134
|
`:warning: Hot-reload will restart the process. Validation will run automatically.`, 'normal');
|
|
133
135
|
// Step 4: Apply changes (this will trigger hot-reload!)
|
|
134
|
-
|
|
136
|
+
this.logger.info('Applying changes...');
|
|
135
137
|
const appliedChanges = await this.applyChanges(request.changes);
|
|
136
138
|
// Step 5: Record that changes were applied
|
|
137
139
|
await markerService.recordChangesApplied(appliedChanges);
|
|
@@ -146,7 +148,7 @@ export class SelfImprovementService {
|
|
|
146
148
|
};
|
|
147
149
|
}
|
|
148
150
|
catch (error) {
|
|
149
|
-
|
|
151
|
+
this.logger.error('Error during execution', { error: error instanceof Error ? error.message : String(error) });
|
|
150
152
|
await markerService.recordError(error.message, error.stack);
|
|
151
153
|
await this.notifySlack(`:x: *Self-improvement failed:* ${error.message}`, 'critical');
|
|
152
154
|
throw error;
|
|
@@ -169,7 +171,7 @@ export class SelfImprovementService {
|
|
|
169
171
|
}
|
|
170
172
|
await markerService.deleteMarker();
|
|
171
173
|
await this.notifySlack(`:no_entry: Self-improvement cancelled: ${marker.description}`, 'normal');
|
|
172
|
-
|
|
174
|
+
this.logger.info('Task cancelled', { taskId: marker.id });
|
|
173
175
|
}
|
|
174
176
|
/**
|
|
175
177
|
* Get current improvement status.
|
|
@@ -202,7 +204,7 @@ export class SelfImprovementService {
|
|
|
202
204
|
return { commit, branch };
|
|
203
205
|
}
|
|
204
206
|
catch {
|
|
205
|
-
|
|
207
|
+
this.logger.warn('Git checkpoint failed, using file backups only');
|
|
206
208
|
return {};
|
|
207
209
|
}
|
|
208
210
|
}
|
|
@@ -275,7 +277,7 @@ export class SelfImprovementService {
|
|
|
275
277
|
type: change.type,
|
|
276
278
|
description: change.description,
|
|
277
279
|
});
|
|
278
|
-
|
|
280
|
+
this.logger.info('Applied change', { type: change.type, file: change.file });
|
|
279
281
|
}
|
|
280
282
|
return applied;
|
|
281
283
|
}
|
|
@@ -360,7 +362,7 @@ export class SelfImprovementService {
|
|
|
360
362
|
*/
|
|
361
363
|
async notifySlack(message, urgency) {
|
|
362
364
|
try {
|
|
363
|
-
const slackBridge =
|
|
365
|
+
const slackBridge = await getSlackBridgeLazy();
|
|
364
366
|
await slackBridge.sendNotification({
|
|
365
367
|
type: 'alert',
|
|
366
368
|
title: 'Self-Improvement',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"self-improvement.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/orchestrator/self-improvement.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EACL,2BAA2B,GAG5B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"self-improvement.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/orchestrator/self-improvement.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lazy loader for SlackOrchestratorBridge.
|
|
3
|
+
*
|
|
4
|
+
* Breaks the circular dependency:
|
|
5
|
+
* slack-orchestrator-bridge → orchestrator/index → safe-restart / self-improvement → slack-orchestrator-bridge
|
|
6
|
+
*
|
|
7
|
+
* Both safe-restart.service.ts and self-improvement.service.ts import from here
|
|
8
|
+
* instead of duplicating the lazy-import boilerplate.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Lazily imports and returns the SlackOrchestratorBridge singleton.
|
|
12
|
+
* The first call triggers a dynamic import; subsequent calls use the cached reference.
|
|
13
|
+
*
|
|
14
|
+
* @returns The SlackOrchestratorBridge instance
|
|
15
|
+
*/
|
|
16
|
+
export declare function getSlackBridgeLazy(): Promise<import("../slack/slack-orchestrator-bridge.js").SlackOrchestratorBridge>;
|
|
17
|
+
//# sourceMappingURL=slack-bridge-lazy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack-bridge-lazy.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/orchestrator/slack-bridge-lazy.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;;;;GAKG;AACH,wBAAsB,kBAAkB,qFAavC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lazy loader for SlackOrchestratorBridge.
|
|
3
|
+
*
|
|
4
|
+
* Breaks the circular dependency:
|
|
5
|
+
* slack-orchestrator-bridge → orchestrator/index → safe-restart / self-improvement → slack-orchestrator-bridge
|
|
6
|
+
*
|
|
7
|
+
* Both safe-restart.service.ts and self-improvement.service.ts import from here
|
|
8
|
+
* instead of duplicating the lazy-import boilerplate.
|
|
9
|
+
*/
|
|
10
|
+
let cachedGetBridge = null;
|
|
11
|
+
/**
|
|
12
|
+
* Lazily imports and returns the SlackOrchestratorBridge singleton.
|
|
13
|
+
* The first call triggers a dynamic import; subsequent calls use the cached reference.
|
|
14
|
+
*
|
|
15
|
+
* @returns The SlackOrchestratorBridge instance
|
|
16
|
+
*/
|
|
17
|
+
export async function getSlackBridgeLazy() {
|
|
18
|
+
if (!cachedGetBridge) {
|
|
19
|
+
try {
|
|
20
|
+
const mod = await import('../slack/slack-orchestrator-bridge.js');
|
|
21
|
+
cachedGetBridge = mod.getSlackOrchestratorBridge;
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
// Don't cache the failure so the next call can retry
|
|
25
|
+
throw new Error(`Failed to load Slack bridge: ${error instanceof Error ? error.message : String(error)}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return cachedGetBridge();
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=slack-bridge-lazy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack-bridge-lazy.js","sourceRoot":"","sources":["../../../../../../backend/src/services/orchestrator/slack-bridge-lazy.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,IAAI,eAAe,GAA6F,IAAI,CAAC;AAErH;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACvC,IAAI,CAAC,eAAe,EAAE,CAAC;QACtB,IAAI,CAAC;YACJ,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,uCAAuC,CAAC,CAAC;YAClE,eAAe,GAAG,GAAG,CAAC,0BAA0B,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,qDAAqD;YACrD,MAAM,IAAI,KAAK,CACd,gCAAgC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACxF,CAAC;QACH,CAAC;IACF,CAAC;IACD,OAAO,eAAe,EAAE,CAAC;AAC1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-persistence.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/orchestrator/state-persistence.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"state-persistence.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/orchestrator/state-persistence.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,EACT,UAAU,EACV,YAAY,EACZ,oBAAoB,EAEpB,gBAAgB,EAChB,kBAAkB,EAKnB,MAAM,yCAAyC,CAAC;AAOjD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,SAAS,CAAO;IACxB,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,MAAM,CAA0F;IAExG;;;;OAIG;gBACS,OAAO,CAAC,EAAE,MAAM;IAK5B;;;;;;OAMG;IACG,UAAU,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IA6BrD;;;;OAIG;IACH,aAAa,IAAI,OAAO;IAIxB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAcxB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAatB;;;;OAIG;YACW,SAAS;IAuBvB;;;;;;OAMG;IACG,SAAS,CAAC,MAAM,GAAE,gBAA8B,GAAG,OAAO,CAAC,IAAI,CAAC;IAatE;;;;;OAKG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBlD;;;;;OAKG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAsB3D;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAetC;;;;;;;OAOG;IACH,kBAAkB,CAAC,YAAY,EAAE,iBAAiB,GAAG,IAAI;IAqBzD;;;;OAIG;IACH,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAOhD;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAYjC;;;;OAIG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAOhC;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAcpC;;;;OAIG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAOtC;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAc1C;;;;OAIG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAOtC;;;;OAIG;IACH,qBAAqB,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;IAKxD;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAK5B;;;;;;;;OAQG;IACH,0BAA0B,CACxB,aAAa,EAAE,iBAAiB,GAC/B,kBAAkB;IA0DrB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAU/B;;OAEG;IACH,sBAAsB,IAAI,IAAI;IAO9B;;;;OAIG;IACH,QAAQ,IAAI,iBAAiB,GAAG,IAAI;IAIpC;;;;OAIG;IACH,WAAW,IAAI,MAAM;IAIrB;;;;OAIG;IACG,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMzC;;;;;OAKG;YACW,YAAY;IAS1B;;;;;;OAMG;IACG,iBAAiB,CAAC,SAAS,GAAE,MAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAgB/D;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI,uBAAuB,CAKpE;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,IAAI,CAKnD"}
|
|
@@ -10,6 +10,7 @@ import * as fs from 'fs/promises';
|
|
|
10
10
|
import * as path from 'path';
|
|
11
11
|
import * as os from 'os';
|
|
12
12
|
import { atomicWriteJson } from '../../utils/file-io.utils.js';
|
|
13
|
+
import { LoggerService } from '../core/logger.service.js';
|
|
13
14
|
import { STATE_PATHS, STATE_VERSION, MAX_PERSISTED_MESSAGES, CHECKPOINT_INTERVAL_MS, } from '../../types/orchestrator-state.types.js';
|
|
14
15
|
/**
|
|
15
16
|
* State persistence service singleton
|
|
@@ -42,6 +43,7 @@ export class StatePersistenceService {
|
|
|
42
43
|
startTime;
|
|
43
44
|
restartCount = 0;
|
|
44
45
|
initialized = false;
|
|
46
|
+
logger = LoggerService.getInstance().createComponentLogger('StatePersistence');
|
|
45
47
|
/**
|
|
46
48
|
* Create a new StatePersistenceService
|
|
47
49
|
*
|
|
@@ -71,8 +73,8 @@ export class StatePersistenceService {
|
|
|
71
73
|
const previousState = await this.loadState();
|
|
72
74
|
if (previousState) {
|
|
73
75
|
this.restartCount = (previousState.metadata.restartCount || 0) + 1;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
+
this.logger.info('Loaded state', { checkpointedAt: previousState.checkpointedAt });
|
|
77
|
+
this.logger.info('Restart count', { restartCount: this.restartCount });
|
|
76
78
|
}
|
|
77
79
|
// Initialize current state
|
|
78
80
|
this.currentState = this.createEmptyState();
|
|
@@ -134,7 +136,7 @@ export class StatePersistenceService {
|
|
|
134
136
|
const state = JSON.parse(data);
|
|
135
137
|
// Version check
|
|
136
138
|
if (state.version !== STATE_VERSION) {
|
|
137
|
-
|
|
139
|
+
this.logger.info('State version mismatch, migration needed');
|
|
138
140
|
return await this.migrateState(state);
|
|
139
141
|
}
|
|
140
142
|
return state;
|
|
@@ -143,7 +145,7 @@ export class StatePersistenceService {
|
|
|
143
145
|
if (error.code === 'ENOENT') {
|
|
144
146
|
return null; // No previous state
|
|
145
147
|
}
|
|
146
|
-
|
|
148
|
+
this.logger.error('Error loading state', { error: error instanceof Error ? error.message : String(error) });
|
|
147
149
|
return null;
|
|
148
150
|
}
|
|
149
151
|
}
|
|
@@ -162,7 +164,7 @@ export class StatePersistenceService {
|
|
|
162
164
|
this.currentState.metadata = this.createMetadata();
|
|
163
165
|
const statePath = path.join(this.stateDir, STATE_PATHS.CURRENT_STATE);
|
|
164
166
|
await atomicWriteJson(statePath, this.currentState);
|
|
165
|
-
|
|
167
|
+
this.logger.info('Checkpointed state', { reason });
|
|
166
168
|
}
|
|
167
169
|
/**
|
|
168
170
|
* Create backup before risky operations
|
|
@@ -177,7 +179,7 @@ export class StatePersistenceService {
|
|
|
177
179
|
// Copy current state to backup
|
|
178
180
|
const statePath = path.join(this.stateDir, STATE_PATHS.CURRENT_STATE);
|
|
179
181
|
await fs.copyFile(statePath, backupPath);
|
|
180
|
-
|
|
182
|
+
this.logger.info('Created backup', { backupId });
|
|
181
183
|
return backupId;
|
|
182
184
|
}
|
|
183
185
|
/**
|
|
@@ -193,11 +195,11 @@ export class StatePersistenceService {
|
|
|
193
195
|
this.currentState = JSON.parse(data);
|
|
194
196
|
// Save restored state as current
|
|
195
197
|
await this.saveState('error_recovery');
|
|
196
|
-
|
|
198
|
+
this.logger.info('Restored from backup', { backupId });
|
|
197
199
|
return true;
|
|
198
200
|
}
|
|
199
201
|
catch (error) {
|
|
200
|
-
|
|
202
|
+
this.logger.error('Failed to restore backup', { error: error instanceof Error ? error.message : String(error) });
|
|
201
203
|
return false;
|
|
202
204
|
}
|
|
203
205
|
}
|
|
@@ -444,7 +446,7 @@ export class StatePersistenceService {
|
|
|
444
446
|
async prepareForShutdown() {
|
|
445
447
|
this.stopPeriodicCheckpoint();
|
|
446
448
|
await this.saveState('before_restart');
|
|
447
|
-
|
|
449
|
+
this.logger.info('State saved before shutdown');
|
|
448
450
|
}
|
|
449
451
|
/**
|
|
450
452
|
* Migrate state from older version
|
|
@@ -455,7 +457,7 @@ export class StatePersistenceService {
|
|
|
455
457
|
async migrateState(oldState) {
|
|
456
458
|
// For now, just return the state as-is
|
|
457
459
|
// Add migration logic as versions evolve
|
|
458
|
-
|
|
460
|
+
this.logger.info('Migrating state from older version', { version: oldState.version });
|
|
459
461
|
return oldState;
|
|
460
462
|
}
|
|
461
463
|
/**
|
|
@@ -473,11 +475,11 @@ export class StatePersistenceService {
|
|
|
473
475
|
// Delete oldest backups beyond keepCount
|
|
474
476
|
for (const file of backupFiles.slice(keepCount)) {
|
|
475
477
|
await fs.unlink(path.join(backupDir, file));
|
|
476
|
-
|
|
478
|
+
this.logger.info('Deleted old backup', { file });
|
|
477
479
|
}
|
|
478
480
|
}
|
|
479
481
|
catch (error) {
|
|
480
|
-
|
|
482
|
+
this.logger.error('Error cleaning backups', { error: error instanceof Error ? error.message : String(error) });
|
|
481
483
|
}
|
|
482
484
|
}
|
|
483
485
|
}
|