@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.
- package/CHANGELOG.md +20 -0
- package/commands/cursorflow-clean.md +19 -0
- package/commands/cursorflow-runs.md +59 -0
- package/commands/cursorflow-stop.md +55 -0
- package/dist/cli/clean.js +171 -0
- package/dist/cli/clean.js.map +1 -1
- package/dist/cli/index.js +7 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.js +1 -1
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/logs.js +83 -42
- package/dist/cli/logs.js.map +1 -1
- package/dist/cli/monitor.d.ts +7 -0
- package/dist/cli/monitor.js +1007 -189
- package/dist/cli/monitor.js.map +1 -1
- package/dist/cli/prepare.js +87 -3
- package/dist/cli/prepare.js.map +1 -1
- package/dist/cli/resume.js +188 -236
- package/dist/cli/resume.js.map +1 -1
- package/dist/cli/run.js +125 -3
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/runs.d.ts +5 -0
- package/dist/cli/runs.js +214 -0
- package/dist/cli/runs.js.map +1 -0
- package/dist/cli/setup-commands.js +0 -0
- package/dist/cli/signal.js +1 -1
- package/dist/cli/signal.js.map +1 -1
- package/dist/cli/stop.d.ts +5 -0
- package/dist/cli/stop.js +215 -0
- package/dist/cli/stop.js.map +1 -0
- package/dist/cli/tasks.d.ts +10 -0
- package/dist/cli/tasks.js +165 -0
- package/dist/cli/tasks.js.map +1 -0
- package/dist/core/auto-recovery.d.ts +212 -0
- package/dist/core/auto-recovery.js +737 -0
- package/dist/core/auto-recovery.js.map +1 -0
- package/dist/core/failure-policy.d.ts +156 -0
- package/dist/core/failure-policy.js +488 -0
- package/dist/core/failure-policy.js.map +1 -0
- package/dist/core/orchestrator.d.ts +15 -2
- package/dist/core/orchestrator.js +397 -15
- package/dist/core/orchestrator.js.map +1 -1
- package/dist/core/reviewer.d.ts +2 -0
- package/dist/core/reviewer.js +2 -0
- package/dist/core/reviewer.js.map +1 -1
- package/dist/core/runner.d.ts +33 -10
- package/dist/core/runner.js +321 -146
- package/dist/core/runner.js.map +1 -1
- package/dist/services/logging/buffer.d.ts +67 -0
- package/dist/services/logging/buffer.js +309 -0
- package/dist/services/logging/buffer.js.map +1 -0
- package/dist/services/logging/console.d.ts +89 -0
- package/dist/services/logging/console.js +169 -0
- package/dist/services/logging/console.js.map +1 -0
- package/dist/services/logging/file-writer.d.ts +71 -0
- package/dist/services/logging/file-writer.js +516 -0
- package/dist/services/logging/file-writer.js.map +1 -0
- package/dist/services/logging/formatter.d.ts +39 -0
- package/dist/services/logging/formatter.js +227 -0
- package/dist/services/logging/formatter.js.map +1 -0
- package/dist/services/logging/index.d.ts +11 -0
- package/dist/services/logging/index.js +30 -0
- package/dist/services/logging/index.js.map +1 -0
- package/dist/services/logging/parser.d.ts +31 -0
- package/dist/services/logging/parser.js +222 -0
- package/dist/services/logging/parser.js.map +1 -0
- package/dist/services/process/index.d.ts +59 -0
- package/dist/services/process/index.js +257 -0
- package/dist/services/process/index.js.map +1 -0
- package/dist/types/agent.d.ts +20 -0
- package/dist/types/agent.js +6 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/config.d.ts +65 -0
- package/dist/types/config.js +6 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/events.d.ts +125 -0
- package/dist/types/events.js +6 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/index.d.ts +12 -0
- package/dist/types/index.js +37 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/lane.d.ts +43 -0
- package/dist/types/lane.js +6 -0
- package/dist/types/lane.js.map +1 -0
- package/dist/types/logging.d.ts +71 -0
- package/dist/types/logging.js +16 -0
- package/dist/types/logging.js.map +1 -0
- package/dist/types/review.d.ts +17 -0
- package/dist/types/review.js +6 -0
- package/dist/types/review.js.map +1 -0
- package/dist/types/run.d.ts +32 -0
- package/dist/types/run.js +6 -0
- package/dist/types/run.js.map +1 -0
- package/dist/types/task.d.ts +71 -0
- package/dist/types/task.js +6 -0
- package/dist/types/task.js.map +1 -0
- package/dist/ui/components.d.ts +134 -0
- package/dist/ui/components.js +389 -0
- package/dist/ui/components.js.map +1 -0
- package/dist/ui/log-viewer.d.ts +49 -0
- package/dist/ui/log-viewer.js +449 -0
- package/dist/ui/log-viewer.js.map +1 -0
- package/dist/utils/checkpoint.d.ts +87 -0
- package/dist/utils/checkpoint.js +317 -0
- package/dist/utils/checkpoint.js.map +1 -0
- package/dist/utils/config.d.ts +4 -0
- package/dist/utils/config.js +11 -2
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/cursor-agent.js.map +1 -1
- package/dist/utils/dependency.d.ts +74 -0
- package/dist/utils/dependency.js +420 -0
- package/dist/utils/dependency.js.map +1 -0
- package/dist/utils/doctor.js +10 -5
- package/dist/utils/doctor.js.map +1 -1
- package/dist/utils/enhanced-logger.d.ts +10 -33
- package/dist/utils/enhanced-logger.js +94 -9
- package/dist/utils/enhanced-logger.js.map +1 -1
- package/dist/utils/git.d.ts +121 -0
- package/dist/utils/git.js +322 -2
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/health.d.ts +91 -0
- package/dist/utils/health.js +556 -0
- package/dist/utils/health.js.map +1 -0
- package/dist/utils/lock.d.ts +95 -0
- package/dist/utils/lock.js +332 -0
- package/dist/utils/lock.js.map +1 -0
- package/dist/utils/log-buffer.d.ts +17 -0
- package/dist/utils/log-buffer.js +14 -0
- package/dist/utils/log-buffer.js.map +1 -0
- package/dist/utils/log-constants.d.ts +23 -0
- package/dist/utils/log-constants.js +28 -0
- package/dist/utils/log-constants.js.map +1 -0
- package/dist/utils/log-formatter.d.ts +9 -0
- package/dist/utils/log-formatter.js +113 -70
- package/dist/utils/log-formatter.js.map +1 -1
- package/dist/utils/log-service.d.ts +19 -0
- package/dist/utils/log-service.js +47 -0
- package/dist/utils/log-service.js.map +1 -0
- package/dist/utils/logger.d.ts +46 -27
- package/dist/utils/logger.js +82 -60
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/process-manager.d.ts +21 -0
- package/dist/utils/process-manager.js +138 -0
- package/dist/utils/process-manager.js.map +1 -0
- package/dist/utils/retry.d.ts +121 -0
- package/dist/utils/retry.js +374 -0
- package/dist/utils/retry.js.map +1 -0
- package/dist/utils/run-service.d.ts +88 -0
- package/dist/utils/run-service.js +412 -0
- package/dist/utils/run-service.js.map +1 -0
- package/dist/utils/state.d.ts +58 -2
- package/dist/utils/state.js +306 -3
- package/dist/utils/state.js.map +1 -1
- package/dist/utils/task-service.d.ts +82 -0
- package/dist/utils/task-service.js +348 -0
- package/dist/utils/task-service.js.map +1 -0
- package/dist/utils/types.d.ts +2 -272
- package/dist/utils/types.js +16 -0
- package/dist/utils/types.js.map +1 -1
- package/package.json +38 -23
- package/scripts/ai-security-check.js +0 -1
- package/scripts/local-security-gate.sh +0 -0
- package/scripts/monitor-lanes.sh +94 -0
- package/scripts/patches/test-cursor-agent.js +0 -1
- package/scripts/release.sh +0 -0
- package/scripts/setup-security.sh +0 -0
- package/scripts/stream-logs.sh +72 -0
- package/scripts/verify-and-fix.sh +0 -0
- package/src/cli/clean.ts +180 -0
- package/src/cli/index.ts +7 -0
- package/src/cli/init.ts +1 -1
- package/src/cli/logs.ts +79 -42
- package/src/cli/monitor.ts +1815 -899
- package/src/cli/prepare.ts +97 -3
- package/src/cli/resume.ts +220 -277
- package/src/cli/run.ts +154 -3
- package/src/cli/runs.ts +212 -0
- package/src/cli/setup-commands.ts +0 -0
- package/src/cli/signal.ts +1 -1
- package/src/cli/stop.ts +209 -0
- package/src/cli/tasks.ts +154 -0
- package/src/core/auto-recovery.ts +909 -0
- package/src/core/failure-policy.ts +592 -0
- package/src/core/orchestrator.ts +1136 -675
- package/src/core/reviewer.ts +4 -0
- package/src/core/runner.ts +1443 -1217
- package/src/services/logging/buffer.ts +326 -0
- package/src/services/logging/console.ts +193 -0
- package/src/services/logging/file-writer.ts +526 -0
- package/src/services/logging/formatter.ts +268 -0
- package/src/services/logging/index.ts +16 -0
- package/src/services/logging/parser.ts +232 -0
- package/src/services/process/index.ts +261 -0
- package/src/types/agent.ts +24 -0
- package/src/types/config.ts +79 -0
- package/src/types/events.ts +156 -0
- package/src/types/index.ts +29 -0
- package/src/types/lane.ts +56 -0
- package/src/types/logging.ts +96 -0
- package/src/types/review.ts +20 -0
- package/src/types/run.ts +37 -0
- package/src/types/task.ts +79 -0
- package/src/ui/components.ts +430 -0
- package/src/ui/log-viewer.ts +485 -0
- package/src/utils/checkpoint.ts +374 -0
- package/src/utils/config.ts +11 -2
- package/src/utils/cursor-agent.ts +1 -1
- package/src/utils/dependency.ts +482 -0
- package/src/utils/doctor.ts +11 -5
- package/src/utils/enhanced-logger.ts +108 -49
- package/src/utils/git.ts +871 -499
- package/src/utils/health.ts +596 -0
- package/src/utils/lock.ts +346 -0
- package/src/utils/log-buffer.ts +28 -0
- package/src/utils/log-constants.ts +26 -0
- package/src/utils/log-formatter.ts +120 -37
- package/src/utils/log-service.ts +49 -0
- package/src/utils/logger.ts +100 -51
- package/src/utils/process-manager.ts +100 -0
- package/src/utils/retry.ts +413 -0
- package/src/utils/run-service.ts +433 -0
- package/src/utils/state.ts +369 -3
- package/src/utils/task-service.ts +370 -0
- 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
|