@litmers/cursorflow-orchestrator 0.1.37 → 0.1.39
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/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/resume.js +26 -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/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 +116 -167
- 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 +24 -36
- package/dist/core/runner/task.js.map +1 -1
- package/dist/core/runner.js +12 -2
- package/dist/core/runner.js.map +1 -1
- package/dist/core/stall-detection.d.ts +16 -4
- package/dist/core/stall-detection.js +97 -148
- package/dist/core/stall-detection.js.map +1 -1
- package/dist/services/logging/console.d.ts +7 -1
- package/dist/services/logging/console.js +15 -3
- package/dist/services/logging/console.js.map +1 -1
- package/dist/services/logging/formatter.js +2 -0
- package/dist/services/logging/formatter.js.map +1 -1
- package/dist/types/config.d.ts +1 -1
- package/dist/types/logging.d.ts +1 -1
- package/dist/types/task.d.ts +2 -7
- package/dist/utils/doctor.js +4 -4
- package/dist/utils/doctor.js.map +1 -1
- package/dist/utils/git.js +2 -0
- 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.js +44 -7
- 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/resume.ts +30 -19
- package/src/cli/run.ts +1 -6
- package/src/cli/setup-commands.ts +1 -1
- package/src/core/runner/agent.ts +36 -4
- package/src/core/runner/pipeline.ts +127 -176
- package/src/core/runner/prompt.ts +11 -18
- package/src/core/runner/task.ts +24 -37
- package/src/core/runner.ts +13 -2
- package/src/core/stall-detection.ts +190 -146
- package/src/services/logging/console.ts +15 -3
- package/src/services/logging/formatter.ts +2 -0
- package/src/types/config.ts +1 -1
- package/src/types/logging.ts +4 -2
- package/src/types/task.ts +2 -7
- package/src/utils/doctor.ts +5 -5
- package/src/utils/git.ts +2 -0
- package/src/utils/health.ts +15 -15
- package/src/utils/log-formatter.ts +50 -7
- 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/src/utils/logger.ts
CHANGED
|
@@ -144,9 +144,9 @@ export function withContext(context: string) {
|
|
|
144
144
|
*/
|
|
145
145
|
export function section(message: string): void {
|
|
146
146
|
console.log('');
|
|
147
|
-
console.log(`${COLORS.cyan}
|
|
147
|
+
console.log(`${COLORS.cyan}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${COLORS.reset}`);
|
|
148
148
|
console.log(`${COLORS.cyan} ${message}${COLORS.reset}`);
|
|
149
|
-
console.log(`${COLORS.cyan}
|
|
149
|
+
console.log(`${COLORS.cyan}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${COLORS.reset}`);
|
|
150
150
|
console.log('');
|
|
151
151
|
}
|
|
152
152
|
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
# cursorflow add
|
|
2
|
-
|
|
3
|
-
Lane에 Task를 추가합니다.
|
|
4
|
-
|
|
5
|
-
## 사용법
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
cursorflow add <FlowName> <LaneName> --task "name=...|model=...|prompt=..." [--after ...]
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
## 설명
|
|
12
|
-
|
|
13
|
-
지정된 Flow의 Lane에 Task를 추가합니다.
|
|
14
|
-
`--task` 옵션은 여러 번 사용하여 여러 태스크를 순차적으로 추가할 수 있습니다.
|
|
15
|
-
|
|
16
|
-
## --task 형식
|
|
17
|
-
|
|
18
|
-
```
|
|
19
|
-
"name=<이름>|model=<모델>|prompt=<프롬프트>"
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
### 필수 필드
|
|
23
|
-
|
|
24
|
-
| 필드 | 설명 | 예시 |
|
|
25
|
-
|------|------|------|
|
|
26
|
-
| `name` | 태스크 이름 (영문, 숫자, -, _) | `name=implement` |
|
|
27
|
-
| `prompt` | 태스크 프롬프트/지시사항 | `prompt=API 구현` |
|
|
28
|
-
|
|
29
|
-
### 선택 필드
|
|
30
|
-
|
|
31
|
-
| 필드 | 설명 | 예시 |
|
|
32
|
-
|------|------|------|
|
|
33
|
-
| `model` | AI 모델 (생략 시 기본 모델 사용) | `model=<your-model>` |
|
|
34
|
-
|
|
35
|
-
기본 모델 설정: `cursorflow config defaultModel <model-name>`
|
|
36
|
-
|
|
37
|
-
## --after 형식 (의존성 설정)
|
|
38
|
-
|
|
39
|
-
첫 번째 태스크가 시작되기 전에 완료되어야 할 태스크를 지정합니다.
|
|
40
|
-
|
|
41
|
-
| 형식 | 설명 |
|
|
42
|
-
|------|------|
|
|
43
|
-
| `"lane"` | 해당 레인의 **마지막 태스크** 완료 후 시작 |
|
|
44
|
-
| `"lane:task"` | 특정 태스크 완료 후 시작 |
|
|
45
|
-
| `"a:t1, b:t2"` | **여러 태스크가 모두 완료**된 후 시작 |
|
|
46
|
-
|
|
47
|
-
## 예시
|
|
48
|
-
|
|
49
|
-
### 기본 사용: 단일 태스크 추가 (기본 모델 사용)
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
cursorflow add SearchFeature api \
|
|
53
|
-
--task "name=implement|prompt=검색 API 구현"
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
### 여러 태스크 추가
|
|
57
|
-
|
|
58
|
-
```bash
|
|
59
|
-
cursorflow add SearchFeature api \
|
|
60
|
-
--task "name=plan|prompt=API 설계" \
|
|
61
|
-
--task "name=implement|prompt=검색 API 구현" \
|
|
62
|
-
--task "name=test|prompt=테스트 코드 작성"
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### 의존성 설정: 특정 태스크 완료 후 시작
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
# api 레인의 implement 태스크 완료 후 시작
|
|
69
|
-
cursorflow add SearchFeature web \
|
|
70
|
-
--task "name=ui|prompt=검색 UI 구현" \
|
|
71
|
-
--after "api:implement"
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
### 의존성 설정: 레인 전체 완료 후 시작
|
|
75
|
-
|
|
76
|
-
```bash
|
|
77
|
-
# api 레인의 마지막 태스크 완료 후 시작
|
|
78
|
-
cursorflow add SearchFeature web \
|
|
79
|
-
--task "name=ui|prompt=검색 UI 구현" \
|
|
80
|
-
--after "api"
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
### 다중 의존성: 여러 태스크 완료 후 시작
|
|
84
|
-
|
|
85
|
-
```bash
|
|
86
|
-
# web과 mobile 모두 완료된 후 시작
|
|
87
|
-
cursorflow add SearchFeature e2e \
|
|
88
|
-
--task "name=verify|prompt=E2E 테스트" \
|
|
89
|
-
--after "web:ui, mobile:app"
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
## 출력 예시
|
|
93
|
-
|
|
94
|
-
```
|
|
95
|
-
✅ 3개 태스크 추가 완료
|
|
96
|
-
|
|
97
|
-
📄 01-api.json
|
|
98
|
-
|
|
99
|
-
├── plan (<default-model>)
|
|
100
|
-
├── implement (<default-model>)
|
|
101
|
-
└── test (<default-model>)
|
|
102
|
-
|
|
103
|
-
전체 태스크 목록:
|
|
104
|
-
1. plan (new)
|
|
105
|
-
2. implement (new)
|
|
106
|
-
3. test (new)
|
|
107
|
-
|
|
108
|
-
다음 단계:
|
|
109
|
-
cursorflow run SearchFeature # Flow 실행
|
|
110
|
-
cursorflow doctor SearchFeature # 설정 검증
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
## 생성되는 Lane 파일 구조
|
|
114
|
-
|
|
115
|
-
```json
|
|
116
|
-
{
|
|
117
|
-
"laneName": "api",
|
|
118
|
-
"tasks": [
|
|
119
|
-
{
|
|
120
|
-
"name": "plan",
|
|
121
|
-
"model": "<your-model>",
|
|
122
|
-
"prompt": "API 설계"
|
|
123
|
-
},
|
|
124
|
-
{
|
|
125
|
-
"name": "implement",
|
|
126
|
-
"model": "<your-model>",
|
|
127
|
-
"prompt": "검색 API 구현"
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
"name": "test",
|
|
131
|
-
"model": "<your-model>",
|
|
132
|
-
"prompt": "테스트 코드 작성"
|
|
133
|
-
}
|
|
134
|
-
]
|
|
135
|
-
}
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
### 의존성이 있는 경우
|
|
139
|
-
|
|
140
|
-
```json
|
|
141
|
-
{
|
|
142
|
-
"laneName": "web",
|
|
143
|
-
"tasks": [
|
|
144
|
-
{
|
|
145
|
-
"name": "ui",
|
|
146
|
-
"model": "<your-model>",
|
|
147
|
-
"prompt": "검색 UI 구현",
|
|
148
|
-
"dependsOn": ["01-api:implement"]
|
|
149
|
-
}
|
|
150
|
-
]
|
|
151
|
-
}
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
## 관련 명령어
|
|
155
|
-
|
|
156
|
-
- [cursorflow new](cursorflow-new.md) - Flow와 Lane 생성
|
|
157
|
-
- [cursorflow run](cursorflow-run.md) - Flow 실행
|
|
158
|
-
- [cursorflow doctor](cursorflow-doctor.md) - 설정 검증
|
|
159
|
-
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
# CursorFlow Clean
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
Clean up temporary resources created by CursorFlow, including Git worktrees, feature branches, log files, and task definitions.
|
|
5
|
-
|
|
6
|
-
## Usage
|
|
7
|
-
|
|
8
|
-
```bash
|
|
9
|
-
cursorflow clean <type> [options]
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
## Clean Types
|
|
13
|
-
|
|
14
|
-
| Type | Description |
|
|
15
|
-
|------|------|
|
|
16
|
-
| `branches` | Remove local feature branches created by CursorFlow |
|
|
17
|
-
| `worktrees` | Remove temporary Git worktrees |
|
|
18
|
-
| `logs` | Clear all run and terminal logs |
|
|
19
|
-
| `tasks` | Remove task definition directories (keeps `example/`) |
|
|
20
|
-
| `all` | Clean everything (branches, worktrees, logs, and tasks) |
|
|
21
|
-
|
|
22
|
-
## Options
|
|
23
|
-
|
|
24
|
-
| Option | Description |
|
|
25
|
-
|------|------|
|
|
26
|
-
| `--run <id>` | Clean resources linked to a specific run |
|
|
27
|
-
| `--older-than <time>` | Clean resources older than a specific time (e.g., `24h`, `7d`) |
|
|
28
|
-
| `--orphaned` | Clean orphaned resources (worktrees without runs, etc.) |
|
|
29
|
-
| `--dry-run` | Show what would be removed without actually deleting anything |
|
|
30
|
-
| `--force` | Force removal (ignore uncommitted changes in worktrees) |
|
|
31
|
-
| `--include-latest` | Also remove the most recent item (by default, latest is kept) |
|
|
32
|
-
| `--help`, `-h` | Show help |
|
|
33
|
-
|
|
34
|
-
## Examples
|
|
35
|
-
|
|
36
|
-
### Review before deleting (latest is kept by default)
|
|
37
|
-
```bash
|
|
38
|
-
cursorflow clean all --dry-run
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
### Clean only worktrees (keeps the latest worktree)
|
|
42
|
-
```bash
|
|
43
|
-
cursorflow clean worktrees
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
### Force clean everything including the latest
|
|
47
|
-
```bash
|
|
48
|
-
cursorflow clean all --force --include-latest
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
### Remove all worktrees including the latest
|
|
52
|
-
```bash
|
|
53
|
-
cursorflow clean worktrees --include-latest
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
### Clean resources for a specific run
|
|
57
|
-
```bash
|
|
58
|
-
cursorflow clean all --run run-1734873132
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### Clean logs and tasks older than 7 days
|
|
62
|
-
```bash
|
|
63
|
-
cursorflow clean logs --older-than 7d
|
|
64
|
-
cursorflow clean tasks --older-than 7d
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
### Clean orphaned worktrees and branches
|
|
68
|
-
```bash
|
|
69
|
-
cursorflow clean all --orphaned
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
## Notes
|
|
73
|
-
|
|
74
|
-
1. **Safety**: It is highly recommended to run with `--dry-run` first to see exactly what will be deleted.
|
|
75
|
-
2. **Worktrees**: The command identifies CursorFlow worktrees by their location (usually in `_cursorflow/worktrees/`) or their prefix.
|
|
76
|
-
3. **Branches**: Only branches starting with the configured `branchPrefix` (default: `cursorflow/`) are targeted.
|
|
77
|
-
4. **Irreversible**: Once logs are deleted, they cannot be recovered.
|
|
78
|
-
5. **Default Behavior**: By default, the most recent item is preserved. The "most recent" is determined by:
|
|
79
|
-
- **Worktrees**: Directory modification time
|
|
80
|
-
- **Branches**: Latest commit timestamp
|
|
81
|
-
- **Logs**: File/directory modification time
|
|
82
|
-
- **Tasks**: Directory modification time
|
|
83
|
-
|
|
84
|
-
Use `--include-latest` to remove everything including the most recent item.
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
# CursorFlow Doctor
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
Verify that your environment and flow configurations are properly set up for CursorFlow.
|
|
5
|
-
|
|
6
|
-
## Usage
|
|
7
|
-
|
|
8
|
-
```bash
|
|
9
|
-
cursorflow doctor [flow-name] [options]
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
## Checks Performed
|
|
13
|
-
- **Environment**: Git repository status, remote availability, and worktree support.
|
|
14
|
-
- **Cursor IDE**: Verifies `cursor-agent` is installed and authenticated.
|
|
15
|
-
- **Flow/Tasks**: (Optional) Validates flow JSON files for schema errors or missing fields.
|
|
16
|
-
|
|
17
|
-
## Options
|
|
18
|
-
|
|
19
|
-
| Option | Description |
|
|
20
|
-
|------|------|
|
|
21
|
-
| `[flow-name]` | Flow name to validate (e.g., `SearchFeature`) |
|
|
22
|
-
| `--tasks-dir <path>` | Validate flow/tasks in a specific directory (legacy) |
|
|
23
|
-
| `--executor <type>` | Check environment for `cursor-agent` \| `cloud` |
|
|
24
|
-
| `--test-agent` | Run an interactive agent test (to approve permissions) |
|
|
25
|
-
| `--no-cursor` | Skip Cursor Agent installation and auth checks |
|
|
26
|
-
| `--json` | Output the report in machine-readable JSON format |
|
|
27
|
-
|
|
28
|
-
## Flow Validation
|
|
29
|
-
|
|
30
|
-
When a flow name or `--tasks-dir` is provided, the doctor performs comprehensive validation:
|
|
31
|
-
|
|
32
|
-
### Structure Validation
|
|
33
|
-
- **tasks array**: Must exist and be non-empty
|
|
34
|
-
- **task.name**: Required, must be alphanumeric with `-` and `_` only, unique within lane
|
|
35
|
-
- **task.prompt**: Required, should be descriptive (warns if < 10 chars)
|
|
36
|
-
- **task.model**: Optional, must be string if provided
|
|
37
|
-
- **task.dependsOn**: Optional, task-level dependencies
|
|
38
|
-
|
|
39
|
-
### Dependency Validation (DAG)
|
|
40
|
-
- **Unknown dependencies**: Reports if `dependsOn` references non-existent lanes/tasks
|
|
41
|
-
- **Circular dependencies**: Detects cycles (e.g., A→B→A) that would cause deadlock
|
|
42
|
-
- Reports the exact cycle path for easy debugging
|
|
43
|
-
|
|
44
|
-
### Branch Validation
|
|
45
|
-
- **Prefix collision**: Warns if multiple lanes use the same `branchPrefix`
|
|
46
|
-
- **Existing branch conflicts**: Detects if existing branches match a lane's prefix
|
|
47
|
-
- **Duplicate lane names**: Ensures each lane file has a unique name
|
|
48
|
-
|
|
49
|
-
## Examples
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
# Basic environment check
|
|
53
|
-
cursorflow doctor
|
|
54
|
-
|
|
55
|
-
# Validate a specific flow by name
|
|
56
|
-
cursorflow doctor SearchFeature
|
|
57
|
-
|
|
58
|
-
# Test agent permissions
|
|
59
|
-
cursorflow doctor --test-agent
|
|
60
|
-
|
|
61
|
-
# Validate a specific flow directory
|
|
62
|
-
cursorflow doctor --tasks-dir _cursorflow/flows/001_SearchFeature
|
|
63
|
-
|
|
64
|
-
# Skip cursor checks (faster)
|
|
65
|
-
cursorflow doctor SearchFeature --no-cursor
|
|
66
|
-
|
|
67
|
-
# Output as JSON
|
|
68
|
-
cursorflow doctor SearchFeature --json
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
## Example Output
|
|
72
|
-
|
|
73
|
-
```
|
|
74
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
75
|
-
🩺 CursorFlow Doctor
|
|
76
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
77
|
-
|
|
78
|
-
cwd: /home/user/project
|
|
79
|
-
repo: /home/user/project
|
|
80
|
-
tasks: /home/user/project/_cursorflow/flows/001_SearchFeature
|
|
81
|
-
|
|
82
|
-
✅ All checks passed
|
|
83
|
-
|
|
84
|
-
💡 Tip: If this is your first run, we recommend running:
|
|
85
|
-
cursorflow doctor --test-agent
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
## Common Issues & Fixes
|
|
89
|
-
|
|
90
|
-
| Issue | Potential Fix |
|
|
91
|
-
|-------|---------------|
|
|
92
|
-
| `Cursor Agent not found` | Ensure Cursor IDE is installed and `cursor` command is in PATH. |
|
|
93
|
-
| `Not authenticated` | Open Cursor IDE and log in to your account. |
|
|
94
|
-
| `Worktree not supported` | Upgrade your Git version (requires Git >= 2.5). |
|
|
95
|
-
| `Circular dependency` | Check the `dependsOn` fields in your task JSON files. |
|
|
96
|
-
| `Flow not found` | Verify flow name or create with `cursorflow new`. |
|
|
97
|
-
|
|
98
|
-
## Related Commands
|
|
99
|
-
|
|
100
|
-
- [cursorflow new](cursorflow-new.md) - Create Flow and Lanes
|
|
101
|
-
- [cursorflow add](cursorflow-add.md) - Add Tasks to Lanes
|
|
102
|
-
- [cursorflow run](cursorflow-run.md) - Run Flow
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
# CursorFlow Models
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
List available AI models supported by CursorFlow and their recommended use cases. These models are discovered from your local `cursor-agent` installation.
|
|
5
|
-
|
|
6
|
-
## Usage
|
|
7
|
-
|
|
8
|
-
```bash
|
|
9
|
-
cursorflow models [options]
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
## Options
|
|
13
|
-
|
|
14
|
-
| Option | Description |
|
|
15
|
-
|------|------|
|
|
16
|
-
| `--list`, `-l` | List models in a table (default) |
|
|
17
|
-
| `--json` | Output model list as JSON |
|
|
18
|
-
|
|
19
|
-
## Available Models
|
|
20
|
-
|
|
21
|
-
| ID | Name | Provider | Recommended Use |
|
|
22
|
-
|----|------|----------|-----------------|
|
|
23
|
-
| `sonnet-4.5` | Claude 3.7 Sonnet | Anthropic | General implementation, fast work (Most versatile) |
|
|
24
|
-
| `sonnet-4.5-thinking` | Claude 3.7 Sonnet (Thinking) | Anthropic | Code review, deeper reasoning (Thinking model) |
|
|
25
|
-
| `opus-4.5` | Claude 4.0 Opus | Anthropic | Complex tasks, high quality (Advanced) |
|
|
26
|
-
| `opus-4.5-thinking` | Claude 4.0 Opus (Thinking) | Anthropic | Architecture design (Premium) |
|
|
27
|
-
| `gpt-5.2` | GPT-5.2 | OpenAI | General tasks |
|
|
28
|
-
| `gpt-5.2-high` | GPT-5.2 High Reasoning | OpenAI | Advanced reasoning (High performance) |
|
|
29
|
-
|
|
30
|
-
## Model Configuration
|
|
31
|
-
|
|
32
|
-
In your task `.json` files, specify the model like this:
|
|
33
|
-
|
|
34
|
-
```json
|
|
35
|
-
{
|
|
36
|
-
"model": "sonnet-4.5",
|
|
37
|
-
"tasks": [
|
|
38
|
-
{
|
|
39
|
-
"name": "implement",
|
|
40
|
-
"prompt": "..."
|
|
41
|
-
}
|
|
42
|
-
]
|
|
43
|
-
}
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
## Tips
|
|
47
|
-
|
|
48
|
-
- Use the `ID` from the `cursorflow models` output in your JSON files.
|
|
49
|
-
- You can set a default model in `cursorflow.config.js`.
|
|
50
|
-
- Individual tasks within a lane can override the lane-level model.
|
|
51
|
-
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
# CursorFlow Monitor
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
The `cursorflow monitor` command provides a powerful, interactive terminal-based dashboard to track the execution status of all lanes in real-time. It allows you to visualize dependencies, stream live terminal output, and intervene in running tasks.
|
|
5
|
-
|
|
6
|
-
## Usage
|
|
7
|
-
|
|
8
|
-
```bash
|
|
9
|
-
# Monitor the most recent run
|
|
10
|
-
cursorflow monitor
|
|
11
|
-
|
|
12
|
-
# List all runs (Multiple Flows Dashboard)
|
|
13
|
-
cursorflow monitor --list
|
|
14
|
-
|
|
15
|
-
# Monitor a specific run directory
|
|
16
|
-
cursorflow monitor run-2025-12-21T10-00-00
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Options
|
|
20
|
-
|
|
21
|
-
| Option | Description |
|
|
22
|
-
|--------|-------------|
|
|
23
|
-
| `[run-dir]` | Run directory or ID to monitor (default: latest) |
|
|
24
|
-
| `--list`, `-l` | Show all runs dashboard (interactive list) |
|
|
25
|
-
| `--interval <n>` | Refresh interval in seconds (default: 2) |
|
|
26
|
-
| `--help`, `-h` | Show help |
|
|
27
|
-
|
|
28
|
-
## Dashboard Controls
|
|
29
|
-
|
|
30
|
-
### List View (Main)
|
|
31
|
-
- **Navigation**: Use `↑` and `↓` to move between lanes.
|
|
32
|
-
- **Details**: Press `→` or `Enter` to enter the **Lane Detail View**.
|
|
33
|
-
- **Flow View**: Press `F` to see the task dependency graph (DAG).
|
|
34
|
-
- **All Runs**: Press `M` to switch to the **All Flows Dashboard**.
|
|
35
|
-
- **Unified Logs**: Press `U` to see a merged log stream of all lanes.
|
|
36
|
-
- **Quit**: Press `Q` to exit.
|
|
37
|
-
|
|
38
|
-
### All Flows Dashboard
|
|
39
|
-
- **Navigation**: Use `↑` and `↓` to select a flow.
|
|
40
|
-
- **Switch**: Press `→` or `Enter` to switch the monitor to the selected flow.
|
|
41
|
-
- **Delete**: Press `D` to delete a completed flow's logs (requires confirmation).
|
|
42
|
-
- **Refresh**: Press `R` to refresh the list of flows.
|
|
43
|
-
- **Back**: Press `M` or `Esc` to return to the List View.
|
|
44
|
-
|
|
45
|
-
### Lane Detail View
|
|
46
|
-
- **History Browsing**: Use `↑` and `↓` to scroll through conversation history.
|
|
47
|
-
- **Message Detail**: Press `→` or `Enter` on a message to see its full content.
|
|
48
|
-
- **Live Terminal**: Press `T` to enter the **Full Terminal View**.
|
|
49
|
-
- **Intervention**: Press `I` to send a manual prompt to the agent (requires `enableIntervention: true`).
|
|
50
|
-
- **Kill Process**: Press `K` to forcefully terminate a stuck agent process.
|
|
51
|
-
- **Back**: Press `←` or `Esc` to return to the List View.
|
|
52
|
-
|
|
53
|
-
### Full Terminal View
|
|
54
|
-
- **Scrolling**: Use `↑` and `↓` to scroll through the entire agent output log.
|
|
55
|
-
- **Back**: Press `T`, `←`, or `Esc` to return to the Lane Detail View.
|
|
56
|
-
|
|
57
|
-
### Intervention View
|
|
58
|
-
- **Typing**: Type your message directly.
|
|
59
|
-
- **Send**: Press `Enter` to send the intervention message.
|
|
60
|
-
- **Cancel**: Press `Esc` to cancel and return.
|
|
61
|
-
|
|
62
|
-
## Key Concepts
|
|
63
|
-
|
|
64
|
-
### Lane Statuses
|
|
65
|
-
| Status | Icon | Description |
|
|
66
|
-
|--------|------|-------------|
|
|
67
|
-
| `pending` | ⚪ | Lane is waiting to start |
|
|
68
|
-
| `waiting` | ⏳ | Waiting for parent dependencies to complete |
|
|
69
|
-
| `running` | 🔄 | Agent is currently executing tasks |
|
|
70
|
-
| `reviewing` | 👀 | AI Reviewer is checking the task results |
|
|
71
|
-
| `completed` | ✅ | All tasks and reviews finished successfully |
|
|
72
|
-
| `failed` | ❌ | A task or review failed with an error |
|
|
73
|
-
| `blocked` | 🚫 | Blocked by a failed dependency |
|
|
74
|
-
|
|
75
|
-
### Dependency Flow View
|
|
76
|
-
A visual representation of the Directed Acyclic Graph (DAG). It shows which lanes must finish before others can start, helping you understand the execution pipeline.
|
|
77
|
-
|
|
78
|
-
### Heartbeat Logs
|
|
79
|
-
CursorFlow monitors agent activity and logs status every few seconds. If a lane shows `0 bytes received` for a long period, it may be stuck or thinking deeply.
|
|
80
|
-
|
|
81
|
-
## Troubleshooting
|
|
82
|
-
|
|
83
|
-
### Lane is stuck
|
|
84
|
-
1. Enter the **Lane Detail View**.
|
|
85
|
-
2. Check the **PID** to ensure the process is still alive.
|
|
86
|
-
3. Check the **Live Terminal** preview or enter **Full Terminal View (T)**.
|
|
87
|
-
4. If it's truly stuck, press `K` to kill it, then use `cursorflow resume <lane>` to restart.
|
|
88
|
-
|
|
89
|
-
### Sending Instructions
|
|
90
|
-
If the agent is heading in the wrong direction, use the **Intervention (I)** feature to guide it without stopping the run. Note that this requires `enableIntervention: true` in the task's JSON configuration.
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
# cursorflow new
|
|
2
|
-
|
|
3
|
-
Flow와 Lane을 생성합니다.
|
|
4
|
-
|
|
5
|
-
## 사용법
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
cursorflow new <FlowName> --lanes "lane1,lane2,..."
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
## 설명
|
|
12
|
-
|
|
13
|
-
새로운 Flow 디렉토리를 생성하고, 지정된 Lane 파일들의 뼈대를 만듭니다.
|
|
14
|
-
각 Lane에 실제 Task를 추가하려면 `cursorflow add` 명령을 사용하세요.
|
|
15
|
-
|
|
16
|
-
## 옵션
|
|
17
|
-
|
|
18
|
-
| 옵션 | 설명 | 예시 |
|
|
19
|
-
|------|------|------|
|
|
20
|
-
| `--lanes <names>` | 콤마로 구분된 레인 이름 목록 (필수) | `--lanes "backend,frontend"` |
|
|
21
|
-
|
|
22
|
-
## 예시
|
|
23
|
-
|
|
24
|
-
### 기본 사용
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
# 백엔드와 프론트엔드 2개 레인 생성
|
|
28
|
-
cursorflow new ShopFeature --lanes "backend,frontend"
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
### 3개 레인 생성
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
# API, Web, Mobile 3개 레인 생성
|
|
35
|
-
cursorflow new SearchFeature --lanes "api,web,mobile"
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
## 생성 결과
|
|
39
|
-
|
|
40
|
-
```
|
|
41
|
-
_cursorflow/flows/001_ShopFeature/
|
|
42
|
-
├── flow.meta.json # Flow 메타데이터
|
|
43
|
-
├── 01-backend.json # Lane 1 (빈 상태)
|
|
44
|
-
└── 02-frontend.json # Lane 2 (빈 상태)
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
### flow.meta.json 스키마
|
|
48
|
-
|
|
49
|
-
```json
|
|
50
|
-
{
|
|
51
|
-
"id": "001",
|
|
52
|
-
"name": "ShopFeature",
|
|
53
|
-
"createdAt": "2024-12-25T10:30:00Z",
|
|
54
|
-
"createdBy": "user",
|
|
55
|
-
"baseBranch": "main",
|
|
56
|
-
"status": "pending",
|
|
57
|
-
"lanes": ["backend", "frontend"]
|
|
58
|
-
}
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### Lane 파일 스키마 (빈 상태)
|
|
62
|
-
|
|
63
|
-
```json
|
|
64
|
-
{
|
|
65
|
-
"laneName": "backend",
|
|
66
|
-
"tasks": []
|
|
67
|
-
}
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
## 다음 단계
|
|
71
|
-
|
|
72
|
-
Flow 생성 후, 각 Lane에 Task를 추가합니다:
|
|
73
|
-
|
|
74
|
-
```bash
|
|
75
|
-
cursorflow add ShopFeature backend \
|
|
76
|
-
--task "name=implement|prompt=API 구현"
|
|
77
|
-
|
|
78
|
-
cursorflow add ShopFeature frontend \
|
|
79
|
-
--task "name=ui|prompt=UI 구현" \
|
|
80
|
-
--after "backend:implement"
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
## 관련 명령어
|
|
84
|
-
|
|
85
|
-
- [cursorflow add](cursorflow-add.md) - Lane에 Task 추가
|
|
86
|
-
- [cursorflow run](cursorflow-run.md) - Flow 실행
|
|
87
|
-
|