@litmers/cursorflow-orchestrator 0.1.13 → 0.1.15

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 (76) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +83 -2
  3. package/commands/cursorflow-clean.md +20 -6
  4. package/commands/cursorflow-prepare.md +1 -1
  5. package/commands/cursorflow-resume.md +127 -6
  6. package/commands/cursorflow-run.md +2 -2
  7. package/commands/cursorflow-signal.md +11 -4
  8. package/dist/cli/clean.js +164 -12
  9. package/dist/cli/clean.js.map +1 -1
  10. package/dist/cli/index.d.ts +1 -0
  11. package/dist/cli/index.js +6 -1
  12. package/dist/cli/index.js.map +1 -1
  13. package/dist/cli/logs.d.ts +8 -0
  14. package/dist/cli/logs.js +759 -0
  15. package/dist/cli/logs.js.map +1 -0
  16. package/dist/cli/monitor.js +113 -30
  17. package/dist/cli/monitor.js.map +1 -1
  18. package/dist/cli/prepare.js +1 -1
  19. package/dist/cli/resume.js +367 -18
  20. package/dist/cli/resume.js.map +1 -1
  21. package/dist/cli/run.js +9 -0
  22. package/dist/cli/run.js.map +1 -1
  23. package/dist/cli/signal.js +34 -20
  24. package/dist/cli/signal.js.map +1 -1
  25. package/dist/core/orchestrator.d.ts +13 -1
  26. package/dist/core/orchestrator.js +396 -35
  27. package/dist/core/orchestrator.js.map +1 -1
  28. package/dist/core/reviewer.d.ts +2 -0
  29. package/dist/core/reviewer.js +24 -2
  30. package/dist/core/reviewer.js.map +1 -1
  31. package/dist/core/runner.d.ts +9 -3
  32. package/dist/core/runner.js +266 -61
  33. package/dist/core/runner.js.map +1 -1
  34. package/dist/utils/config.js +38 -1
  35. package/dist/utils/config.js.map +1 -1
  36. package/dist/utils/enhanced-logger.d.ts +210 -0
  37. package/dist/utils/enhanced-logger.js +1030 -0
  38. package/dist/utils/enhanced-logger.js.map +1 -0
  39. package/dist/utils/events.d.ts +59 -0
  40. package/dist/utils/events.js +37 -0
  41. package/dist/utils/events.js.map +1 -0
  42. package/dist/utils/git.d.ts +11 -0
  43. package/dist/utils/git.js +40 -0
  44. package/dist/utils/git.js.map +1 -1
  45. package/dist/utils/logger.d.ts +2 -0
  46. package/dist/utils/logger.js +4 -1
  47. package/dist/utils/logger.js.map +1 -1
  48. package/dist/utils/types.d.ts +132 -1
  49. package/dist/utils/webhook.d.ts +5 -0
  50. package/dist/utils/webhook.js +109 -0
  51. package/dist/utils/webhook.js.map +1 -0
  52. package/examples/README.md +1 -1
  53. package/package.json +2 -1
  54. package/scripts/patches/test-cursor-agent.js +1 -1
  55. package/scripts/simple-logging-test.sh +97 -0
  56. package/scripts/test-real-cursor-lifecycle.sh +289 -0
  57. package/scripts/test-real-logging.sh +289 -0
  58. package/scripts/test-streaming-multi-task.sh +247 -0
  59. package/src/cli/clean.ts +170 -13
  60. package/src/cli/index.ts +4 -1
  61. package/src/cli/logs.ts +863 -0
  62. package/src/cli/monitor.ts +123 -30
  63. package/src/cli/prepare.ts +1 -1
  64. package/src/cli/resume.ts +463 -22
  65. package/src/cli/run.ts +10 -0
  66. package/src/cli/signal.ts +43 -27
  67. package/src/core/orchestrator.ts +458 -36
  68. package/src/core/reviewer.ts +40 -4
  69. package/src/core/runner.ts +293 -60
  70. package/src/utils/config.ts +41 -1
  71. package/src/utils/enhanced-logger.ts +1166 -0
  72. package/src/utils/events.ts +117 -0
  73. package/src/utils/git.ts +40 -0
  74. package/src/utils/logger.ts +4 -1
  75. package/src/utils/types.ts +160 -1
  76. package/src/utils/webhook.ts +85 -0
@@ -53,7 +53,8 @@ function findProjectRoot(cwd = process.cwd()) {
53
53
  let current = cwd;
54
54
  while (current !== path.parse(current).root) {
55
55
  const packagePath = path.join(current, 'package.json');
56
- if (fs.existsSync(packagePath)) {
56
+ const configPath = path.join(current, 'cursorflow.config.js');
57
+ if (fs.existsSync(packagePath) || fs.existsSync(configPath)) {
57
58
  return current;
58
59
  }
59
60
  current = path.dirname(current);
@@ -97,6 +98,20 @@ function loadConfig(projectRoot = null) {
97
98
  // Advanced
98
99
  worktreePrefix: 'cursorflow-',
99
100
  maxConcurrentLanes: 10,
101
+ agentOutputFormat: 'stream-json',
102
+ // Webhooks
103
+ webhooks: [],
104
+ // Enhanced logging
105
+ enhancedLogging: {
106
+ enabled: true,
107
+ stripAnsi: true,
108
+ addTimestamps: true,
109
+ maxFileSize: 50 * 1024 * 1024, // 50MB
110
+ maxFiles: 5,
111
+ keepRawLogs: true,
112
+ writeJsonLog: true,
113
+ timestampFormat: 'iso',
114
+ },
100
115
  // Internal
101
116
  projectRoot,
102
117
  };
@@ -190,6 +205,28 @@ function createDefaultConfig(projectRoot, force = false) {
190
205
  // Advanced
191
206
  worktreePrefix: 'cursorflow-',
192
207
  maxConcurrentLanes: 10,
208
+ agentOutputFormat: 'stream-json', // 'stream-json' | 'json' | 'plain'
209
+
210
+ // Webhook configuration
211
+ // webhooks: [
212
+ // {
213
+ // enabled: true,
214
+ // url: 'https://api.example.com/events',
215
+ // events: ['*'],
216
+ // }
217
+ // ],
218
+
219
+ // Enhanced logging configuration
220
+ enhancedLogging: {
221
+ enabled: true, // Enable enhanced logging features
222
+ stripAnsi: true, // Strip ANSI codes for clean logs
223
+ addTimestamps: true, // Add timestamps to each line
224
+ maxFileSize: 52428800, // 50MB max file size before rotation
225
+ maxFiles: 5, // Number of rotated files to keep
226
+ keepRawLogs: true, // Keep raw logs with ANSI codes
227
+ writeJsonLog: true, // Write structured JSON logs
228
+ timestampFormat: 'iso', // 'iso' | 'relative' | 'short'
229
+ },
193
230
  };
194
231
  `;
195
232
  fs.writeFileSync(configPath, template, 'utf8');
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUH,0CAcC;AAKD,gCA4EC;AAKD,kCAEC;AAKD,gCAEC;AAKD,wCAwBC;AAKD,kDAqEC;AA5ND,2CAA6B;AAC7B,uCAAyB;AAIzB;;GAEG;AACH,SAAgB,eAAe,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACjD,IAAI,OAAO,GAAG,GAAG,CAAC;IAElB,OAAO,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;QAE9D,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5D,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,cAA6B,IAAI;IAC1D,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,WAAW,GAAG,eAAe,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;IAElE,wBAAwB;IACxB,MAAM,QAAQ,GAAqB;QACjC,cAAc;QACd,QAAQ,EAAE,mBAAmB;QAC7B,OAAO,EAAE,kBAAkB;QAE3B,MAAM;QACN,UAAU,EAAE,MAAM;QAClB,YAAY,EAAE,UAAU;QAExB,YAAY;QACZ,QAAQ,EAAE,cAAc;QACxB,YAAY,EAAE,EAAE;QAEhB,eAAe;QACf,qBAAqB,EAAE,KAAK;QAC5B,gBAAgB,EAAE,IAAI;QAEtB,SAAS;QACT,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,qBAAqB;QAClC,mBAAmB,EAAE,CAAC;QAEtB,gBAAgB;QAChB,iBAAiB,EAAE;YACjB,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,KAAK;SACpB;QAED,UAAU;QACV,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,KAAK;QAEjB,WAAW;QACX,cAAc,EAAE,aAAa;QAC7B,kBAAkB,EAAE,EAAE;QACtB,iBAAiB,EAAE,aAAa;QAEhC,WAAW;QACX,QAAQ,EAAE,EAAE;QAEZ,mBAAmB;QACnB,eAAe,EAAE;YACf,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI;YACf,aAAa,EAAE,IAAI;YACnB,WAAW,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO;YACtC,QAAQ,EAAE,CAAC;YACX,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;SACvB;QAED,WAAW;QACX,WAAW;KACZ,CAAC;IAEF,0BAA0B;IAC1B,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YACvC,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,UAAU,EAAE,WAAW,EAAE,CAAC;QACrD,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,uCAAuC,UAAU,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACpF,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,MAAwB;IAClD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,MAAwB;IACjD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,MAAwB;IACrD,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,CAAC,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,MAAM,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,WAAmB,EAAE,KAAK,GAAG,KAAK;IACpE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;IAElE,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,+BAA+B,UAAU,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0DlB,CAAC;IAEA,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,210 @@
1
+ /**
2
+ * Enhanced Logger - Comprehensive terminal output capture and management
3
+ *
4
+ * Features:
5
+ * - ANSI escape sequence stripping for clean logs
6
+ * - Automatic timestamps on each line
7
+ * - Log rotation and size management
8
+ * - Session headers with context
9
+ * - Raw and clean log file options
10
+ * - Structured JSON logs for programmatic access
11
+ * - Streaming output support for real-time capture
12
+ */
13
+ import { Transform, TransformCallback } from 'stream';
14
+ import { EnhancedLogConfig } from './types';
15
+ export { EnhancedLogConfig } from './types';
16
+ export declare const DEFAULT_LOG_CONFIG: EnhancedLogConfig;
17
+ /**
18
+ * Streaming JSON Parser - Parses cursor-agent stream-json output
19
+ * and combines tokens into readable messages
20
+ */
21
+ export declare class StreamingMessageParser {
22
+ private currentMessage;
23
+ private currentRole;
24
+ private messageStartTime;
25
+ private onMessage;
26
+ constructor(onMessage: (msg: ParsedMessage) => void);
27
+ /**
28
+ * Parse a line of JSON output from cursor-agent
29
+ */
30
+ parseLine(line: string): void;
31
+ private handleJsonMessage;
32
+ /**
33
+ * Flush accumulated message
34
+ */
35
+ flush(): void;
36
+ private emitMessage;
37
+ }
38
+ export interface ParsedMessage {
39
+ type: 'system' | 'user' | 'assistant' | 'tool' | 'tool_result' | 'result';
40
+ role: string;
41
+ content: string;
42
+ timestamp: number;
43
+ metadata?: Record<string, any>;
44
+ }
45
+ /**
46
+ * Strip ANSI escape sequences from text
47
+ */
48
+ export declare function stripAnsi(text: string): string;
49
+ /**
50
+ * Format timestamp based on format preference
51
+ */
52
+ export declare function formatTimestamp(format: 'iso' | 'relative' | 'short', startTime?: number): string;
53
+ /**
54
+ * JSON log entry structure
55
+ */
56
+ export interface JsonLogEntry {
57
+ timestamp: string;
58
+ level: 'stdout' | 'stderr' | 'info' | 'error' | 'debug' | 'session';
59
+ source?: string;
60
+ task?: string;
61
+ lane?: string;
62
+ message: string;
63
+ raw?: string;
64
+ metadata?: Record<string, any>;
65
+ }
66
+ /**
67
+ * Session context for logging
68
+ */
69
+ export interface LogSession {
70
+ id: string;
71
+ laneName: string;
72
+ taskName?: string;
73
+ model?: string;
74
+ startTime: number;
75
+ metadata?: Record<string, any>;
76
+ }
77
+ /**
78
+ * Transform stream that strips ANSI and adds timestamps
79
+ */
80
+ export declare class CleanLogTransform extends Transform {
81
+ private config;
82
+ private session;
83
+ private buffer;
84
+ constructor(config: EnhancedLogConfig, session: LogSession);
85
+ _transform(chunk: Buffer, encoding: BufferEncoding, callback: TransformCallback): void;
86
+ _flush(callback: TransformCallback): void;
87
+ }
88
+ /**
89
+ * Enhanced Log Manager - Manages log files with rotation and multiple outputs
90
+ */
91
+ export declare class EnhancedLogManager {
92
+ private config;
93
+ private session;
94
+ private logDir;
95
+ private cleanLogPath;
96
+ private rawLogPath;
97
+ private jsonLogPath;
98
+ private readableLogPath;
99
+ private cleanLogFd;
100
+ private rawLogFd;
101
+ private jsonLogFd;
102
+ private readableLogFd;
103
+ private cleanLogSize;
104
+ private rawLogSize;
105
+ private cleanTransform;
106
+ private streamingParser;
107
+ private lineBuffer;
108
+ private onParsedMessage?;
109
+ constructor(logDir: string, session: LogSession, config?: Partial<EnhancedLogConfig>, onParsedMessage?: (msg: ParsedMessage) => void);
110
+ /**
111
+ * Initialize log files and write session headers
112
+ */
113
+ private initLogFiles;
114
+ /**
115
+ * Write a parsed message to the readable log
116
+ */
117
+ private writeReadableMessage;
118
+ /**
119
+ * Indent text with a prefix
120
+ */
121
+ private indentText;
122
+ /**
123
+ * Write session header to logs
124
+ */
125
+ private writeSessionHeader;
126
+ /**
127
+ * Rotate log file if it exceeds max size
128
+ */
129
+ private rotateIfNeeded;
130
+ /**
131
+ * Rotate a log file
132
+ */
133
+ private rotateLog;
134
+ /**
135
+ * Write to clean log with size tracking
136
+ */
137
+ private writeToCleanLog;
138
+ /**
139
+ * Write to raw log with size tracking
140
+ */
141
+ private writeToRawLog;
142
+ /**
143
+ * Write a JSON log entry
144
+ */
145
+ private writeJsonEntry;
146
+ /**
147
+ * Write stdout data
148
+ */
149
+ writeStdout(data: Buffer | string): void;
150
+ /**
151
+ * Parse streaming JSON data for readable log
152
+ */
153
+ private parseStreamingData;
154
+ /**
155
+ * Write stderr data
156
+ */
157
+ writeStderr(data: Buffer | string): void;
158
+ /**
159
+ * Write a custom log entry
160
+ */
161
+ log(level: 'info' | 'error' | 'debug', message: string, metadata?: Record<string, any>): void;
162
+ /**
163
+ * Add a section marker
164
+ */
165
+ section(title: string): void;
166
+ /**
167
+ * Update task context
168
+ */
169
+ setTask(taskName: string, model?: string): void;
170
+ /**
171
+ * Check if a log line is noise (progress bars, spinners, etc.)
172
+ */
173
+ private isNoiseLog;
174
+ /**
175
+ * Get paths to all log files
176
+ */
177
+ getLogPaths(): {
178
+ clean: string;
179
+ raw?: string;
180
+ json?: string;
181
+ readable: string;
182
+ };
183
+ /**
184
+ * Create file descriptors for process stdio redirection
185
+ */
186
+ getFileDescriptors(): {
187
+ stdout: number;
188
+ stderr: number;
189
+ };
190
+ /**
191
+ * Close all log files
192
+ */
193
+ close(): void;
194
+ /**
195
+ * Format duration for display
196
+ */
197
+ private formatDuration;
198
+ }
199
+ /**
200
+ * Create a log manager for a lane
201
+ */
202
+ export declare function createLogManager(laneRunDir: string, laneName: string, config?: Partial<EnhancedLogConfig>, onParsedMessage?: (msg: ParsedMessage) => void): EnhancedLogManager;
203
+ /**
204
+ * Read and parse JSON log file
205
+ */
206
+ export declare function readJsonLog(logPath: string): JsonLogEntry[];
207
+ /**
208
+ * Export logs to various formats
209
+ */
210
+ export declare function exportLogs(laneRunDir: string, format: 'text' | 'json' | 'markdown' | 'html', outputPath?: string): string;