@litmers/cursorflow-orchestrator 0.1.37 → 0.1.40
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/README.md +13 -13
- package/commands/cursorflow-init.md +113 -32
- package/commands/cursorflow-prepare.md +146 -339
- package/commands/cursorflow-run.md +148 -131
- package/dist/cli/add.js +8 -4
- package/dist/cli/add.js.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/new.js +3 -5
- package/dist/cli/new.js.map +1 -1
- package/dist/cli/prepare.js +0 -1
- package/dist/cli/prepare.js.map +1 -1
- package/dist/cli/resume.js +24 -15
- package/dist/cli/resume.js.map +1 -1
- package/dist/cli/run.js +1 -6
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/setup-commands.d.ts +1 -0
- package/dist/cli/setup-commands.js +1 -0
- package/dist/cli/setup-commands.js.map +1 -1
- package/dist/core/orchestrator.js +13 -5
- package/dist/core/orchestrator.js.map +1 -1
- package/dist/core/runner/agent.d.ts +5 -1
- package/dist/core/runner/agent.js +31 -1
- package/dist/core/runner/agent.js.map +1 -1
- package/dist/core/runner/pipeline.d.ts +0 -1
- package/dist/core/runner/pipeline.js +136 -173
- package/dist/core/runner/pipeline.js.map +1 -1
- package/dist/core/runner/prompt.d.ts +0 -1
- package/dist/core/runner/prompt.js +11 -16
- package/dist/core/runner/prompt.js.map +1 -1
- package/dist/core/runner/task.d.ts +1 -2
- package/dist/core/runner/task.js +31 -40
- package/dist/core/runner/task.js.map +1 -1
- package/dist/core/runner.js +15 -2
- package/dist/core/runner.js.map +1 -1
- package/dist/core/stall-detection.d.ts +32 -4
- package/dist/core/stall-detection.js +151 -149
- package/dist/core/stall-detection.js.map +1 -1
- package/dist/services/logging/console.d.ts +7 -1
- package/dist/services/logging/console.js +13 -3
- package/dist/services/logging/console.js.map +1 -1
- package/dist/services/logging/formatter.d.ts +1 -0
- package/dist/services/logging/formatter.js +6 -3
- package/dist/services/logging/formatter.js.map +1 -1
- package/dist/types/config.d.ts +3 -1
- package/dist/types/logging.d.ts +1 -1
- package/dist/types/task.d.ts +3 -8
- package/dist/utils/config.js +5 -0
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/doctor.js +4 -4
- package/dist/utils/doctor.js.map +1 -1
- package/dist/utils/enhanced-logger.d.ts +1 -1
- package/dist/utils/enhanced-logger.js +3 -3
- package/dist/utils/enhanced-logger.js.map +1 -1
- package/dist/utils/git.d.ts +12 -1
- package/dist/utils/git.js +56 -1
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/health.js +13 -13
- package/dist/utils/health.js.map +1 -1
- package/dist/utils/log-formatter.d.ts +1 -1
- package/dist/utils/log-formatter.js +45 -8
- package/dist/utils/log-formatter.js.map +1 -1
- package/dist/utils/logger.js +2 -2
- package/dist/utils/logger.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/add.ts +9 -4
- package/src/cli/index.ts +3 -0
- package/src/cli/new.ts +3 -5
- package/src/cli/prepare.ts +0 -1
- package/src/cli/resume.ts +28 -19
- package/src/cli/run.ts +1 -6
- package/src/cli/setup-commands.ts +1 -1
- package/src/core/orchestrator.ts +14 -5
- package/src/core/runner/agent.ts +36 -4
- package/src/core/runner/pipeline.ts +149 -182
- package/src/core/runner/prompt.ts +11 -18
- package/src/core/runner/task.ts +32 -41
- package/src/core/runner.ts +17 -2
- package/src/core/stall-detection.ts +263 -147
- package/src/services/logging/console.ts +13 -3
- package/src/services/logging/formatter.ts +6 -3
- package/src/types/config.ts +3 -1
- package/src/types/logging.ts +4 -2
- package/src/types/task.ts +3 -8
- package/src/utils/config.ts +6 -0
- package/src/utils/doctor.ts +5 -5
- package/src/utils/enhanced-logger.ts +3 -3
- package/src/utils/flow.ts +1 -0
- package/src/utils/git.ts +61 -1
- package/src/utils/health.ts +15 -15
- package/src/utils/log-formatter.ts +51 -8
- package/src/utils/logger.ts +2 -2
- package/commands/cursorflow-add.md +0 -159
- package/commands/cursorflow-clean.md +0 -84
- package/commands/cursorflow-doctor.md +0 -102
- package/commands/cursorflow-models.md +0 -51
- package/commands/cursorflow-monitor.md +0 -90
- package/commands/cursorflow-new.md +0 -87
- package/commands/cursorflow-resume.md +0 -205
- package/commands/cursorflow-signal.md +0 -52
- package/commands/cursorflow-stop.md +0 -55
- package/commands/cursorflow-triggers.md +0 -250
package/README.md
CHANGED
|
@@ -77,9 +77,9 @@ cursorflow new SearchFeature --lanes "api,web,mobile"
|
|
|
77
77
|
```
|
|
78
78
|
_cursorflow/flows/001_SearchFeature/
|
|
79
79
|
├── flow.meta.json # Flow 메타데이터
|
|
80
|
-
├──
|
|
81
|
-
├──
|
|
82
|
-
└──
|
|
80
|
+
├── api.json # API 레인 (빈 상태)
|
|
81
|
+
├── web.json # Web 레인 (빈 상태)
|
|
82
|
+
└── mobile.json # Mobile 레인 (빈 상태)
|
|
83
83
|
```
|
|
84
84
|
|
|
85
85
|
---
|
|
@@ -178,7 +178,7 @@ Within the `cursorflow monitor` dashboard:
|
|
|
178
178
|
{
|
|
179
179
|
"branchPrefix": "feature/lane-1-",
|
|
180
180
|
"timeout": 600000,
|
|
181
|
-
"enableIntervention":
|
|
181
|
+
"enableIntervention": true,
|
|
182
182
|
"enableReview": true,
|
|
183
183
|
"reviewModel": "sonnet-4.5-thinking",
|
|
184
184
|
"tasks": [
|
|
@@ -203,7 +203,7 @@ Within the `cursorflow monitor` dashboard:
|
|
|
203
203
|
| Option | Type | Default | Description |
|
|
204
204
|
|--------|------|---------|-------------|
|
|
205
205
|
| `timeout` | number | 600000 | Task timeout in milliseconds (10 min) |
|
|
206
|
-
| `enableIntervention` | boolean |
|
|
206
|
+
| `enableIntervention` | boolean | true | Enable stdin piping for intervention |
|
|
207
207
|
| `model` | string | "sonnet-4.5" | AI model to use |
|
|
208
208
|
| `enableReview` | boolean | true | Enable AI code review |
|
|
209
209
|
|
|
@@ -222,7 +222,7 @@ JSON 파일에서 `dependsOn` 필드 추가:
|
|
|
222
222
|
{
|
|
223
223
|
"name": "integrate",
|
|
224
224
|
"prompt": "API 연동...",
|
|
225
|
-
"dependsOn": ["
|
|
225
|
+
"dependsOn": ["backend:implement"] // ← 이 태스크 완료 후 시작
|
|
226
226
|
}
|
|
227
227
|
]
|
|
228
228
|
}
|
|
@@ -233,9 +233,9 @@ JSON 파일에서 `dependsOn` 필드 추가:
|
|
|
233
233
|
### 실행 흐름 예시
|
|
234
234
|
|
|
235
235
|
```
|
|
236
|
-
|
|
236
|
+
1-backend: [setup] → [implement] → [test]
|
|
237
237
|
↓ 완료!
|
|
238
|
-
|
|
238
|
+
2-frontend: [setup] ─────┴─ 대기 → [integrate] → [test]
|
|
239
239
|
```
|
|
240
240
|
|
|
241
241
|
- 백엔드와 프론트엔드 **동시 시작**
|
|
@@ -246,7 +246,7 @@ JSON 파일에서 `dependsOn` 필드 추가:
|
|
|
246
246
|
|
|
247
247
|
```bash
|
|
248
248
|
cursorflow doctor --tasks-dir _cursorflow/tasks/MyFeature
|
|
249
|
-
# ❌ Cyclic dependency:
|
|
249
|
+
# ❌ Cyclic dependency: a:task1 → b:task2 → a:task1
|
|
250
250
|
```
|
|
251
251
|
|
|
252
252
|
## 🩺 Pre-flight Checks
|
|
@@ -308,12 +308,12 @@ CursorFlow provides comprehensive logging with automatic cleanup and export opti
|
|
|
308
308
|
|
|
309
309
|
### Log Format
|
|
310
310
|
|
|
311
|
-
Logs use the format `[
|
|
312
|
-
- `
|
|
313
|
-
- `
|
|
311
|
+
Logs use the format `[{n}-{t}-{lanename}]`:
|
|
312
|
+
- `{n}`: Lane number (1-indexed)
|
|
313
|
+
- `{t}`: Task number (1-indexed)
|
|
314
314
|
- `{lanename}`: First 10 characters of lane name
|
|
315
315
|
|
|
316
|
-
Example: `[
|
|
316
|
+
Example: `[1-2-backend]` = Lane 1, Task 2, lane "backend"
|
|
317
317
|
|
|
318
318
|
### Features
|
|
319
319
|
- **ANSI Stripping**: Clean logs without terminal escape codes
|
|
@@ -1,50 +1,131 @@
|
|
|
1
|
-
#
|
|
1
|
+
# cursorflow init
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
Initialize CursorFlow in your project. This command creates the default configuration file, sets up the required directory structure, and prepares the environment for parallel AI orchestration.
|
|
3
|
+
프로젝트에 CursorFlow를 초기화합니다.
|
|
5
4
|
|
|
6
|
-
##
|
|
5
|
+
## 사용법
|
|
7
6
|
|
|
8
7
|
```bash
|
|
9
8
|
cursorflow init [options]
|
|
10
9
|
```
|
|
11
10
|
|
|
12
|
-
##
|
|
11
|
+
## 옵션
|
|
13
12
|
|
|
14
|
-
|
|
|
13
|
+
| 옵션 | 설명 |
|
|
15
14
|
|------|------|
|
|
16
|
-
| `--example` |
|
|
17
|
-
| `--config-only` |
|
|
18
|
-
| `--no-commands` |
|
|
19
|
-
| `--no-gitignore` |
|
|
20
|
-
| `--force` |
|
|
15
|
+
| `--example` | 예제 Flow를 생성하여 빠르게 시작 |
|
|
16
|
+
| `--config-only` | `cursorflow.config.js` 파일만 생성 |
|
|
17
|
+
| `--no-commands` | Cursor IDE 커맨드 설치 건너뛰기 |
|
|
18
|
+
| `--no-gitignore` | `.gitignore`에 `_cursorflow/` 추가 안 함 |
|
|
19
|
+
| `--force` | 기존 설정 덮어쓰기 |
|
|
21
20
|
|
|
22
|
-
##
|
|
21
|
+
## 생성되는 구조
|
|
23
22
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
```
|
|
24
|
+
your-project/
|
|
25
|
+
├── cursorflow.config.js # 중앙 설정 파일
|
|
26
|
+
├── _cursorflow/
|
|
27
|
+
│ ├── flows/ # Flow 정의 (new 커맨드로 생성)
|
|
28
|
+
│ ├── tasks/ # Legacy 태스크 (deprecated)
|
|
29
|
+
│ └── logs/ # 실행 로그
|
|
30
|
+
└── .cursor/
|
|
31
|
+
└── commands/cursorflow/ # Cursor IDE 커맨드
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## 빠른 시작
|
|
35
|
+
|
|
36
|
+
### Step 1: 초기화
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
cd your-project
|
|
40
|
+
cursorflow init
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Step 2: Flow 생성
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# 백엔드와 프론트엔드 2개 레인으로 Flow 생성
|
|
47
|
+
cursorflow new MyFeature --lanes "backend,frontend"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Step 3: Task 추가
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# 백엔드 레인에 태스크 추가
|
|
54
|
+
cursorflow add MyFeature backend \
|
|
55
|
+
--task "name=implement|prompt=API 엔드포인트 구현"
|
|
56
|
+
|
|
57
|
+
# 프론트엔드 레인에 태스크 추가 (백엔드 완료 후 시작)
|
|
58
|
+
cursorflow add MyFeature frontend \
|
|
59
|
+
--task "name=ui|prompt=UI 컴포넌트 구현" \
|
|
60
|
+
--after "backend"
|
|
61
|
+
```
|
|
29
62
|
|
|
30
|
-
|
|
63
|
+
### Step 4: 검증 및 실행
|
|
31
64
|
|
|
32
65
|
```bash
|
|
33
|
-
#
|
|
34
|
-
cursorflow
|
|
66
|
+
# 설정 검증
|
|
67
|
+
cursorflow doctor MyFeature
|
|
68
|
+
|
|
69
|
+
# 실행
|
|
70
|
+
cursorflow run MyFeature
|
|
71
|
+
|
|
72
|
+
# 모니터링
|
|
73
|
+
cursorflow monitor latest
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## 워크플로우 다이어그램
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
|
80
|
+
│ 1. Create Flow │ ──▶ │ 2. Add Tasks │ ──▶ │ 3. Validate │ ──▶ │ 4. Run │
|
|
81
|
+
│ (new) │ │ (add) │ │ (doctor) │ │ (run) │
|
|
82
|
+
└─────────────────┘ └─────────────────┘ └─────────────────┘ └─────────────────┘
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## 설정 파일 (cursorflow.config.js)
|
|
86
|
+
|
|
87
|
+
```javascript
|
|
88
|
+
module.exports = {
|
|
89
|
+
// 기본 브랜치 (worktree 생성 기준)
|
|
90
|
+
baseBranch: 'main',
|
|
91
|
+
|
|
92
|
+
// 동시 실행 레인 수
|
|
93
|
+
maxConcurrentLanes: 3,
|
|
94
|
+
|
|
95
|
+
// 기본 AI 모델 (task에서 model 생략 시 사용)
|
|
96
|
+
defaultModel: 'sonnet-4.5',
|
|
97
|
+
|
|
98
|
+
// 태스크 타임아웃 (ms)
|
|
99
|
+
timeout: 600000,
|
|
100
|
+
|
|
101
|
+
// AI 리뷰 활성화
|
|
102
|
+
enableReview: true,
|
|
103
|
+
reviewModel: 'sonnet-4.5-thinking',
|
|
104
|
+
|
|
105
|
+
// Flow/Task 디렉토리
|
|
106
|
+
flowsDir: '_cursorflow/flows',
|
|
107
|
+
tasksDir: '_cursorflow/tasks', // legacy
|
|
108
|
+
logsDir: '_cursorflow/logs',
|
|
109
|
+
};
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## 기본 모델 설정
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
# 기본 모델 확인
|
|
116
|
+
cursorflow config defaultModel
|
|
117
|
+
|
|
118
|
+
# 기본 모델 변경
|
|
119
|
+
cursorflow config defaultModel gemini-2.5-flash
|
|
35
120
|
|
|
36
|
-
#
|
|
37
|
-
cursorflow
|
|
121
|
+
# 사용 가능한 모델 목록
|
|
122
|
+
cursorflow models
|
|
38
123
|
```
|
|
39
124
|
|
|
40
|
-
##
|
|
125
|
+
## 관련 명령어
|
|
41
126
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
3. **Create**: Start your own feature tasks with:
|
|
48
|
-
```bash
|
|
49
|
-
cursorflow prepare MyFeature
|
|
50
|
-
```
|
|
127
|
+
- [cursorflow new](cursorflow-new.md) - Flow와 Lane 생성
|
|
128
|
+
- [cursorflow add](cursorflow-add.md) - Lane에 Task 추가
|
|
129
|
+
- [cursorflow run](cursorflow-run.md) - Flow 실행
|
|
130
|
+
- [cursorflow monitor](cursorflow-monitor.md) - 실행 모니터링
|
|
131
|
+
- [cursorflow doctor](cursorflow-doctor.md) - 설정 검증
|