@litmers/cursorflow-orchestrator 0.1.3 → 0.1.6

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 (90) hide show
  1. package/CHANGELOG.md +17 -7
  2. package/README.md +33 -2
  3. package/commands/cursorflow-doctor.md +24 -0
  4. package/commands/cursorflow-signal.md +19 -0
  5. package/dist/cli/clean.d.ts +5 -0
  6. package/dist/cli/clean.js +57 -0
  7. package/dist/cli/clean.js.map +1 -0
  8. package/dist/cli/doctor.d.ts +15 -0
  9. package/dist/cli/doctor.js +139 -0
  10. package/dist/cli/doctor.js.map +1 -0
  11. package/dist/cli/index.d.ts +6 -0
  12. package/dist/cli/index.js +125 -0
  13. package/dist/cli/index.js.map +1 -0
  14. package/dist/cli/init.d.ts +7 -0
  15. package/dist/cli/init.js +302 -0
  16. package/dist/cli/init.js.map +1 -0
  17. package/dist/cli/monitor.d.ts +8 -0
  18. package/dist/cli/monitor.js +210 -0
  19. package/dist/cli/monitor.js.map +1 -0
  20. package/dist/cli/resume.d.ts +5 -0
  21. package/dist/cli/resume.js +128 -0
  22. package/dist/cli/resume.js.map +1 -0
  23. package/dist/cli/run.d.ts +5 -0
  24. package/dist/cli/run.js +128 -0
  25. package/dist/cli/run.js.map +1 -0
  26. package/dist/cli/setup-commands.d.ts +23 -0
  27. package/dist/cli/setup-commands.js +234 -0
  28. package/dist/cli/setup-commands.js.map +1 -0
  29. package/dist/cli/signal.d.ts +7 -0
  30. package/dist/cli/signal.js +99 -0
  31. package/dist/cli/signal.js.map +1 -0
  32. package/dist/core/orchestrator.d.ts +47 -0
  33. package/dist/core/orchestrator.js +192 -0
  34. package/dist/core/orchestrator.js.map +1 -0
  35. package/dist/core/reviewer.d.ts +60 -0
  36. package/dist/core/reviewer.js +239 -0
  37. package/dist/core/reviewer.js.map +1 -0
  38. package/dist/core/runner.d.ts +51 -0
  39. package/dist/core/runner.js +499 -0
  40. package/dist/core/runner.js.map +1 -0
  41. package/dist/utils/config.d.ts +31 -0
  42. package/dist/utils/config.js +198 -0
  43. package/dist/utils/config.js.map +1 -0
  44. package/dist/utils/cursor-agent.d.ts +61 -0
  45. package/dist/utils/cursor-agent.js +263 -0
  46. package/dist/utils/cursor-agent.js.map +1 -0
  47. package/dist/utils/doctor.d.ts +63 -0
  48. package/dist/utils/doctor.js +280 -0
  49. package/dist/utils/doctor.js.map +1 -0
  50. package/dist/utils/git.d.ts +131 -0
  51. package/dist/utils/git.js +272 -0
  52. package/dist/utils/git.js.map +1 -0
  53. package/dist/utils/logger.d.ts +68 -0
  54. package/dist/utils/logger.js +158 -0
  55. package/dist/utils/logger.js.map +1 -0
  56. package/dist/utils/state.d.ts +65 -0
  57. package/dist/utils/state.js +216 -0
  58. package/dist/utils/state.js.map +1 -0
  59. package/dist/utils/types.d.ts +118 -0
  60. package/dist/utils/types.js +6 -0
  61. package/dist/utils/types.js.map +1 -0
  62. package/examples/README.md +155 -0
  63. package/examples/demo-project/README.md +262 -0
  64. package/examples/demo-project/_cursorflow/tasks/demo-test/01-create-utils.json +18 -0
  65. package/examples/demo-project/_cursorflow/tasks/demo-test/02-add-tests.json +18 -0
  66. package/examples/demo-project/_cursorflow/tasks/demo-test/README.md +109 -0
  67. package/package.json +71 -61
  68. package/scripts/ai-security-check.js +11 -4
  69. package/scripts/local-security-gate.sh +76 -0
  70. package/src/cli/{clean.js → clean.ts} +11 -5
  71. package/src/cli/doctor.ts +127 -0
  72. package/src/cli/{index.js → index.ts} +27 -16
  73. package/src/cli/{init.js → init.ts} +26 -18
  74. package/src/cli/{monitor.js → monitor.ts} +57 -44
  75. package/src/cli/resume.ts +119 -0
  76. package/src/cli/run.ts +109 -0
  77. package/src/cli/{setup-commands.js → setup-commands.ts} +38 -18
  78. package/src/cli/signal.ts +89 -0
  79. package/src/core/{orchestrator.js → orchestrator.ts} +44 -26
  80. package/src/core/{reviewer.js → reviewer.ts} +36 -29
  81. package/src/core/{runner.js → runner.ts} +125 -76
  82. package/src/utils/{config.js → config.ts} +17 -25
  83. package/src/utils/{cursor-agent.js → cursor-agent.ts} +38 -47
  84. package/src/utils/doctor.ts +312 -0
  85. package/src/utils/{git.js → git.ts} +70 -56
  86. package/src/utils/{logger.js → logger.ts} +170 -178
  87. package/src/utils/{state.js → state.ts} +30 -38
  88. package/src/utils/types.ts +134 -0
  89. package/src/cli/resume.js +0 -31
  90. package/src/cli/run.js +0 -51
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Logging utilities for CursorFlow
3
+ */
4
+ export declare enum LogLevel {
5
+ error = 0,
6
+ warn = 1,
7
+ info = 2,
8
+ debug = 3
9
+ }
10
+ export declare const COLORS: {
11
+ reset: string;
12
+ red: string;
13
+ yellow: string;
14
+ green: string;
15
+ blue: string;
16
+ cyan: string;
17
+ gray: string;
18
+ };
19
+ /**
20
+ * Set log level
21
+ */
22
+ export declare function setLogLevel(level: string | number): void;
23
+ /**
24
+ * Error log
25
+ */
26
+ export declare function error(message: string, emoji?: string): void;
27
+ /**
28
+ * Warning log
29
+ */
30
+ export declare function warn(message: string, emoji?: string): void;
31
+ /**
32
+ * Info log
33
+ */
34
+ export declare function info(message: string, emoji?: string): void;
35
+ /**
36
+ * Success log
37
+ */
38
+ export declare function success(message: string, emoji?: string): void;
39
+ /**
40
+ * Debug log
41
+ */
42
+ export declare function debug(message: string, emoji?: string): void;
43
+ /**
44
+ * Progress log
45
+ */
46
+ export declare function progress(message: string, emoji?: string): void;
47
+ /**
48
+ * Section header
49
+ */
50
+ export declare function section(message: string): void;
51
+ /**
52
+ * Simple log without formatting
53
+ */
54
+ export declare function log(message: string | any): void;
55
+ /**
56
+ * Log JSON data (pretty print in debug mode)
57
+ */
58
+ export declare function json(data: any): void;
59
+ export interface Spinner {
60
+ start(): void;
61
+ stop(finalMessage?: string | null): void;
62
+ succeed(message: string): void;
63
+ fail(message: string): void;
64
+ }
65
+ /**
66
+ * Create spinner (simple implementation)
67
+ */
68
+ export declare function createSpinner(message: string): Spinner;
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ /**
3
+ * Logging utilities for CursorFlow
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.COLORS = exports.LogLevel = void 0;
7
+ exports.setLogLevel = setLogLevel;
8
+ exports.error = error;
9
+ exports.warn = warn;
10
+ exports.info = info;
11
+ exports.success = success;
12
+ exports.debug = debug;
13
+ exports.progress = progress;
14
+ exports.section = section;
15
+ exports.log = log;
16
+ exports.json = json;
17
+ 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
+ gray: '\x1b[90m',
33
+ };
34
+ let currentLogLevel = LogLevel.info;
35
+ /**
36
+ * Set log level
37
+ */
38
+ function setLogLevel(level) {
39
+ if (typeof level === 'string') {
40
+ currentLogLevel = LogLevel[level] ?? LogLevel.info;
41
+ }
42
+ else {
43
+ currentLogLevel = level;
44
+ }
45
+ }
46
+ /**
47
+ * Format message with timestamp
48
+ */
49
+ function formatMessage(level, message, emoji = '') {
50
+ const timestamp = new Date().toISOString();
51
+ const prefix = emoji ? `${emoji} ` : '';
52
+ return `[${timestamp}] [${level.toUpperCase()}] ${prefix}${message}`;
53
+ }
54
+ /**
55
+ * Log with color
56
+ */
57
+ function logWithColor(color, level, message, emoji = '') {
58
+ if (LogLevel[level] > currentLogLevel) {
59
+ return;
60
+ }
61
+ const formatted = formatMessage(level, message, emoji);
62
+ console.log(`${color}${formatted}${exports.COLORS.reset}`);
63
+ }
64
+ /**
65
+ * Error log
66
+ */
67
+ function error(message, emoji = '❌') {
68
+ logWithColor(exports.COLORS.red, 'error', message, emoji);
69
+ }
70
+ /**
71
+ * Warning log
72
+ */
73
+ function warn(message, emoji = '⚠️') {
74
+ logWithColor(exports.COLORS.yellow, 'warn', message, emoji);
75
+ }
76
+ /**
77
+ * Info log
78
+ */
79
+ function info(message, emoji = 'ℹ️') {
80
+ logWithColor(exports.COLORS.cyan, 'info', message, emoji);
81
+ }
82
+ /**
83
+ * Success log
84
+ */
85
+ function success(message, emoji = '✅') {
86
+ logWithColor(exports.COLORS.green, 'info', message, emoji);
87
+ }
88
+ /**
89
+ * Debug log
90
+ */
91
+ function debug(message, emoji = '🔍') {
92
+ logWithColor(exports.COLORS.gray, 'debug', message, emoji);
93
+ }
94
+ /**
95
+ * Progress log
96
+ */
97
+ function progress(message, emoji = '🔄') {
98
+ logWithColor(exports.COLORS.blue, 'info', message, emoji);
99
+ }
100
+ /**
101
+ * Section header
102
+ */
103
+ function section(message) {
104
+ console.log('');
105
+ console.log(`${exports.COLORS.cyan}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${exports.COLORS.reset}`);
106
+ console.log(`${exports.COLORS.cyan} ${message}${exports.COLORS.reset}`);
107
+ console.log(`${exports.COLORS.cyan}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${exports.COLORS.reset}`);
108
+ console.log('');
109
+ }
110
+ /**
111
+ * Simple log without formatting
112
+ */
113
+ function log(message) {
114
+ console.log(message);
115
+ }
116
+ /**
117
+ * Log JSON data (pretty print in debug mode)
118
+ */
119
+ function json(data) {
120
+ if (currentLogLevel >= LogLevel.debug) {
121
+ console.log(JSON.stringify(data, null, 2));
122
+ }
123
+ }
124
+ /**
125
+ * Create spinner (simple implementation)
126
+ */
127
+ function createSpinner(message) {
128
+ const frames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
129
+ let i = 0;
130
+ let interval = null;
131
+ const spinner = {
132
+ start() {
133
+ process.stdout.write(`${message} ${frames[0]}`);
134
+ interval = setInterval(() => {
135
+ i = (i + 1) % frames.length;
136
+ process.stdout.write(`\r${message} ${frames[i]}`);
137
+ }, 80);
138
+ },
139
+ stop(finalMessage = null) {
140
+ if (interval) {
141
+ clearInterval(interval);
142
+ interval = null;
143
+ }
144
+ process.stdout.write('\r\x1b[K'); // Clear line
145
+ if (finalMessage) {
146
+ console.log(finalMessage);
147
+ }
148
+ },
149
+ succeed(message) {
150
+ this.stop(`${exports.COLORS.green}✓${exports.COLORS.reset} ${message}`);
151
+ },
152
+ fail(message) {
153
+ this.stop(`${exports.COLORS.red}✗${exports.COLORS.reset} ${message}`);
154
+ },
155
+ };
156
+ return spinner;
157
+ }
158
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * State management utilities for CursorFlow
3
+ */
4
+ import { LaneState, ConversationEntry, GitLogEntry, EventEntry, RunnerConfig } from './types';
5
+ export { LaneState, ConversationEntry, GitLogEntry, EventEntry };
6
+ /**
7
+ * Save state to JSON file
8
+ */
9
+ export declare function saveState(statePath: string, state: any): void;
10
+ /**
11
+ * Load state from JSON file
12
+ */
13
+ export declare function loadState<T = any>(statePath: string): T | null;
14
+ /**
15
+ * Append to JSONL log file
16
+ */
17
+ export declare function appendLog(logPath: string, entry: any): void;
18
+ /**
19
+ * Read JSONL log file
20
+ */
21
+ export declare function readLog<T = any>(logPath: string): T[];
22
+ /**
23
+ * Create initial lane state
24
+ */
25
+ export declare function createLaneState(laneName: string, config: RunnerConfig): LaneState;
26
+ /**
27
+ * Update lane state
28
+ */
29
+ export declare function updateLaneState(state: LaneState, updates: Partial<LaneState>): LaneState;
30
+ /**
31
+ * Create conversation log entry
32
+ */
33
+ export declare function createConversationEntry(role: ConversationEntry['role'], text: string, options?: {
34
+ task?: string;
35
+ model?: string;
36
+ }): ConversationEntry;
37
+ /**
38
+ * Create git operation log entry
39
+ */
40
+ export declare function createGitLogEntry(operation: string, details?: any): GitLogEntry;
41
+ /**
42
+ * Create event log entry
43
+ */
44
+ export declare function createEventEntry(event: string, data?: any): EventEntry;
45
+ /**
46
+ * Get latest run directory
47
+ */
48
+ export declare function getLatestRunDir(logsDir: string): string | null;
49
+ /**
50
+ * List all lanes in a run directory
51
+ */
52
+ export declare function listLanesInRun(runDir: string): {
53
+ name: string;
54
+ dir: string;
55
+ statePath: string;
56
+ }[];
57
+ /**
58
+ * Get lane state summary
59
+ */
60
+ export declare function getLaneStateSummary(statePath: string): {
61
+ status: string;
62
+ progress: string;
63
+ label?: string;
64
+ error?: string | null;
65
+ };
@@ -0,0 +1,216 @@
1
+ "use strict";
2
+ /**
3
+ * State management utilities for CursorFlow
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.saveState = saveState;
40
+ exports.loadState = loadState;
41
+ exports.appendLog = appendLog;
42
+ exports.readLog = readLog;
43
+ exports.createLaneState = createLaneState;
44
+ exports.updateLaneState = updateLaneState;
45
+ exports.createConversationEntry = createConversationEntry;
46
+ exports.createGitLogEntry = createGitLogEntry;
47
+ exports.createEventEntry = createEventEntry;
48
+ exports.getLatestRunDir = getLatestRunDir;
49
+ exports.listLanesInRun = listLanesInRun;
50
+ exports.getLaneStateSummary = getLaneStateSummary;
51
+ const fs = __importStar(require("fs"));
52
+ const path = __importStar(require("path"));
53
+ /**
54
+ * Save state to JSON file
55
+ */
56
+ function saveState(statePath, state) {
57
+ const stateDir = path.dirname(statePath);
58
+ if (!fs.existsSync(stateDir)) {
59
+ fs.mkdirSync(stateDir, { recursive: true });
60
+ }
61
+ fs.writeFileSync(statePath, JSON.stringify(state, null, 2), 'utf8');
62
+ }
63
+ /**
64
+ * Load state from JSON file
65
+ */
66
+ function loadState(statePath) {
67
+ if (!fs.existsSync(statePath)) {
68
+ return null;
69
+ }
70
+ try {
71
+ const content = fs.readFileSync(statePath, 'utf8');
72
+ return JSON.parse(content);
73
+ }
74
+ catch (error) {
75
+ console.warn(`Warning: Failed to parse state file ${statePath}: ${error.message}`);
76
+ return null;
77
+ }
78
+ }
79
+ /**
80
+ * Append to JSONL log file
81
+ */
82
+ function appendLog(logPath, entry) {
83
+ const logDir = path.dirname(logPath);
84
+ if (!fs.existsSync(logDir)) {
85
+ fs.mkdirSync(logDir, { recursive: true });
86
+ }
87
+ const line = JSON.stringify(entry) + '\n';
88
+ fs.appendFileSync(logPath, line, 'utf8');
89
+ }
90
+ /**
91
+ * Read JSONL log file
92
+ */
93
+ function readLog(logPath) {
94
+ if (!fs.existsSync(logPath)) {
95
+ return [];
96
+ }
97
+ try {
98
+ const content = fs.readFileSync(logPath, 'utf8');
99
+ return content
100
+ .split('\n')
101
+ .filter(line => line.trim())
102
+ .map(line => JSON.parse(line));
103
+ }
104
+ catch (error) {
105
+ console.warn(`Warning: Failed to parse log file ${logPath}: ${error.message}`);
106
+ return [];
107
+ }
108
+ }
109
+ /**
110
+ * Create initial lane state
111
+ */
112
+ function createLaneState(laneName, config) {
113
+ return {
114
+ label: laneName,
115
+ status: 'pending',
116
+ currentTaskIndex: 0,
117
+ totalTasks: config.tasks ? config.tasks.length : 0,
118
+ worktreeDir: null,
119
+ pipelineBranch: null,
120
+ startTime: Date.now(),
121
+ endTime: null,
122
+ error: null,
123
+ dependencyRequest: null,
124
+ };
125
+ }
126
+ /**
127
+ * Update lane state
128
+ */
129
+ function updateLaneState(state, updates) {
130
+ return {
131
+ ...state,
132
+ ...updates,
133
+ updatedAt: Date.now(),
134
+ };
135
+ }
136
+ /**
137
+ * Create conversation log entry
138
+ */
139
+ function createConversationEntry(role, text, options = {}) {
140
+ return {
141
+ timestamp: new Date().toISOString(),
142
+ role,
143
+ task: options.task || null,
144
+ fullText: text,
145
+ textLength: text.length,
146
+ model: options.model || null,
147
+ };
148
+ }
149
+ /**
150
+ * Create git operation log entry
151
+ */
152
+ function createGitLogEntry(operation, details = {}) {
153
+ return {
154
+ timestamp: new Date().toISOString(),
155
+ operation,
156
+ ...details,
157
+ };
158
+ }
159
+ /**
160
+ * Create event log entry
161
+ */
162
+ function createEventEntry(event, data = {}) {
163
+ return {
164
+ timestamp: new Date().toISOString(),
165
+ event,
166
+ ...data,
167
+ };
168
+ }
169
+ /**
170
+ * Get latest run directory
171
+ */
172
+ function getLatestRunDir(logsDir) {
173
+ if (!fs.existsSync(logsDir)) {
174
+ return null;
175
+ }
176
+ const runs = fs.readdirSync(logsDir)
177
+ .filter(f => fs.statSync(path.join(logsDir, f)).isDirectory())
178
+ .sort()
179
+ .reverse();
180
+ if (runs.length === 0) {
181
+ return null;
182
+ }
183
+ return path.join(logsDir, runs[0]);
184
+ }
185
+ /**
186
+ * List all lanes in a run directory
187
+ */
188
+ function listLanesInRun(runDir) {
189
+ if (!fs.existsSync(runDir)) {
190
+ return [];
191
+ }
192
+ return fs.readdirSync(runDir)
193
+ .filter(f => fs.statSync(path.join(runDir, f)).isDirectory())
194
+ .map(laneName => ({
195
+ name: laneName,
196
+ dir: path.join(runDir, laneName),
197
+ statePath: path.join(runDir, laneName, 'state.json'),
198
+ }));
199
+ }
200
+ /**
201
+ * Get lane state summary
202
+ */
203
+ function getLaneStateSummary(statePath) {
204
+ const state = loadState(statePath);
205
+ if (!state) {
206
+ return { status: 'unknown', progress: '-' };
207
+ }
208
+ const progress = `${(state.currentTaskIndex || 0) + 1}/${state.totalTasks || '?'}`;
209
+ return {
210
+ status: state.status || 'unknown',
211
+ progress,
212
+ label: state.label,
213
+ error: state.error,
214
+ };
215
+ }
216
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/utils/state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Shared type definitions for CursorFlow
3
+ */
4
+ export interface LaneConfig {
5
+ devPort: number;
6
+ autoCreatePr: boolean;
7
+ }
8
+ export interface CursorFlowConfig {
9
+ tasksDir: string;
10
+ logsDir: string;
11
+ baseBranch: string;
12
+ branchPrefix: string;
13
+ executor: 'cursor-agent' | 'cloud';
14
+ pollInterval: number;
15
+ allowDependencyChange: boolean;
16
+ lockfileReadOnly: boolean;
17
+ enableReview: boolean;
18
+ reviewModel: string;
19
+ maxReviewIterations: number;
20
+ defaultLaneConfig: LaneConfig;
21
+ logLevel: string;
22
+ verboseGit: boolean;
23
+ worktreePrefix: string;
24
+ maxConcurrentLanes: number;
25
+ projectRoot: string;
26
+ }
27
+ export interface DependencyPolicy {
28
+ allowDependencyChange: boolean;
29
+ lockfileReadOnly: boolean;
30
+ }
31
+ export interface Task {
32
+ name: string;
33
+ prompt: string;
34
+ model?: string;
35
+ }
36
+ export interface RunnerConfig {
37
+ tasks: Task[];
38
+ pipelineBranch?: string;
39
+ branchPrefix?: string;
40
+ worktreeRoot?: string;
41
+ baseBranch?: string;
42
+ model?: string;
43
+ dependencyPolicy: DependencyPolicy;
44
+ reviewModel?: string;
45
+ maxReviewIterations?: number;
46
+ acceptanceCriteria?: string[];
47
+ }
48
+ export interface DependencyRequestPlan {
49
+ reason: string;
50
+ changes: string[];
51
+ commands: string[];
52
+ notes?: string;
53
+ }
54
+ export interface TaskExecutionResult {
55
+ taskName: string;
56
+ taskBranch: string;
57
+ status: 'FINISHED' | 'ERROR' | 'BLOCKED_DEPENDENCY';
58
+ error?: string;
59
+ dependencyRequest?: DependencyRequestPlan | null;
60
+ }
61
+ export interface AgentSendResult {
62
+ ok: boolean;
63
+ exitCode: number;
64
+ error?: string;
65
+ sessionId?: string;
66
+ resultText?: string;
67
+ }
68
+ export interface ReviewIssue {
69
+ severity: 'critical' | 'major' | 'minor';
70
+ description: string;
71
+ file?: string;
72
+ suggestion?: string;
73
+ }
74
+ export interface ReviewResult {
75
+ status: 'approved' | 'needs_changes';
76
+ buildSuccess: boolean;
77
+ issues: ReviewIssue[];
78
+ suggestions: string[];
79
+ summary: string;
80
+ raw: string;
81
+ }
82
+ export interface TaskResult {
83
+ taskName: string;
84
+ taskBranch: string;
85
+ [key: string]: any;
86
+ }
87
+ export interface LaneState {
88
+ label: string;
89
+ status: 'pending' | 'running' | 'completed' | 'failed' | 'paused' | 'waiting' | 'reviewing';
90
+ currentTaskIndex: number;
91
+ totalTasks: number;
92
+ worktreeDir: string | null;
93
+ pipelineBranch: string | null;
94
+ startTime: number;
95
+ endTime: number | null;
96
+ error: string | null;
97
+ dependencyRequest: DependencyRequestPlan | null;
98
+ updatedAt?: number;
99
+ tasksFile?: string;
100
+ }
101
+ export interface ConversationEntry {
102
+ timestamp: string;
103
+ role: 'user' | 'assistant' | 'reviewer' | 'system';
104
+ task: string | null;
105
+ fullText: string;
106
+ textLength: number;
107
+ model: string | null;
108
+ }
109
+ export interface GitLogEntry {
110
+ timestamp: string;
111
+ operation: string;
112
+ [key: string]: any;
113
+ }
114
+ export interface EventEntry {
115
+ timestamp: string;
116
+ event: string;
117
+ [key: string]: any;
118
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Shared type definitions for CursorFlow
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}