@litmers/cursorflow-orchestrator 0.1.20 → 0.1.28

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 (224) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/commands/cursorflow-clean.md +19 -0
  3. package/commands/cursorflow-runs.md +59 -0
  4. package/commands/cursorflow-stop.md +55 -0
  5. package/dist/cli/clean.js +171 -0
  6. package/dist/cli/clean.js.map +1 -1
  7. package/dist/cli/index.js +7 -0
  8. package/dist/cli/index.js.map +1 -1
  9. package/dist/cli/init.js +1 -1
  10. package/dist/cli/init.js.map +1 -1
  11. package/dist/cli/logs.js +83 -42
  12. package/dist/cli/logs.js.map +1 -1
  13. package/dist/cli/monitor.d.ts +7 -0
  14. package/dist/cli/monitor.js +1007 -189
  15. package/dist/cli/monitor.js.map +1 -1
  16. package/dist/cli/prepare.js +87 -3
  17. package/dist/cli/prepare.js.map +1 -1
  18. package/dist/cli/resume.js +188 -236
  19. package/dist/cli/resume.js.map +1 -1
  20. package/dist/cli/run.js +125 -3
  21. package/dist/cli/run.js.map +1 -1
  22. package/dist/cli/runs.d.ts +5 -0
  23. package/dist/cli/runs.js +214 -0
  24. package/dist/cli/runs.js.map +1 -0
  25. package/dist/cli/setup-commands.js +0 -0
  26. package/dist/cli/signal.js +1 -1
  27. package/dist/cli/signal.js.map +1 -1
  28. package/dist/cli/stop.d.ts +5 -0
  29. package/dist/cli/stop.js +215 -0
  30. package/dist/cli/stop.js.map +1 -0
  31. package/dist/cli/tasks.d.ts +10 -0
  32. package/dist/cli/tasks.js +165 -0
  33. package/dist/cli/tasks.js.map +1 -0
  34. package/dist/core/auto-recovery.d.ts +212 -0
  35. package/dist/core/auto-recovery.js +737 -0
  36. package/dist/core/auto-recovery.js.map +1 -0
  37. package/dist/core/failure-policy.d.ts +156 -0
  38. package/dist/core/failure-policy.js +488 -0
  39. package/dist/core/failure-policy.js.map +1 -0
  40. package/dist/core/orchestrator.d.ts +15 -2
  41. package/dist/core/orchestrator.js +397 -15
  42. package/dist/core/orchestrator.js.map +1 -1
  43. package/dist/core/reviewer.d.ts +2 -0
  44. package/dist/core/reviewer.js +2 -0
  45. package/dist/core/reviewer.js.map +1 -1
  46. package/dist/core/runner.d.ts +33 -10
  47. package/dist/core/runner.js +321 -146
  48. package/dist/core/runner.js.map +1 -1
  49. package/dist/services/logging/buffer.d.ts +67 -0
  50. package/dist/services/logging/buffer.js +309 -0
  51. package/dist/services/logging/buffer.js.map +1 -0
  52. package/dist/services/logging/console.d.ts +89 -0
  53. package/dist/services/logging/console.js +169 -0
  54. package/dist/services/logging/console.js.map +1 -0
  55. package/dist/services/logging/file-writer.d.ts +71 -0
  56. package/dist/services/logging/file-writer.js +516 -0
  57. package/dist/services/logging/file-writer.js.map +1 -0
  58. package/dist/services/logging/formatter.d.ts +39 -0
  59. package/dist/services/logging/formatter.js +227 -0
  60. package/dist/services/logging/formatter.js.map +1 -0
  61. package/dist/services/logging/index.d.ts +11 -0
  62. package/dist/services/logging/index.js +30 -0
  63. package/dist/services/logging/index.js.map +1 -0
  64. package/dist/services/logging/parser.d.ts +31 -0
  65. package/dist/services/logging/parser.js +222 -0
  66. package/dist/services/logging/parser.js.map +1 -0
  67. package/dist/services/process/index.d.ts +59 -0
  68. package/dist/services/process/index.js +257 -0
  69. package/dist/services/process/index.js.map +1 -0
  70. package/dist/types/agent.d.ts +20 -0
  71. package/dist/types/agent.js +6 -0
  72. package/dist/types/agent.js.map +1 -0
  73. package/dist/types/config.d.ts +65 -0
  74. package/dist/types/config.js +6 -0
  75. package/dist/types/config.js.map +1 -0
  76. package/dist/types/events.d.ts +125 -0
  77. package/dist/types/events.js +6 -0
  78. package/dist/types/events.js.map +1 -0
  79. package/dist/types/index.d.ts +12 -0
  80. package/dist/types/index.js +37 -0
  81. package/dist/types/index.js.map +1 -0
  82. package/dist/types/lane.d.ts +43 -0
  83. package/dist/types/lane.js +6 -0
  84. package/dist/types/lane.js.map +1 -0
  85. package/dist/types/logging.d.ts +71 -0
  86. package/dist/types/logging.js +16 -0
  87. package/dist/types/logging.js.map +1 -0
  88. package/dist/types/review.d.ts +17 -0
  89. package/dist/types/review.js +6 -0
  90. package/dist/types/review.js.map +1 -0
  91. package/dist/types/run.d.ts +32 -0
  92. package/dist/types/run.js +6 -0
  93. package/dist/types/run.js.map +1 -0
  94. package/dist/types/task.d.ts +71 -0
  95. package/dist/types/task.js +6 -0
  96. package/dist/types/task.js.map +1 -0
  97. package/dist/ui/components.d.ts +134 -0
  98. package/dist/ui/components.js +389 -0
  99. package/dist/ui/components.js.map +1 -0
  100. package/dist/ui/log-viewer.d.ts +49 -0
  101. package/dist/ui/log-viewer.js +449 -0
  102. package/dist/ui/log-viewer.js.map +1 -0
  103. package/dist/utils/checkpoint.d.ts +87 -0
  104. package/dist/utils/checkpoint.js +317 -0
  105. package/dist/utils/checkpoint.js.map +1 -0
  106. package/dist/utils/config.d.ts +4 -0
  107. package/dist/utils/config.js +11 -2
  108. package/dist/utils/config.js.map +1 -1
  109. package/dist/utils/cursor-agent.js.map +1 -1
  110. package/dist/utils/dependency.d.ts +74 -0
  111. package/dist/utils/dependency.js +420 -0
  112. package/dist/utils/dependency.js.map +1 -0
  113. package/dist/utils/doctor.js +10 -5
  114. package/dist/utils/doctor.js.map +1 -1
  115. package/dist/utils/enhanced-logger.d.ts +10 -33
  116. package/dist/utils/enhanced-logger.js +94 -9
  117. package/dist/utils/enhanced-logger.js.map +1 -1
  118. package/dist/utils/git.d.ts +121 -0
  119. package/dist/utils/git.js +322 -2
  120. package/dist/utils/git.js.map +1 -1
  121. package/dist/utils/health.d.ts +91 -0
  122. package/dist/utils/health.js +556 -0
  123. package/dist/utils/health.js.map +1 -0
  124. package/dist/utils/lock.d.ts +95 -0
  125. package/dist/utils/lock.js +332 -0
  126. package/dist/utils/lock.js.map +1 -0
  127. package/dist/utils/log-buffer.d.ts +17 -0
  128. package/dist/utils/log-buffer.js +14 -0
  129. package/dist/utils/log-buffer.js.map +1 -0
  130. package/dist/utils/log-constants.d.ts +23 -0
  131. package/dist/utils/log-constants.js +28 -0
  132. package/dist/utils/log-constants.js.map +1 -0
  133. package/dist/utils/log-formatter.d.ts +9 -0
  134. package/dist/utils/log-formatter.js +113 -70
  135. package/dist/utils/log-formatter.js.map +1 -1
  136. package/dist/utils/log-service.d.ts +19 -0
  137. package/dist/utils/log-service.js +47 -0
  138. package/dist/utils/log-service.js.map +1 -0
  139. package/dist/utils/logger.d.ts +46 -27
  140. package/dist/utils/logger.js +82 -60
  141. package/dist/utils/logger.js.map +1 -1
  142. package/dist/utils/process-manager.d.ts +21 -0
  143. package/dist/utils/process-manager.js +138 -0
  144. package/dist/utils/process-manager.js.map +1 -0
  145. package/dist/utils/retry.d.ts +121 -0
  146. package/dist/utils/retry.js +374 -0
  147. package/dist/utils/retry.js.map +1 -0
  148. package/dist/utils/run-service.d.ts +88 -0
  149. package/dist/utils/run-service.js +412 -0
  150. package/dist/utils/run-service.js.map +1 -0
  151. package/dist/utils/state.d.ts +58 -2
  152. package/dist/utils/state.js +306 -3
  153. package/dist/utils/state.js.map +1 -1
  154. package/dist/utils/task-service.d.ts +82 -0
  155. package/dist/utils/task-service.js +348 -0
  156. package/dist/utils/task-service.js.map +1 -0
  157. package/dist/utils/types.d.ts +2 -272
  158. package/dist/utils/types.js +16 -0
  159. package/dist/utils/types.js.map +1 -1
  160. package/package.json +38 -23
  161. package/scripts/ai-security-check.js +0 -1
  162. package/scripts/local-security-gate.sh +0 -0
  163. package/scripts/monitor-lanes.sh +94 -0
  164. package/scripts/patches/test-cursor-agent.js +0 -1
  165. package/scripts/release.sh +0 -0
  166. package/scripts/setup-security.sh +0 -0
  167. package/scripts/stream-logs.sh +72 -0
  168. package/scripts/verify-and-fix.sh +0 -0
  169. package/src/cli/clean.ts +180 -0
  170. package/src/cli/index.ts +7 -0
  171. package/src/cli/init.ts +1 -1
  172. package/src/cli/logs.ts +79 -42
  173. package/src/cli/monitor.ts +1815 -899
  174. package/src/cli/prepare.ts +97 -3
  175. package/src/cli/resume.ts +220 -277
  176. package/src/cli/run.ts +154 -3
  177. package/src/cli/runs.ts +212 -0
  178. package/src/cli/setup-commands.ts +0 -0
  179. package/src/cli/signal.ts +1 -1
  180. package/src/cli/stop.ts +209 -0
  181. package/src/cli/tasks.ts +154 -0
  182. package/src/core/auto-recovery.ts +909 -0
  183. package/src/core/failure-policy.ts +592 -0
  184. package/src/core/orchestrator.ts +1136 -675
  185. package/src/core/reviewer.ts +4 -0
  186. package/src/core/runner.ts +1443 -1217
  187. package/src/services/logging/buffer.ts +326 -0
  188. package/src/services/logging/console.ts +193 -0
  189. package/src/services/logging/file-writer.ts +526 -0
  190. package/src/services/logging/formatter.ts +268 -0
  191. package/src/services/logging/index.ts +16 -0
  192. package/src/services/logging/parser.ts +232 -0
  193. package/src/services/process/index.ts +261 -0
  194. package/src/types/agent.ts +24 -0
  195. package/src/types/config.ts +79 -0
  196. package/src/types/events.ts +156 -0
  197. package/src/types/index.ts +29 -0
  198. package/src/types/lane.ts +56 -0
  199. package/src/types/logging.ts +96 -0
  200. package/src/types/review.ts +20 -0
  201. package/src/types/run.ts +37 -0
  202. package/src/types/task.ts +79 -0
  203. package/src/ui/components.ts +430 -0
  204. package/src/ui/log-viewer.ts +485 -0
  205. package/src/utils/checkpoint.ts +374 -0
  206. package/src/utils/config.ts +11 -2
  207. package/src/utils/cursor-agent.ts +1 -1
  208. package/src/utils/dependency.ts +482 -0
  209. package/src/utils/doctor.ts +11 -5
  210. package/src/utils/enhanced-logger.ts +108 -49
  211. package/src/utils/git.ts +871 -499
  212. package/src/utils/health.ts +596 -0
  213. package/src/utils/lock.ts +346 -0
  214. package/src/utils/log-buffer.ts +28 -0
  215. package/src/utils/log-constants.ts +26 -0
  216. package/src/utils/log-formatter.ts +120 -37
  217. package/src/utils/log-service.ts +49 -0
  218. package/src/utils/logger.ts +100 -51
  219. package/src/utils/process-manager.ts +100 -0
  220. package/src/utils/retry.ts +413 -0
  221. package/src/utils/run-service.ts +433 -0
  222. package/src/utils/state.ts +369 -3
  223. package/src/utils/task-service.ts +370 -0
  224. package/src/utils/types.ts +2 -315
@@ -1,128 +1,146 @@
1
1
  "use strict";
2
2
  /**
3
3
  * Logging utilities for CursorFlow
4
+ *
5
+ * 통일된 로그 형식: [HH:MM:SS] emoji TYPE message
6
+ * 컨텍스트 포함 시: [HH:MM:SS] [context] emoji TYPE message
4
7
  */
5
8
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.COLORS = exports.LogLevel = void 0;
9
+ exports.LogLevel = exports.COLORS = void 0;
7
10
  exports.setLogLevel = setLogLevel;
11
+ exports.getLogLevel = getLogLevel;
8
12
  exports.error = error;
9
13
  exports.warn = warn;
10
14
  exports.info = info;
11
15
  exports.success = success;
12
16
  exports.debug = debug;
13
17
  exports.progress = progress;
18
+ exports.withContext = withContext;
14
19
  exports.section = section;
20
+ exports.raw = raw;
15
21
  exports.log = log;
16
- exports.json = json;
17
22
  exports.createSpinner = createSpinner;
18
- var LogLevel;
19
- (function (LogLevel) {
20
- LogLevel[LogLevel["error"] = 0] = "error";
21
- LogLevel[LogLevel["warn"] = 1] = "warn";
22
- LogLevel[LogLevel["info"] = 2] = "info";
23
- LogLevel[LogLevel["debug"] = 3] = "debug";
24
- })(LogLevel || (exports.LogLevel = LogLevel = {}));
25
- exports.COLORS = {
26
- reset: '\x1b[0m',
27
- red: '\x1b[31m',
28
- yellow: '\x1b[33m',
29
- green: '\x1b[32m',
30
- blue: '\x1b[34m',
31
- cyan: '\x1b[36m',
32
- magenta: '\x1b[35m',
33
- gray: '\x1b[90m',
34
- bold: '\x1b[1m',
35
- };
36
- let currentLogLevel = LogLevel.info;
23
+ const log_constants_1 = require("./log-constants");
24
+ Object.defineProperty(exports, "COLORS", { enumerable: true, get: function () { return log_constants_1.COLORS; } });
25
+ Object.defineProperty(exports, "LogLevel", { enumerable: true, get: function () { return log_constants_1.LogLevel; } });
26
+ const log_formatter_1 = require("./log-formatter");
27
+ let currentLogLevel = log_constants_1.LogLevel.info;
37
28
  /**
38
29
  * Set log level
39
30
  */
40
31
  function setLogLevel(level) {
41
32
  if (typeof level === 'string') {
42
- currentLogLevel = LogLevel[level] ?? LogLevel.info;
33
+ currentLogLevel = log_constants_1.LogLevel[level] ?? log_constants_1.LogLevel.info;
43
34
  }
44
35
  else {
45
36
  currentLogLevel = level;
46
37
  }
47
38
  }
48
39
  /**
49
- * Format message with timestamp
40
+ * Get current log level
50
41
  */
51
- function formatMessage(level, message, emoji = '') {
52
- const timestamp = new Date().toISOString();
53
- const prefix = emoji ? `${emoji} ` : '';
54
- const lines = String(message).split('\n');
55
- return lines.map(line => `[${timestamp}] [${level.toUpperCase()}] ${prefix}${line}`).join('\n');
42
+ function getLogLevel() {
43
+ return currentLogLevel;
56
44
  }
57
45
  /**
58
- * Log with color
46
+ * Internal log function that uses formatMessageForConsole
59
47
  */
60
- function logWithColor(color, level, message, emoji = '') {
61
- if (LogLevel[level] > currentLogLevel) {
48
+ function logInternal(type, message, options = {}) {
49
+ const level = log_constants_1.LogLevel[type] ?? log_constants_1.LogLevel.info;
50
+ if (level > currentLogLevel) {
62
51
  return;
63
52
  }
64
- const formatted = formatMessage(level, message, emoji);
65
- console.log(`${color}${formatted}${exports.COLORS.reset}`);
53
+ const formatted = (0, log_formatter_1.formatMessageForConsole)({
54
+ type: type,
55
+ role: 'system',
56
+ content: message,
57
+ timestamp: Date.now(),
58
+ }, {
59
+ includeTimestamp: !options.noTimestamp,
60
+ context: options.context,
61
+ compact: !options.box
62
+ });
63
+ console.log(formatted);
66
64
  }
65
+ // ============================================================================
66
+ // Primary Logging Functions
67
+ // ============================================================================
67
68
  /**
68
69
  * Error log
69
70
  */
70
- function error(message, emoji = '❌') {
71
- logWithColor(exports.COLORS.red, 'error', message, emoji);
71
+ function error(message, options = {}) {
72
+ const opts = typeof options === 'string' ? { emoji: options } : options;
73
+ logInternal('error', message, opts);
72
74
  }
73
75
  /**
74
76
  * Warning log
75
77
  */
76
- function warn(message, emoji = '⚠️') {
77
- logWithColor(exports.COLORS.yellow, 'warn', message, emoji);
78
+ function warn(message, options = {}) {
79
+ const opts = typeof options === 'string' ? { emoji: options } : options;
80
+ logInternal('warn', message, opts);
78
81
  }
79
82
  /**
80
83
  * Info log
81
84
  */
82
- function info(message, emoji = 'ℹ️') {
83
- logWithColor(exports.COLORS.cyan, 'info', message, emoji);
85
+ function info(message, options = {}) {
86
+ const opts = typeof options === 'string' ? { emoji: options } : options;
87
+ logInternal('info', message, opts);
84
88
  }
85
89
  /**
86
90
  * Success log
87
91
  */
88
- function success(message, emoji = '✅') {
89
- logWithColor(exports.COLORS.green, 'info', message, emoji);
92
+ function success(message, options = {}) {
93
+ const opts = typeof options === 'string' ? { emoji: options } : options;
94
+ logInternal('success', message, opts);
90
95
  }
91
96
  /**
92
97
  * Debug log
93
98
  */
94
- function debug(message, emoji = '🔍') {
95
- logWithColor(exports.COLORS.gray, 'debug', message, emoji);
99
+ function debug(message, options = {}) {
100
+ const opts = typeof options === 'string' ? { emoji: options } : options;
101
+ logInternal('debug', message, opts);
96
102
  }
97
103
  /**
98
104
  * Progress log
99
105
  */
100
- function progress(message, emoji = '🔄') {
101
- logWithColor(exports.COLORS.blue, 'info', message, emoji);
106
+ function progress(message, options = {}) {
107
+ const opts = typeof options === 'string' ? { emoji: options } : options;
108
+ logInternal('progress', message, opts);
109
+ }
110
+ /**
111
+ * Create a context-bound logger
112
+ */
113
+ function withContext(context) {
114
+ return {
115
+ error: (message, options) => error(message, { ...options, context }),
116
+ warn: (message, options) => warn(message, { ...options, context }),
117
+ info: (message, options) => info(message, { ...options, context }),
118
+ success: (message, options) => success(message, { ...options, context }),
119
+ debug: (message, options) => debug(message, { ...options, context }),
120
+ progress: (message, options) => progress(message, { ...options, context }),
121
+ };
102
122
  }
103
123
  /**
104
124
  * Section header
105
125
  */
106
126
  function section(message) {
107
127
  console.log('');
108
- console.log(`${exports.COLORS.cyan}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${exports.COLORS.reset}`);
109
- console.log(`${exports.COLORS.cyan} ${message}${exports.COLORS.reset}`);
110
- console.log(`${exports.COLORS.cyan}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${exports.COLORS.reset}`);
128
+ console.log(`${log_constants_1.COLORS.cyan}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${log_constants_1.COLORS.reset}`);
129
+ console.log(`${log_constants_1.COLORS.cyan} ${message}${log_constants_1.COLORS.reset}`);
130
+ console.log(`${log_constants_1.COLORS.cyan}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${log_constants_1.COLORS.reset}`);
111
131
  console.log('');
112
132
  }
113
133
  /**
114
- * Simple log without formatting
134
+ * Raw output (direct to stdout)
115
135
  */
116
- function log(message) {
117
- console.log(message);
136
+ function raw(message) {
137
+ process.stdout.write(message);
118
138
  }
119
139
  /**
120
- * Log JSON data (pretty print in debug mode)
140
+ * Simple log without formatting
121
141
  */
122
- function json(data) {
123
- if (currentLogLevel >= LogLevel.debug) {
124
- console.log(JSON.stringify(data, null, 2));
125
- }
142
+ function log(message) {
143
+ console.log(message);
126
144
  }
127
145
  /**
128
146
  * Create spinner (simple implementation)
@@ -131,12 +149,13 @@ function createSpinner(message) {
131
149
  const frames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
132
150
  let i = 0;
133
151
  let interval = null;
152
+ let currentMessage = message;
134
153
  const spinner = {
135
154
  start() {
136
- process.stdout.write(`${message} ${frames[0]}`);
155
+ process.stdout.write(`${currentMessage} ${frames[0]}`);
137
156
  interval = setInterval(() => {
138
157
  i = (i + 1) % frames.length;
139
- process.stdout.write(`\r${message} ${frames[i]}`);
158
+ process.stdout.write(`\r${currentMessage} ${frames[i]}`);
140
159
  }, 80);
141
160
  },
142
161
  stop(finalMessage = null) {
@@ -150,10 +169,13 @@ function createSpinner(message) {
150
169
  }
151
170
  },
152
171
  succeed(message) {
153
- this.stop(`${exports.COLORS.green}✓${exports.COLORS.reset} ${message}`);
172
+ this.stop(`${log_constants_1.COLORS.green}✓${log_constants_1.COLORS.reset} ${message}`);
154
173
  },
155
174
  fail(message) {
156
- this.stop(`${exports.COLORS.red}✗${exports.COLORS.reset} ${message}`);
175
+ this.stop(`${log_constants_1.COLORS.red}✗${log_constants_1.COLORS.reset} ${message}`);
176
+ },
177
+ update(message) {
178
+ currentMessage = message;
157
179
  },
158
180
  };
159
181
  return spinner;
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export declare class ProcessManager {
2
+ /**
3
+ * Check if a process is running by its PID
4
+ */
5
+ static isProcessRunning(pid: number): boolean;
6
+ /**
7
+ * Kill a process by its PID
8
+ * @param pid Process ID
9
+ * @param signal Signal to send (default: SIGTERM)
10
+ */
11
+ static killProcess(pid: number, signal?: string): boolean;
12
+ /**
13
+ * Kill a process and all its child processes
14
+ * Cross-platform implementation
15
+ */
16
+ static killProcessTree(pid: number): boolean;
17
+ /**
18
+ * Find cursorflow related processes using pgrep (Linux/macOS only)
19
+ */
20
+ static findCursorFlowProcesses(): number[];
21
+ }
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ProcessManager = void 0;
37
+ const child_process_1 = require("child_process");
38
+ const os = __importStar(require("os"));
39
+ class ProcessManager {
40
+ /**
41
+ * Check if a process is running by its PID
42
+ */
43
+ static isProcessRunning(pid) {
44
+ try {
45
+ // Signal 0 checks for process existence without killing it
46
+ process.kill(pid, 0);
47
+ return true;
48
+ }
49
+ catch (e) {
50
+ return false;
51
+ }
52
+ }
53
+ /**
54
+ * Kill a process by its PID
55
+ * @param pid Process ID
56
+ * @param signal Signal to send (default: SIGTERM)
57
+ */
58
+ static killProcess(pid, signal = 'SIGTERM') {
59
+ try {
60
+ if (os.platform() === 'win32') {
61
+ // Windows doesn't support signals in the same way, use taskkill
62
+ const result = (0, child_process_1.spawnSync)('taskkill', ['/F', '/PID', String(pid)]);
63
+ return result.status === 0;
64
+ }
65
+ else {
66
+ process.kill(pid, signal);
67
+ return true;
68
+ }
69
+ }
70
+ catch (e) {
71
+ return false;
72
+ }
73
+ }
74
+ /**
75
+ * Kill a process and all its child processes
76
+ * Cross-platform implementation
77
+ */
78
+ static killProcessTree(pid) {
79
+ try {
80
+ if (os.platform() === 'win32') {
81
+ // Windows: /T flag kills child processes too
82
+ const result = (0, child_process_1.spawnSync)('taskkill', ['/F', '/T', '/PID', String(pid)]);
83
+ return result.status === 0;
84
+ }
85
+ else {
86
+ // Linux/macOS: Find and kill children recursively or use pkill
87
+ // A simple approach is to use pgrep to find children
88
+ const result = (0, child_process_1.spawnSync)('pgrep', ['-P', String(pid)], { encoding: 'utf8' });
89
+ if (result.status === 0 && result.stdout) {
90
+ const children = result.stdout.split('\n').map(s => parseInt(s.trim())).filter(n => !isNaN(n));
91
+ for (const child of children) {
92
+ this.killProcessTree(child);
93
+ }
94
+ }
95
+ // Kill the process itself
96
+ return this.killProcess(pid);
97
+ }
98
+ }
99
+ catch (e) {
100
+ // Fallback to simple kill
101
+ return this.killProcess(pid);
102
+ }
103
+ }
104
+ /**
105
+ * Find cursorflow related processes using pgrep (Linux/macOS only)
106
+ */
107
+ static findCursorFlowProcesses() {
108
+ if (os.platform() === 'win32') {
109
+ // Basic Windows implementation using tasklist if needed,
110
+ // but for now focusing on core requirements
111
+ return [];
112
+ }
113
+ try {
114
+ // Find processes with 'cursorflow' in their command line,
115
+ // avoiding unrelated matches by looking for specific execution patterns
116
+ const result = (0, child_process_1.spawnSync)('pgrep', ['-f', 'cursorflow.*(index|runner|orchestrator)'], { encoding: 'utf8' });
117
+ if (result.status !== 0) {
118
+ // Fallback to simpler pattern
119
+ const fallback = (0, child_process_1.spawnSync)('pgrep', ['-f', 'cursorflow'], { encoding: 'utf8' });
120
+ if (fallback.status !== 0)
121
+ return [];
122
+ return fallback.stdout
123
+ .split('\n')
124
+ .map(s => parseInt(s.trim()))
125
+ .filter(n => !isNaN(n) && n !== process.pid);
126
+ }
127
+ return result.stdout
128
+ .split('\n')
129
+ .map(s => parseInt(s.trim()))
130
+ .filter(n => !isNaN(n) && n !== process.pid);
131
+ }
132
+ catch (e) {
133
+ return [];
134
+ }
135
+ }
136
+ }
137
+ exports.ProcessManager = ProcessManager;
138
+ //# sourceMappingURL=process-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-manager.js","sourceRoot":"","sources":["../../src/utils/process-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Enhanced retry logic with exponential backoff and circuit breaker
3
+ */
4
+ export interface RetryConfig {
5
+ /** Maximum number of retries */
6
+ maxRetries: number;
7
+ /** Base delay in milliseconds */
8
+ baseDelayMs: number;
9
+ /** Maximum delay in milliseconds */
10
+ maxDelayMs: number;
11
+ /** Backoff multiplier */
12
+ backoffFactor: number;
13
+ /** Add random jitter to delays */
14
+ jitter: boolean;
15
+ /** Timeout for each attempt in milliseconds */
16
+ attemptTimeoutMs?: number;
17
+ }
18
+ export declare const DEFAULT_RETRY_CONFIG: RetryConfig;
19
+ export interface CircuitBreakerConfig {
20
+ /** Number of consecutive failures before opening circuit */
21
+ failureThreshold: number;
22
+ /** Time in milliseconds before attempting to close circuit */
23
+ resetTimeoutMs: number;
24
+ /** Number of successful calls needed to close circuit */
25
+ successThreshold: number;
26
+ }
27
+ export declare const DEFAULT_CIRCUIT_BREAKER_CONFIG: CircuitBreakerConfig;
28
+ export declare enum CircuitState {
29
+ CLOSED = "CLOSED",// Normal operation
30
+ OPEN = "OPEN",// Blocking calls
31
+ HALF_OPEN = "HALF_OPEN"
32
+ }
33
+ /**
34
+ * Circuit breaker implementation for managing service availability
35
+ */
36
+ export declare class CircuitBreaker {
37
+ private state;
38
+ private failureCount;
39
+ private successCount;
40
+ private lastFailureTime;
41
+ private readonly config;
42
+ private readonly name;
43
+ constructor(name: string, config?: Partial<CircuitBreakerConfig>);
44
+ /**
45
+ * Check if circuit allows a call
46
+ */
47
+ canCall(): boolean;
48
+ /**
49
+ * Record a successful call
50
+ */
51
+ recordSuccess(): void;
52
+ /**
53
+ * Record a failed call
54
+ */
55
+ recordFailure(): void;
56
+ /**
57
+ * Get current circuit state
58
+ */
59
+ getState(): CircuitState;
60
+ /**
61
+ * Get time until circuit might close (for OPEN state)
62
+ */
63
+ getTimeUntilRetry(): number;
64
+ /**
65
+ * Force reset the circuit breaker
66
+ */
67
+ reset(): void;
68
+ /**
69
+ * Get circuit breaker status for monitoring
70
+ */
71
+ getStatus(): {
72
+ state: CircuitState;
73
+ failureCount: number;
74
+ timeUntilRetry: number;
75
+ };
76
+ }
77
+ /**
78
+ * Get or create a circuit breaker by name
79
+ */
80
+ export declare function getCircuitBreaker(name: string, config?: Partial<CircuitBreakerConfig>): CircuitBreaker;
81
+ /**
82
+ * Calculate delay with exponential backoff and optional jitter
83
+ */
84
+ export declare function calculateDelay(attempt: number, config: RetryConfig): number;
85
+ /**
86
+ * Sleep for specified milliseconds
87
+ */
88
+ export declare function sleep(ms: number): Promise<void>;
89
+ /**
90
+ * Wrap a promise with timeout
91
+ */
92
+ export declare function withTimeout<T>(promise: Promise<T>, timeoutMs: number, message?: string): Promise<T>;
93
+ export interface RetryResult<T> {
94
+ success: boolean;
95
+ result?: T;
96
+ error?: Error;
97
+ attempts: number;
98
+ totalTimeMs: number;
99
+ }
100
+ /**
101
+ * Execute a function with enhanced retry logic
102
+ */
103
+ export declare function withEnhancedRetry<T>(fn: () => Promise<T>, options?: {
104
+ config?: Partial<RetryConfig>;
105
+ circuitBreaker?: CircuitBreaker | string;
106
+ shouldRetry?: (error: Error, attempt: number) => boolean;
107
+ onRetry?: (error: Error, attempt: number, delayMs: number) => void;
108
+ label?: string;
109
+ }): Promise<RetryResult<T>>;
110
+ /**
111
+ * Check if an error is transient and worth retrying
112
+ */
113
+ export declare function isTransientError(error: Error): boolean;
114
+ /**
115
+ * Check if an error is permanent and should not be retried
116
+ */
117
+ export declare function isPermanentError(error: Error): boolean;
118
+ /**
119
+ * Default retry predicate
120
+ */
121
+ export declare function defaultShouldRetry(error: Error, attempt: number): boolean;