@litmers/cursorflow-orchestrator 0.1.20 → 0.1.26

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 +9 -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 +4 -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 +8 -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 +392 -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 +4 -3
  175. package/src/cli/resume.ts +220 -277
  176. package/src/cli/run.ts +9 -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 +1131 -675
  185. package/src/core/reviewer.ts +4 -0
  186. package/src/core/runner.ts +388 -162
  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 +374 -2
  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
@@ -0,0 +1,332 @@
1
+ "use strict";
2
+ /**
3
+ * Enhanced file-based locking with async support and stale lock detection
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.LockManager = exports.DEFAULT_LOCK_OPTIONS = void 0;
40
+ exports.isProcessRunning = isProcessRunning;
41
+ exports.getLockDir = getLockDir;
42
+ exports.ensureLockDir = ensureLockDir;
43
+ exports.readLockInfo = readLockInfo;
44
+ exports.isLockStale = isLockStale;
45
+ exports.tryAcquireLockSync = tryAcquireLockSync;
46
+ exports.releaseLockSync = releaseLockSync;
47
+ exports.acquireLock = acquireLock;
48
+ exports.releaseLock = releaseLock;
49
+ exports.withLock = withLock;
50
+ exports.withLockSync = withLockSync;
51
+ exports.cleanStaleLocks = cleanStaleLocks;
52
+ exports.getLockStatus = getLockStatus;
53
+ const fs = __importStar(require("fs"));
54
+ const path_1 = require("./path");
55
+ exports.DEFAULT_LOCK_OPTIONS = {
56
+ timeoutMs: 30000,
57
+ retryDelayMs: 100,
58
+ staleTimeoutMs: 60000,
59
+ operation: 'unknown',
60
+ };
61
+ /**
62
+ * Check if a process is still running
63
+ */
64
+ function isProcessRunning(pid) {
65
+ try {
66
+ // Sending signal 0 checks if process exists without actually signaling it
67
+ process.kill(pid, 0);
68
+ return true;
69
+ }
70
+ catch {
71
+ return false;
72
+ }
73
+ }
74
+ /**
75
+ * Get the lock directory for a given base path
76
+ */
77
+ function getLockDir(basePath) {
78
+ return (0, path_1.safeJoin)(basePath, '_cursorflow', 'locks');
79
+ }
80
+ /**
81
+ * Ensure lock directory exists
82
+ */
83
+ function ensureLockDir(basePath) {
84
+ const lockDir = getLockDir(basePath);
85
+ if (!fs.existsSync(lockDir)) {
86
+ fs.mkdirSync(lockDir, { recursive: true });
87
+ }
88
+ return lockDir;
89
+ }
90
+ /**
91
+ * Read lock file info
92
+ */
93
+ function readLockInfo(lockFile) {
94
+ try {
95
+ if (!fs.existsSync(lockFile)) {
96
+ return null;
97
+ }
98
+ const content = fs.readFileSync(lockFile, 'utf8');
99
+ return JSON.parse(content);
100
+ }
101
+ catch {
102
+ return null;
103
+ }
104
+ }
105
+ /**
106
+ * Check if a lock is stale
107
+ */
108
+ function isLockStale(lockInfo, staleTimeoutMs) {
109
+ // Check if process is dead
110
+ if (!isProcessRunning(lockInfo.pid)) {
111
+ return true;
112
+ }
113
+ // Check if lock has expired
114
+ if (Date.now() - lockInfo.timestamp > staleTimeoutMs) {
115
+ return true;
116
+ }
117
+ return false;
118
+ }
119
+ /**
120
+ * Try to acquire a lock synchronously (for backward compatibility)
121
+ */
122
+ function tryAcquireLockSync(lockFile, options = {}) {
123
+ const opts = { ...exports.DEFAULT_LOCK_OPTIONS, ...options };
124
+ // Check for existing lock
125
+ const existingLock = readLockInfo(lockFile);
126
+ if (existingLock) {
127
+ if (!isLockStale(existingLock, opts.staleTimeoutMs)) {
128
+ return false;
129
+ }
130
+ // Stale lock - remove it
131
+ try {
132
+ fs.unlinkSync(lockFile);
133
+ }
134
+ catch {
135
+ return false;
136
+ }
137
+ }
138
+ // Try to create lock atomically
139
+ const lockInfo = {
140
+ pid: process.pid,
141
+ timestamp: Date.now(),
142
+ operation: opts.operation,
143
+ hostname: require('os').hostname(),
144
+ };
145
+ try {
146
+ fs.writeFileSync(lockFile, JSON.stringify(lockInfo, null, 2), { flag: 'wx' });
147
+ return true;
148
+ }
149
+ catch {
150
+ return false;
151
+ }
152
+ }
153
+ /**
154
+ * Release a lock synchronously
155
+ */
156
+ function releaseLockSync(lockFile) {
157
+ try {
158
+ const lockInfo = readLockInfo(lockFile);
159
+ // Only release if we own the lock
160
+ if (lockInfo && lockInfo.pid === process.pid) {
161
+ fs.unlinkSync(lockFile);
162
+ }
163
+ }
164
+ catch {
165
+ // Ignore errors
166
+ }
167
+ }
168
+ /**
169
+ * Acquire a lock with async waiting
170
+ */
171
+ async function acquireLock(lockFile, options = {}) {
172
+ const opts = { ...exports.DEFAULT_LOCK_OPTIONS, ...options };
173
+ const startTime = Date.now();
174
+ while (Date.now() - startTime < opts.timeoutMs) {
175
+ if (tryAcquireLockSync(lockFile, opts)) {
176
+ return true;
177
+ }
178
+ // Wait before retrying with jitter
179
+ const jitter = Math.random() * opts.retryDelayMs * 0.5;
180
+ await new Promise(resolve => setTimeout(resolve, opts.retryDelayMs + jitter));
181
+ }
182
+ return false;
183
+ }
184
+ /**
185
+ * Release a lock
186
+ */
187
+ async function releaseLock(lockFile) {
188
+ releaseLockSync(lockFile);
189
+ }
190
+ /**
191
+ * Execute a function while holding a lock
192
+ */
193
+ async function withLock(lockFile, fn, options = {}) {
194
+ const acquired = await acquireLock(lockFile, options);
195
+ if (!acquired) {
196
+ throw new Error(`Failed to acquire lock: ${lockFile} (timeout: ${options.timeoutMs || exports.DEFAULT_LOCK_OPTIONS.timeoutMs}ms)`);
197
+ }
198
+ try {
199
+ return await fn();
200
+ }
201
+ finally {
202
+ await releaseLock(lockFile);
203
+ }
204
+ }
205
+ /**
206
+ * Execute a synchronous function while holding a lock
207
+ */
208
+ function withLockSync(lockFile, fn, options = {}) {
209
+ const opts = { ...exports.DEFAULT_LOCK_OPTIONS, ...options };
210
+ const startTime = Date.now();
211
+ // Busy wait for lock (synchronous)
212
+ while (Date.now() - startTime < opts.timeoutMs) {
213
+ if (tryAcquireLockSync(lockFile, opts)) {
214
+ try {
215
+ return fn();
216
+ }
217
+ finally {
218
+ releaseLockSync(lockFile);
219
+ }
220
+ }
221
+ // Sync sleep
222
+ const end = Date.now() + opts.retryDelayMs;
223
+ while (Date.now() < end) { /* busy wait */ }
224
+ }
225
+ throw new Error(`Failed to acquire lock: ${lockFile} (timeout: ${opts.timeoutMs}ms)`);
226
+ }
227
+ /**
228
+ * Clean up stale locks in a directory
229
+ */
230
+ function cleanStaleLocks(lockDir, staleTimeoutMs = exports.DEFAULT_LOCK_OPTIONS.staleTimeoutMs) {
231
+ if (!fs.existsSync(lockDir)) {
232
+ return 0;
233
+ }
234
+ let cleaned = 0;
235
+ const files = fs.readdirSync(lockDir);
236
+ for (const file of files) {
237
+ if (!file.endsWith('.lock'))
238
+ continue;
239
+ const lockFile = (0, path_1.safeJoin)(lockDir, file);
240
+ const lockInfo = readLockInfo(lockFile);
241
+ if (lockInfo && isLockStale(lockInfo, staleTimeoutMs)) {
242
+ try {
243
+ fs.unlinkSync(lockFile);
244
+ cleaned++;
245
+ }
246
+ catch {
247
+ // Ignore
248
+ }
249
+ }
250
+ }
251
+ return cleaned;
252
+ }
253
+ /**
254
+ * Get status of all locks in a directory
255
+ */
256
+ function getLockStatus(lockDir) {
257
+ if (!fs.existsSync(lockDir)) {
258
+ return [];
259
+ }
260
+ const result = [];
261
+ const files = fs.readdirSync(lockDir);
262
+ for (const file of files) {
263
+ if (!file.endsWith('.lock'))
264
+ continue;
265
+ const lockFile = (0, path_1.safeJoin)(lockDir, file);
266
+ const lockInfo = readLockInfo(lockFile);
267
+ if (lockInfo) {
268
+ result.push({
269
+ file,
270
+ info: lockInfo,
271
+ stale: isLockStale(lockInfo, exports.DEFAULT_LOCK_OPTIONS.staleTimeoutMs),
272
+ });
273
+ }
274
+ }
275
+ return result;
276
+ }
277
+ /**
278
+ * Named lock manager for managing multiple locks
279
+ */
280
+ class LockManager {
281
+ basePath;
282
+ heldLocks = new Set();
283
+ constructor(basePath) {
284
+ this.basePath = basePath;
285
+ ensureLockDir(basePath);
286
+ // Register cleanup on process exit
287
+ process.on('exit', () => this.releaseAll());
288
+ process.on('SIGINT', () => {
289
+ this.releaseAll();
290
+ process.exit(130);
291
+ });
292
+ process.on('SIGTERM', () => {
293
+ this.releaseAll();
294
+ process.exit(143);
295
+ });
296
+ }
297
+ getLockPath(name) {
298
+ return (0, path_1.safeJoin)(getLockDir(this.basePath), `${name}.lock`);
299
+ }
300
+ async acquire(name, options = {}) {
301
+ const lockPath = this.getLockPath(name);
302
+ const acquired = await acquireLock(lockPath, options);
303
+ if (acquired) {
304
+ this.heldLocks.add(name);
305
+ }
306
+ return acquired;
307
+ }
308
+ async release(name) {
309
+ const lockPath = this.getLockPath(name);
310
+ await releaseLock(lockPath);
311
+ this.heldLocks.delete(name);
312
+ }
313
+ releaseAll() {
314
+ for (const name of this.heldLocks) {
315
+ const lockPath = this.getLockPath(name);
316
+ releaseLockSync(lockPath);
317
+ }
318
+ this.heldLocks.clear();
319
+ }
320
+ async withLock(name, fn, options = {}) {
321
+ const lockPath = this.getLockPath(name);
322
+ return withLock(lockPath, fn, options);
323
+ }
324
+ cleanStale(staleTimeoutMs) {
325
+ return cleanStaleLocks(getLockDir(this.basePath), staleTimeoutMs);
326
+ }
327
+ getStatus() {
328
+ return getLockStatus(getLockDir(this.basePath));
329
+ }
330
+ }
331
+ exports.LockManager = LockManager;
332
+ //# sourceMappingURL=lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/utils/lock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * LogBufferService - Scrollable log buffer for TUI monitor
3
+ *
4
+ * This file is kept for backward compatibility.
5
+ * New code should import from '../services/logging/buffer' directly.
6
+ */
7
+ export { LogBufferService, createLogBuffer, type LogBufferOptions, type LogFilter, type LogBufferState, } from '../services/logging/buffer';
8
+ export type { JsonLogEntry, BufferedLogEntry } from '../types/logging';
9
+ /**
10
+ * Log viewport interface for backward compatibility
11
+ */
12
+ export interface LogViewport {
13
+ entries: import('../types/logging').BufferedLogEntry[];
14
+ totalCount: number;
15
+ offset: number;
16
+ visibleCount: number;
17
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ /**
3
+ * LogBufferService - Scrollable log buffer for TUI monitor
4
+ *
5
+ * This file is kept for backward compatibility.
6
+ * New code should import from '../services/logging/buffer' directly.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.createLogBuffer = exports.LogBufferService = void 0;
10
+ // Re-export everything from the new services/logging/buffer module
11
+ var buffer_1 = require("../services/logging/buffer");
12
+ Object.defineProperty(exports, "LogBufferService", { enumerable: true, get: function () { return buffer_1.LogBufferService; } });
13
+ Object.defineProperty(exports, "createLogBuffer", { enumerable: true, get: function () { return buffer_1.createLogBuffer; } });
14
+ //# sourceMappingURL=log-buffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-buffer.js","sourceRoot":"","sources":["../../src/utils/log-buffer.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,mEAAmE;AACnE,qDAMoC;AALlC,0GAAA,gBAAgB,OAAA;AAChB,yGAAA,eAAe,OAAA"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Shared log constants to avoid circular dependencies
3
+ */
4
+ export declare const COLORS: {
5
+ reset: string;
6
+ red: string;
7
+ yellow: string;
8
+ green: string;
9
+ blue: string;
10
+ cyan: string;
11
+ magenta: string;
12
+ gray: string;
13
+ bold: string;
14
+ white: string;
15
+ };
16
+ export declare enum LogLevel {
17
+ error = 0,
18
+ warn = 1,
19
+ info = 2,
20
+ success = 2,
21
+ progress = 2,
22
+ debug = 3
23
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /**
3
+ * Shared log constants to avoid circular dependencies
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.LogLevel = exports.COLORS = void 0;
7
+ exports.COLORS = {
8
+ reset: '\x1b[0m',
9
+ red: '\x1b[31m',
10
+ yellow: '\x1b[33m',
11
+ green: '\x1b[32m',
12
+ blue: '\x1b[34m',
13
+ cyan: '\x1b[36m',
14
+ magenta: '\x1b[35m',
15
+ gray: '\x1b[90m',
16
+ bold: '\x1b[1m',
17
+ white: '\x1b[37m',
18
+ };
19
+ var LogLevel;
20
+ (function (LogLevel) {
21
+ LogLevel[LogLevel["error"] = 0] = "error";
22
+ LogLevel[LogLevel["warn"] = 1] = "warn";
23
+ LogLevel[LogLevel["info"] = 2] = "info";
24
+ LogLevel[LogLevel["success"] = 2] = "success";
25
+ LogLevel[LogLevel["progress"] = 2] = "progress";
26
+ LogLevel[LogLevel["debug"] = 3] = "debug";
27
+ })(LogLevel || (exports.LogLevel = LogLevel = {}));
28
+ //# sourceMappingURL=log-constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-constants.js","sourceRoot":"","sources":["../../src/utils/log-constants.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEU,QAAA,MAAM,GAAG;IACpB,KAAK,EAAE,SAAS;IAChB,GAAG,EAAE,UAAU;IACf,MAAM,EAAE,UAAU;IAClB,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,UAAU;CAClB,CAAC;AAEF,IAAY,QAOX;AAPD,WAAY,QAAQ;IAClB,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,6CAAW,CAAA;IACX,+CAAY,CAAA;IACZ,yCAAS,CAAA;AACX,CAAC,EAPW,QAAQ,wBAAR,QAAQ,QAOnB"}
@@ -1,5 +1,13 @@
1
1
  /**
2
2
  * Utility for formatting log messages for console display
3
+ *
4
+ * Format: [HH:MM:SS] [lane-task] ICON TYPE content
5
+ *
6
+ * Rules:
7
+ * - Box format only for: user, assistant, system, result
8
+ * - Compact format for: tool, tool_result, thinking (gray/dim)
9
+ * - Tool names simplified: ShellToolCall → Shell
10
+ * - Lane labels max 16 chars: [01-types-tests]
3
11
  */
4
12
  import { ParsedMessage } from './enhanced-logger';
5
13
  /**
@@ -9,6 +17,7 @@ export declare function formatMessageForConsole(msg: ParsedMessage, options?: {
9
17
  includeTimestamp?: boolean;
10
18
  laneLabel?: string;
11
19
  compact?: boolean;
20
+ context?: string;
12
21
  }): string;
13
22
  /**
14
23
  * Detect and format a message that might be a raw JSON string from cursor-agent