@litmers/cursorflow-orchestrator 0.1.40 → 0.2.2
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 +0 -2
- package/README.md +7 -3
- package/commands/cursorflow-init.md +0 -4
- package/dist/cli/logs.js +108 -9
- package/dist/cli/logs.js.map +1 -1
- package/dist/cli/models.js +20 -3
- package/dist/cli/models.js.map +1 -1
- package/dist/cli/monitor.d.ts +7 -10
- package/dist/cli/monitor.js +1088 -1240
- package/dist/cli/monitor.js.map +1 -1
- package/dist/cli/resume.js +21 -1
- package/dist/cli/resume.js.map +1 -1
- package/dist/cli/run.js +28 -9
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/signal.d.ts +6 -1
- package/dist/cli/signal.js +94 -12
- package/dist/cli/signal.js.map +1 -1
- package/dist/cli/tasks.js +3 -46
- package/dist/cli/tasks.js.map +1 -1
- package/dist/core/agent-supervisor.d.ts +23 -0
- package/dist/core/agent-supervisor.js +42 -0
- package/dist/core/agent-supervisor.js.map +1 -0
- package/dist/core/auto-recovery.d.ts +2 -1
- package/dist/core/auto-recovery.js +6 -1
- package/dist/core/auto-recovery.js.map +1 -1
- package/dist/core/failure-policy.d.ts +0 -1
- package/dist/core/failure-policy.js +0 -1
- package/dist/core/failure-policy.js.map +1 -1
- package/dist/core/git-lifecycle-manager.d.ts +284 -0
- package/dist/core/git-lifecycle-manager.js +778 -0
- package/dist/core/git-lifecycle-manager.js.map +1 -0
- package/dist/core/git-pipeline-coordinator.d.ts +21 -0
- package/dist/core/git-pipeline-coordinator.js +205 -0
- package/dist/core/git-pipeline-coordinator.js.map +1 -0
- package/dist/core/intervention.d.ts +176 -0
- package/dist/core/intervention.js +424 -0
- package/dist/core/intervention.js.map +1 -0
- package/dist/core/lane-state-machine.d.ts +423 -0
- package/dist/core/lane-state-machine.js +890 -0
- package/dist/core/lane-state-machine.js.map +1 -0
- package/dist/core/orchestrator.d.ts +4 -1
- package/dist/core/orchestrator.js +29 -62
- package/dist/core/orchestrator.js.map +1 -1
- package/dist/core/runner/agent.d.ts +7 -1
- package/dist/core/runner/agent.js +45 -30
- package/dist/core/runner/agent.js.map +1 -1
- package/dist/core/runner/pipeline.js +283 -123
- package/dist/core/runner/pipeline.js.map +1 -1
- package/dist/core/runner/task.d.ts +4 -5
- package/dist/core/runner/task.js +6 -80
- package/dist/core/runner/task.js.map +1 -1
- package/dist/core/runner.js +8 -2
- package/dist/core/runner.js.map +1 -1
- package/dist/core/stall-detection.d.ts +11 -4
- package/dist/core/stall-detection.js +62 -27
- package/dist/core/stall-detection.js.map +1 -1
- package/dist/hooks/contexts/index.d.ts +104 -0
- package/dist/hooks/contexts/index.js +134 -0
- package/dist/hooks/contexts/index.js.map +1 -0
- package/dist/hooks/data-accessor.d.ts +86 -0
- package/dist/hooks/data-accessor.js +410 -0
- package/dist/hooks/data-accessor.js.map +1 -0
- package/dist/hooks/flow-controller.d.ts +136 -0
- package/dist/hooks/flow-controller.js +351 -0
- package/dist/hooks/flow-controller.js.map +1 -0
- package/dist/hooks/index.d.ts +68 -0
- package/dist/hooks/index.js +105 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/manager.d.ts +129 -0
- package/dist/hooks/manager.js +389 -0
- package/dist/hooks/manager.js.map +1 -0
- package/dist/hooks/types.d.ts +463 -0
- package/dist/hooks/types.js +45 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/services/logging/buffer.d.ts +2 -2
- package/dist/services/logging/buffer.js +95 -42
- package/dist/services/logging/buffer.js.map +1 -1
- package/dist/services/logging/console.js +6 -1
- package/dist/services/logging/console.js.map +1 -1
- package/dist/services/logging/formatter.d.ts +9 -4
- package/dist/services/logging/formatter.js +64 -18
- package/dist/services/logging/formatter.js.map +1 -1
- package/dist/services/logging/index.d.ts +0 -1
- package/dist/services/logging/index.js +0 -1
- package/dist/services/logging/index.js.map +1 -1
- package/dist/services/logging/paths.d.ts +8 -0
- package/dist/services/logging/paths.js +48 -0
- package/dist/services/logging/paths.js.map +1 -0
- package/dist/services/logging/raw-log.d.ts +6 -0
- package/dist/services/logging/raw-log.js +37 -0
- package/dist/services/logging/raw-log.js.map +1 -0
- package/dist/services/process/index.js +1 -1
- package/dist/services/process/index.js.map +1 -1
- package/dist/types/agent.d.ts +15 -0
- package/dist/types/config.d.ts +22 -1
- package/dist/types/event-categories.d.ts +601 -0
- package/dist/types/event-categories.js +233 -0
- package/dist/types/event-categories.js.map +1 -0
- package/dist/types/events.d.ts +0 -20
- package/dist/types/flow.d.ts +10 -6
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.js +17 -3
- package/dist/types/index.js.map +1 -1
- package/dist/types/lane.d.ts +1 -1
- package/dist/types/logging.d.ts +1 -1
- package/dist/types/task.d.ts +12 -1
- package/dist/ui/log-viewer.d.ts +3 -0
- package/dist/ui/log-viewer.js +3 -0
- package/dist/ui/log-viewer.js.map +1 -1
- package/dist/utils/config.js +10 -1
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/cursor-agent.d.ts +11 -1
- package/dist/utils/cursor-agent.js +63 -16
- package/dist/utils/cursor-agent.js.map +1 -1
- package/dist/utils/enhanced-logger.d.ts +5 -1
- package/dist/utils/enhanced-logger.js +98 -19
- package/dist/utils/enhanced-logger.js.map +1 -1
- package/dist/utils/event-registry.d.ts +222 -0
- package/dist/utils/event-registry.js +463 -0
- package/dist/utils/event-registry.js.map +1 -0
- package/dist/utils/events.d.ts +1 -13
- package/dist/utils/events.js.map +1 -1
- package/dist/utils/flow.d.ts +10 -0
- package/dist/utils/flow.js +75 -0
- package/dist/utils/flow.js.map +1 -1
- package/dist/utils/log-constants.d.ts +1 -0
- package/dist/utils/log-constants.js +2 -1
- package/dist/utils/log-constants.js.map +1 -1
- package/dist/utils/log-formatter.d.ts +2 -1
- package/dist/utils/log-formatter.js +10 -10
- package/dist/utils/log-formatter.js.map +1 -1
- package/dist/utils/logger.d.ts +11 -0
- package/dist/utils/logger.js +82 -3
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/repro-thinking-logs.js +0 -13
- package/dist/utils/repro-thinking-logs.js.map +1 -1
- package/dist/utils/run-service.js +1 -1
- package/dist/utils/run-service.js.map +1 -1
- package/examples/README.md +0 -2
- package/examples/demo-project/README.md +1 -2
- package/package.json +18 -28
- package/scripts/setup-security.sh +0 -1
- package/scripts/test-log-parser.ts +171 -0
- package/scripts/verify-change.sh +272 -0
- package/src/cli/logs.ts +121 -10
- package/src/cli/models.ts +20 -3
- package/src/cli/monitor.ts +1257 -1342
- package/src/cli/resume.ts +27 -1
- package/src/cli/run.ts +29 -11
- package/src/cli/signal.ts +115 -17
- package/src/cli/tasks.ts +2 -59
- package/src/core/agent-supervisor.ts +64 -0
- package/src/core/auto-recovery.ts +7 -1
- package/src/core/failure-policy.ts +0 -1
- package/src/core/git-lifecycle-manager.ts +1011 -0
- package/src/core/git-pipeline-coordinator.ts +221 -0
- package/src/core/intervention.ts +481 -0
- package/src/core/lane-state-machine.ts +1097 -0
- package/src/core/orchestrator.ts +35 -61
- package/src/core/runner/agent.ts +66 -33
- package/src/core/runner/pipeline.ts +318 -138
- package/src/core/runner/task.ts +12 -97
- package/src/core/runner.ts +8 -2
- package/src/core/stall-detection.ts +72 -27
- package/src/hooks/contexts/index.ts +256 -0
- package/src/hooks/data-accessor.ts +488 -0
- package/src/hooks/flow-controller.ts +425 -0
- package/src/hooks/index.ts +154 -0
- package/src/hooks/manager.ts +434 -0
- package/src/hooks/types.ts +544 -0
- package/src/services/logging/buffer.ts +104 -43
- package/src/services/logging/console.ts +7 -1
- package/src/services/logging/formatter.ts +74 -18
- package/src/services/logging/index.ts +0 -2
- package/src/services/logging/paths.ts +14 -0
- package/src/services/logging/raw-log.ts +43 -0
- package/src/services/process/index.ts +1 -1
- package/src/types/agent.ts +15 -0
- package/src/types/config.ts +23 -1
- package/src/types/event-categories.ts +663 -0
- package/src/types/events.ts +0 -25
- package/src/types/flow.ts +10 -6
- package/src/types/index.ts +50 -4
- package/src/types/lane.ts +1 -2
- package/src/types/logging.ts +2 -1
- package/src/types/task.ts +12 -1
- package/src/ui/log-viewer.ts +3 -0
- package/src/utils/config.ts +11 -1
- package/src/utils/cursor-agent.ts +68 -16
- package/src/utils/enhanced-logger.ts +105 -19
- package/src/utils/event-registry.ts +595 -0
- package/src/utils/events.ts +0 -16
- package/src/utils/flow.ts +83 -0
- package/src/utils/log-constants.ts +2 -1
- package/src/utils/log-formatter.ts +10 -11
- package/src/utils/logger.ts +49 -3
- package/src/utils/repro-thinking-logs.ts +0 -15
- package/src/utils/run-service.ts +1 -1
- package/dist/services/logging/file-writer.d.ts +0 -71
- package/dist/services/logging/file-writer.js +0 -516
- package/dist/services/logging/file-writer.js.map +0 -1
- package/dist/types/review.d.ts +0 -17
- package/dist/types/review.js +0 -6
- package/dist/types/review.js.map +0 -1
- package/scripts/ai-security-check.js +0 -233
- package/src/services/logging/file-writer.ts +0 -526
- package/src/types/review.ts +0 -20
|
@@ -0,0 +1,601 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event Categories & Registry System
|
|
3
|
+
*
|
|
4
|
+
* 이벤트를 출처와 책임에 따라 명확하게 분류합니다.
|
|
5
|
+
*
|
|
6
|
+
* 카테고리:
|
|
7
|
+
* - ORCHESTRATION: 전체 실행 흐름 관리 이벤트
|
|
8
|
+
* - LANE: 개별 Lane 생명주기 이벤트
|
|
9
|
+
* - TASK: Task 실행 관련 이벤트
|
|
10
|
+
* - GIT: Git 작업 관련 이벤트
|
|
11
|
+
* - RECOVERY: 복구 및 재시도 관련 이벤트
|
|
12
|
+
* - AGENT: AI Agent 통신 관련 이벤트
|
|
13
|
+
* - STATE: 상태 전이 관련 이벤트
|
|
14
|
+
* - SYSTEM: 시스템 수준 이벤트
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* 이벤트 카테고리 - 이벤트의 출처와 책임을 정의
|
|
18
|
+
*/
|
|
19
|
+
export declare enum EventCategory {
|
|
20
|
+
/** 전체 실행 흐름 관리 (Orchestrator 책임) */
|
|
21
|
+
ORCHESTRATION = "orchestration",
|
|
22
|
+
/** 개별 Lane 생명주기 (Runner 책임) */
|
|
23
|
+
LANE = "lane",
|
|
24
|
+
/** Task 실행 (Runner/Pipeline 책임) */
|
|
25
|
+
TASK = "task",
|
|
26
|
+
/** Git 작업 (GitLifecycleManager 책임) */
|
|
27
|
+
GIT = "git",
|
|
28
|
+
/** 복구 및 재시도 (RecoveryManager 책임) */
|
|
29
|
+
RECOVERY = "recovery",
|
|
30
|
+
/** AI Agent 통신 (AgentSupervisor 책임) */
|
|
31
|
+
AGENT = "agent",
|
|
32
|
+
/** 상태 전이 (StateMachine 책임) */
|
|
33
|
+
STATE = "state",
|
|
34
|
+
/** 시스템 수준 (Infrastructure 책임) */
|
|
35
|
+
SYSTEM = "system"
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Orchestration 이벤트 타입
|
|
39
|
+
*/
|
|
40
|
+
export declare enum OrchestrationEventType {
|
|
41
|
+
/** 오케스트레이션 시작 */
|
|
42
|
+
STARTED = "orchestration.started",
|
|
43
|
+
/** 모든 Lane 완료 */
|
|
44
|
+
COMPLETED = "orchestration.completed",
|
|
45
|
+
/** 오케스트레이션 실패 */
|
|
46
|
+
FAILED = "orchestration.failed",
|
|
47
|
+
/** 의존성 사이클 감지 */
|
|
48
|
+
CYCLE_DETECTED = "orchestration.cycle_detected",
|
|
49
|
+
/** 교착 상태 감지 */
|
|
50
|
+
DEADLOCK_DETECTED = "orchestration.deadlock_detected"
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Lane 이벤트 타입
|
|
54
|
+
*/
|
|
55
|
+
export declare enum LaneEventType {
|
|
56
|
+
/** Lane 시작 */
|
|
57
|
+
STARTED = "lane.started",
|
|
58
|
+
/** Lane 완료 */
|
|
59
|
+
COMPLETED = "lane.completed",
|
|
60
|
+
/** Lane 실패 */
|
|
61
|
+
FAILED = "lane.failed",
|
|
62
|
+
/** Lane 일시 중지 */
|
|
63
|
+
PAUSED = "lane.paused",
|
|
64
|
+
/** Lane 재개 */
|
|
65
|
+
RESUMED = "lane.resumed",
|
|
66
|
+
/** 의존성 대기 시작 */
|
|
67
|
+
WAITING = "lane.waiting",
|
|
68
|
+
/** 의존성 블록 (외부 개입 필요) */
|
|
69
|
+
BLOCKED = "lane.blocked",
|
|
70
|
+
/** 의존성 요청 */
|
|
71
|
+
DEPENDENCY_REQUESTED = "lane.dependency_requested"
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Task 이벤트 타입
|
|
75
|
+
*/
|
|
76
|
+
export declare enum TaskEventType {
|
|
77
|
+
/** Task 시작 */
|
|
78
|
+
STARTED = "task.started",
|
|
79
|
+
/** Task 완료 */
|
|
80
|
+
COMPLETED = "task.completed",
|
|
81
|
+
/** Task 실패 */
|
|
82
|
+
FAILED = "task.failed",
|
|
83
|
+
/** Task 재시도 */
|
|
84
|
+
RETRY = "task.retry",
|
|
85
|
+
/** Task 스킵 */
|
|
86
|
+
SKIPPED = "task.skipped",
|
|
87
|
+
/** Task 의존성 대기 */
|
|
88
|
+
WAITING_DEPENDENCY = "task.waiting_dependency",
|
|
89
|
+
/** Task 의존성 해결됨 */
|
|
90
|
+
DEPENDENCY_RESOLVED = "task.dependency_resolved"
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Git 이벤트 타입
|
|
94
|
+
*/
|
|
95
|
+
export declare enum GitEventType {
|
|
96
|
+
/** 브랜치 생성 */
|
|
97
|
+
BRANCH_CREATED = "git.branch_created",
|
|
98
|
+
/** 브랜치 체크아웃 */
|
|
99
|
+
BRANCH_CHECKED_OUT = "git.branch_checked_out",
|
|
100
|
+
/** 워크트리 생성 */
|
|
101
|
+
WORKTREE_CREATED = "git.worktree_created",
|
|
102
|
+
/** 워크트리 정리 */
|
|
103
|
+
WORKTREE_CLEANED = "git.worktree_cleaned",
|
|
104
|
+
/** 커밋 생성 */
|
|
105
|
+
COMMITTED = "git.committed",
|
|
106
|
+
/** 푸시 완료 */
|
|
107
|
+
PUSHED = "git.pushed",
|
|
108
|
+
/** 머지 시작 */
|
|
109
|
+
MERGE_STARTED = "git.merge_started",
|
|
110
|
+
/** 머지 완료 */
|
|
111
|
+
MERGE_COMPLETED = "git.merge_completed",
|
|
112
|
+
/** 머지 충돌 감지 */
|
|
113
|
+
MERGE_CONFLICT = "git.merge_conflict",
|
|
114
|
+
/** 푸시 거부 */
|
|
115
|
+
PUSH_REJECTED = "git.push_rejected",
|
|
116
|
+
/** Git 오류 */
|
|
117
|
+
ERROR = "git.error",
|
|
118
|
+
/** 의존성 브랜치 동기화 */
|
|
119
|
+
DEPENDENCY_SYNCED = "git.dependency_synced"
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Recovery 이벤트 타입
|
|
123
|
+
*/
|
|
124
|
+
export declare enum RecoveryEventType {
|
|
125
|
+
/** 복구 시작 */
|
|
126
|
+
STARTED = "recovery.started",
|
|
127
|
+
/** Continue 신호 발송 */
|
|
128
|
+
CONTINUE_SIGNAL = "recovery.continue_signal",
|
|
129
|
+
/** Stronger prompt 발송 */
|
|
130
|
+
STRONGER_PROMPT = "recovery.stronger_prompt",
|
|
131
|
+
/** 프로세스 재시작 */
|
|
132
|
+
RESTART = "recovery.restart",
|
|
133
|
+
/** 진단 실행 */
|
|
134
|
+
DIAGNOSED = "recovery.diagnosed",
|
|
135
|
+
/** 복구 성공 */
|
|
136
|
+
RECOVERED = "recovery.recovered",
|
|
137
|
+
/** 복구 실패 (포기) */
|
|
138
|
+
ABORTED = "recovery.aborted",
|
|
139
|
+
/** 충돌 해결 */
|
|
140
|
+
CONFLICT_RESOLVED = "recovery.conflict_resolved"
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Agent 이벤트 타입
|
|
144
|
+
*/
|
|
145
|
+
export declare enum AgentEventType {
|
|
146
|
+
/** 프롬프트 전송 */
|
|
147
|
+
PROMPT_SENT = "agent.prompt_sent",
|
|
148
|
+
/** 응답 수신 */
|
|
149
|
+
RESPONSE_RECEIVED = "agent.response_received",
|
|
150
|
+
/** 스트리밍 시작 */
|
|
151
|
+
STREAMING_STARTED = "agent.streaming_started",
|
|
152
|
+
/** 스트리밍 종료 */
|
|
153
|
+
STREAMING_ENDED = "agent.streaming_ended",
|
|
154
|
+
/** 연결 오류 */
|
|
155
|
+
CONNECTION_ERROR = "agent.connection_error",
|
|
156
|
+
/** 인증 오류 */
|
|
157
|
+
AUTH_ERROR = "agent.auth_error",
|
|
158
|
+
/** Rate limit */
|
|
159
|
+
RATE_LIMITED = "agent.rate_limited",
|
|
160
|
+
/** 타임아웃 */
|
|
161
|
+
TIMEOUT = "agent.timeout"
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* State 이벤트 타입 (상태 머신 전이)
|
|
165
|
+
*/
|
|
166
|
+
export declare enum StateEventType {
|
|
167
|
+
/** 상태 전이 */
|
|
168
|
+
TRANSITION = "state.transition",
|
|
169
|
+
/** 상태 전이 실패 (잘못된 전이) */
|
|
170
|
+
TRANSITION_FAILED = "state.transition_failed",
|
|
171
|
+
/** 상태 저장 */
|
|
172
|
+
PERSISTED = "state.persisted",
|
|
173
|
+
/** 상태 복구 */
|
|
174
|
+
RESTORED = "state.restored",
|
|
175
|
+
/** 상태 손상 감지 */
|
|
176
|
+
CORRUPTED = "state.corrupted",
|
|
177
|
+
/** 상태 복구 완료 */
|
|
178
|
+
REPAIRED = "state.repaired"
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* System 이벤트 타입
|
|
182
|
+
*/
|
|
183
|
+
export declare enum SystemEventType {
|
|
184
|
+
/** 시스템 시작 */
|
|
185
|
+
STARTUP = "system.startup",
|
|
186
|
+
/** 시스템 종료 */
|
|
187
|
+
SHUTDOWN = "system.shutdown",
|
|
188
|
+
/** Health check 완료 */
|
|
189
|
+
HEALTH_CHECK = "system.health_check",
|
|
190
|
+
/** 설정 로드 */
|
|
191
|
+
CONFIG_LOADED = "system.config_loaded",
|
|
192
|
+
/** 로그 파일 로테이션 */
|
|
193
|
+
LOG_ROTATED = "system.log_rotated",
|
|
194
|
+
/** 시그널 수신 (SIGINT, SIGTERM 등) */
|
|
195
|
+
SIGNAL_RECEIVED = "system.signal_received"
|
|
196
|
+
}
|
|
197
|
+
export type AllEventTypes = OrchestrationEventType | LaneEventType | TaskEventType | GitEventType | RecoveryEventType | AgentEventType | StateEventType | SystemEventType;
|
|
198
|
+
export interface OrchestrationStartedPayload {
|
|
199
|
+
runId: string;
|
|
200
|
+
tasksDir: string;
|
|
201
|
+
laneCount: number;
|
|
202
|
+
runRoot: string;
|
|
203
|
+
pipelineBranch?: string;
|
|
204
|
+
}
|
|
205
|
+
export interface OrchestrationCompletedPayload {
|
|
206
|
+
runId: string;
|
|
207
|
+
laneCount: number;
|
|
208
|
+
completedCount: number;
|
|
209
|
+
failedCount: number;
|
|
210
|
+
duration: number;
|
|
211
|
+
}
|
|
212
|
+
export interface OrchestrationFailedPayload {
|
|
213
|
+
runId: string;
|
|
214
|
+
error: string;
|
|
215
|
+
blockedLanes?: string[];
|
|
216
|
+
failedLanes?: string[];
|
|
217
|
+
}
|
|
218
|
+
export interface CycleDetectedPayload {
|
|
219
|
+
runId: string;
|
|
220
|
+
cycle: string[];
|
|
221
|
+
affectedLanes: string[];
|
|
222
|
+
}
|
|
223
|
+
export interface LaneStartedPayload {
|
|
224
|
+
laneName: string;
|
|
225
|
+
pid?: number;
|
|
226
|
+
logPath: string;
|
|
227
|
+
worktreeDir?: string;
|
|
228
|
+
pipelineBranch?: string;
|
|
229
|
+
}
|
|
230
|
+
export interface LaneCompletedPayload {
|
|
231
|
+
laneName: string;
|
|
232
|
+
exitCode: number;
|
|
233
|
+
duration: number;
|
|
234
|
+
tasksCompleted: number;
|
|
235
|
+
}
|
|
236
|
+
export interface LaneFailedPayload {
|
|
237
|
+
laneName: string;
|
|
238
|
+
exitCode: number;
|
|
239
|
+
error: string;
|
|
240
|
+
taskIndex?: number;
|
|
241
|
+
taskName?: string;
|
|
242
|
+
}
|
|
243
|
+
export interface LaneWaitingPayload {
|
|
244
|
+
laneName: string;
|
|
245
|
+
waitingFor: string[];
|
|
246
|
+
timeout?: number;
|
|
247
|
+
}
|
|
248
|
+
export interface LaneBlockedPayload {
|
|
249
|
+
laneName: string;
|
|
250
|
+
dependencyRequest: {
|
|
251
|
+
commands?: string[];
|
|
252
|
+
changes?: string[];
|
|
253
|
+
reason: string;
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
export interface TaskStartedPayload {
|
|
257
|
+
laneName: string;
|
|
258
|
+
taskName: string;
|
|
259
|
+
taskIndex: number;
|
|
260
|
+
taskBranch: string;
|
|
261
|
+
dependencies?: string[];
|
|
262
|
+
}
|
|
263
|
+
export interface TaskCompletedPayload {
|
|
264
|
+
laneName: string;
|
|
265
|
+
taskName: string;
|
|
266
|
+
taskIndex: number;
|
|
267
|
+
taskBranch: string;
|
|
268
|
+
duration: number;
|
|
269
|
+
status: 'success' | 'partial';
|
|
270
|
+
}
|
|
271
|
+
export interface TaskFailedPayload {
|
|
272
|
+
laneName: string;
|
|
273
|
+
taskName: string;
|
|
274
|
+
taskIndex: number;
|
|
275
|
+
taskBranch: string;
|
|
276
|
+
error: string;
|
|
277
|
+
retryable: boolean;
|
|
278
|
+
}
|
|
279
|
+
export interface TaskRetryPayload {
|
|
280
|
+
laneName: string;
|
|
281
|
+
taskName: string;
|
|
282
|
+
taskIndex: number;
|
|
283
|
+
retryCount: number;
|
|
284
|
+
maxRetries: number;
|
|
285
|
+
reason: string;
|
|
286
|
+
}
|
|
287
|
+
export interface TaskWaitingDependencyPayload {
|
|
288
|
+
laneName: string;
|
|
289
|
+
taskName: string;
|
|
290
|
+
taskIndex: number;
|
|
291
|
+
waitingFor: string[];
|
|
292
|
+
startedAt: number;
|
|
293
|
+
}
|
|
294
|
+
export interface GitBranchCreatedPayload {
|
|
295
|
+
laneName?: string;
|
|
296
|
+
branchName: string;
|
|
297
|
+
baseBranch: string;
|
|
298
|
+
worktreeDir?: string;
|
|
299
|
+
}
|
|
300
|
+
export interface GitCommittedPayload {
|
|
301
|
+
laneName?: string;
|
|
302
|
+
branchName: string;
|
|
303
|
+
commitHash: string;
|
|
304
|
+
message: string;
|
|
305
|
+
filesChanged: number;
|
|
306
|
+
}
|
|
307
|
+
export interface GitPushedPayload {
|
|
308
|
+
laneName?: string;
|
|
309
|
+
branchName: string;
|
|
310
|
+
remote: string;
|
|
311
|
+
commitHash: string;
|
|
312
|
+
}
|
|
313
|
+
export interface GitMergeStartedPayload {
|
|
314
|
+
laneName?: string;
|
|
315
|
+
sourceBranch: string;
|
|
316
|
+
targetBranch: string;
|
|
317
|
+
mergeType: 'task_to_pipeline' | 'dependency' | 'final';
|
|
318
|
+
}
|
|
319
|
+
export interface GitMergeCompletedPayload {
|
|
320
|
+
laneName?: string;
|
|
321
|
+
sourceBranch: string;
|
|
322
|
+
targetBranch: string;
|
|
323
|
+
mergeCommit: string;
|
|
324
|
+
filesChanged: number;
|
|
325
|
+
}
|
|
326
|
+
export interface GitMergeConflictPayload {
|
|
327
|
+
laneName?: string;
|
|
328
|
+
sourceBranch: string;
|
|
329
|
+
targetBranch: string;
|
|
330
|
+
conflictingFiles: string[];
|
|
331
|
+
preCheck: boolean;
|
|
332
|
+
}
|
|
333
|
+
export interface GitPushRejectedPayload {
|
|
334
|
+
laneName?: string;
|
|
335
|
+
branchName: string;
|
|
336
|
+
reason: string;
|
|
337
|
+
hint?: string;
|
|
338
|
+
}
|
|
339
|
+
export interface GitErrorPayload {
|
|
340
|
+
laneName?: string;
|
|
341
|
+
operation: string;
|
|
342
|
+
error: string;
|
|
343
|
+
recoverable: boolean;
|
|
344
|
+
}
|
|
345
|
+
export interface RecoveryStartedPayload {
|
|
346
|
+
laneName: string;
|
|
347
|
+
reason: string;
|
|
348
|
+
phase: number;
|
|
349
|
+
}
|
|
350
|
+
export interface RecoveryContinueSignalPayload {
|
|
351
|
+
laneName: string;
|
|
352
|
+
idleSeconds: number;
|
|
353
|
+
signalCount: number;
|
|
354
|
+
}
|
|
355
|
+
export interface RecoveryStrongerPromptPayload {
|
|
356
|
+
laneName: string;
|
|
357
|
+
prompt?: string;
|
|
358
|
+
previousAttempts: number;
|
|
359
|
+
}
|
|
360
|
+
export interface RecoveryRestartPayload {
|
|
361
|
+
laneName: string;
|
|
362
|
+
restartCount: number;
|
|
363
|
+
maxRestarts: number;
|
|
364
|
+
reason: string;
|
|
365
|
+
}
|
|
366
|
+
export interface RecoveryDiagnosedPayload {
|
|
367
|
+
laneName: string;
|
|
368
|
+
diagnostic: {
|
|
369
|
+
timestamp: number;
|
|
370
|
+
agentHealthy: boolean;
|
|
371
|
+
authHealthy: boolean;
|
|
372
|
+
systemHealthy: boolean;
|
|
373
|
+
suggestedAction: string;
|
|
374
|
+
details: string;
|
|
375
|
+
issues?: string[];
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
export interface RecoveryConflictResolvedPayload {
|
|
379
|
+
laneName?: string;
|
|
380
|
+
strategy: string;
|
|
381
|
+
resolvedFiles: string[];
|
|
382
|
+
unresolvedFiles: string[];
|
|
383
|
+
success: boolean;
|
|
384
|
+
}
|
|
385
|
+
export interface AgentPromptSentPayload {
|
|
386
|
+
laneName: string;
|
|
387
|
+
taskName: string;
|
|
388
|
+
model: string;
|
|
389
|
+
promptLength: number;
|
|
390
|
+
chatId?: string;
|
|
391
|
+
}
|
|
392
|
+
export interface AgentResponseReceivedPayload {
|
|
393
|
+
laneName: string;
|
|
394
|
+
taskName: string;
|
|
395
|
+
ok: boolean;
|
|
396
|
+
duration: number;
|
|
397
|
+
responseLength: number;
|
|
398
|
+
error?: string;
|
|
399
|
+
}
|
|
400
|
+
export interface AgentConnectionErrorPayload {
|
|
401
|
+
laneName: string;
|
|
402
|
+
error: string;
|
|
403
|
+
retryable: boolean;
|
|
404
|
+
}
|
|
405
|
+
export interface StateTransitionPayload {
|
|
406
|
+
laneName: string;
|
|
407
|
+
fromState: string;
|
|
408
|
+
toState: string;
|
|
409
|
+
trigger: string;
|
|
410
|
+
timestamp: number;
|
|
411
|
+
}
|
|
412
|
+
export interface StateTransitionFailedPayload {
|
|
413
|
+
laneName: string;
|
|
414
|
+
fromState: string;
|
|
415
|
+
attemptedState: string;
|
|
416
|
+
trigger: string;
|
|
417
|
+
reason: string;
|
|
418
|
+
}
|
|
419
|
+
export interface StateCorruptedPayload {
|
|
420
|
+
laneName: string;
|
|
421
|
+
filePath: string;
|
|
422
|
+
issues: string[];
|
|
423
|
+
}
|
|
424
|
+
export interface StateRepairedPayload {
|
|
425
|
+
laneName: string;
|
|
426
|
+
filePath: string;
|
|
427
|
+
repairedFields: string[];
|
|
428
|
+
}
|
|
429
|
+
export interface SystemHealthCheckPayload {
|
|
430
|
+
healthy: boolean;
|
|
431
|
+
checks: Array<{
|
|
432
|
+
name: string;
|
|
433
|
+
ok: boolean;
|
|
434
|
+
message: string;
|
|
435
|
+
}>;
|
|
436
|
+
}
|
|
437
|
+
export interface SystemSignalReceivedPayload {
|
|
438
|
+
signal: string;
|
|
439
|
+
action: 'shutdown' | 'restart' | 'ignore';
|
|
440
|
+
}
|
|
441
|
+
export interface EventPayloadMap {
|
|
442
|
+
[OrchestrationEventType.STARTED]: OrchestrationStartedPayload;
|
|
443
|
+
[OrchestrationEventType.COMPLETED]: OrchestrationCompletedPayload;
|
|
444
|
+
[OrchestrationEventType.FAILED]: OrchestrationFailedPayload;
|
|
445
|
+
[OrchestrationEventType.CYCLE_DETECTED]: CycleDetectedPayload;
|
|
446
|
+
[OrchestrationEventType.DEADLOCK_DETECTED]: OrchestrationFailedPayload;
|
|
447
|
+
[LaneEventType.STARTED]: LaneStartedPayload;
|
|
448
|
+
[LaneEventType.COMPLETED]: LaneCompletedPayload;
|
|
449
|
+
[LaneEventType.FAILED]: LaneFailedPayload;
|
|
450
|
+
[LaneEventType.PAUSED]: {
|
|
451
|
+
laneName: string;
|
|
452
|
+
reason: string;
|
|
453
|
+
};
|
|
454
|
+
[LaneEventType.RESUMED]: {
|
|
455
|
+
laneName: string;
|
|
456
|
+
};
|
|
457
|
+
[LaneEventType.WAITING]: LaneWaitingPayload;
|
|
458
|
+
[LaneEventType.BLOCKED]: LaneBlockedPayload;
|
|
459
|
+
[LaneEventType.DEPENDENCY_REQUESTED]: LaneBlockedPayload;
|
|
460
|
+
[TaskEventType.STARTED]: TaskStartedPayload;
|
|
461
|
+
[TaskEventType.COMPLETED]: TaskCompletedPayload;
|
|
462
|
+
[TaskEventType.FAILED]: TaskFailedPayload;
|
|
463
|
+
[TaskEventType.RETRY]: TaskRetryPayload;
|
|
464
|
+
[TaskEventType.SKIPPED]: {
|
|
465
|
+
laneName: string;
|
|
466
|
+
taskName: string;
|
|
467
|
+
reason: string;
|
|
468
|
+
};
|
|
469
|
+
[TaskEventType.WAITING_DEPENDENCY]: TaskWaitingDependencyPayload;
|
|
470
|
+
[TaskEventType.DEPENDENCY_RESOLVED]: {
|
|
471
|
+
laneName: string;
|
|
472
|
+
taskName: string;
|
|
473
|
+
resolvedDependency: string;
|
|
474
|
+
};
|
|
475
|
+
[GitEventType.BRANCH_CREATED]: GitBranchCreatedPayload;
|
|
476
|
+
[GitEventType.BRANCH_CHECKED_OUT]: {
|
|
477
|
+
laneName?: string;
|
|
478
|
+
branchName: string;
|
|
479
|
+
};
|
|
480
|
+
[GitEventType.WORKTREE_CREATED]: {
|
|
481
|
+
laneName?: string;
|
|
482
|
+
worktreeDir: string;
|
|
483
|
+
branchName: string;
|
|
484
|
+
};
|
|
485
|
+
[GitEventType.WORKTREE_CLEANED]: {
|
|
486
|
+
laneName?: string;
|
|
487
|
+
worktreeDir: string;
|
|
488
|
+
};
|
|
489
|
+
[GitEventType.COMMITTED]: GitCommittedPayload;
|
|
490
|
+
[GitEventType.PUSHED]: GitPushedPayload;
|
|
491
|
+
[GitEventType.MERGE_STARTED]: GitMergeStartedPayload;
|
|
492
|
+
[GitEventType.MERGE_COMPLETED]: GitMergeCompletedPayload;
|
|
493
|
+
[GitEventType.MERGE_CONFLICT]: GitMergeConflictPayload;
|
|
494
|
+
[GitEventType.PUSH_REJECTED]: GitPushRejectedPayload;
|
|
495
|
+
[GitEventType.ERROR]: GitErrorPayload;
|
|
496
|
+
[GitEventType.DEPENDENCY_SYNCED]: {
|
|
497
|
+
laneName?: string;
|
|
498
|
+
sourceBranch: string;
|
|
499
|
+
targetBranch: string;
|
|
500
|
+
};
|
|
501
|
+
[RecoveryEventType.STARTED]: RecoveryStartedPayload;
|
|
502
|
+
[RecoveryEventType.CONTINUE_SIGNAL]: RecoveryContinueSignalPayload;
|
|
503
|
+
[RecoveryEventType.STRONGER_PROMPT]: RecoveryStrongerPromptPayload;
|
|
504
|
+
[RecoveryEventType.RESTART]: RecoveryRestartPayload;
|
|
505
|
+
[RecoveryEventType.DIAGNOSED]: RecoveryDiagnosedPayload;
|
|
506
|
+
[RecoveryEventType.RECOVERED]: {
|
|
507
|
+
laneName: string;
|
|
508
|
+
recoveryAction: string;
|
|
509
|
+
};
|
|
510
|
+
[RecoveryEventType.ABORTED]: {
|
|
511
|
+
laneName: string;
|
|
512
|
+
reason: string;
|
|
513
|
+
};
|
|
514
|
+
[RecoveryEventType.CONFLICT_RESOLVED]: RecoveryConflictResolvedPayload;
|
|
515
|
+
[AgentEventType.PROMPT_SENT]: AgentPromptSentPayload;
|
|
516
|
+
[AgentEventType.RESPONSE_RECEIVED]: AgentResponseReceivedPayload;
|
|
517
|
+
[AgentEventType.STREAMING_STARTED]: {
|
|
518
|
+
laneName: string;
|
|
519
|
+
taskName: string;
|
|
520
|
+
};
|
|
521
|
+
[AgentEventType.STREAMING_ENDED]: {
|
|
522
|
+
laneName: string;
|
|
523
|
+
taskName: string;
|
|
524
|
+
totalBytes: number;
|
|
525
|
+
};
|
|
526
|
+
[AgentEventType.CONNECTION_ERROR]: AgentConnectionErrorPayload;
|
|
527
|
+
[AgentEventType.AUTH_ERROR]: {
|
|
528
|
+
laneName: string;
|
|
529
|
+
message: string;
|
|
530
|
+
};
|
|
531
|
+
[AgentEventType.RATE_LIMITED]: {
|
|
532
|
+
laneName: string;
|
|
533
|
+
retryAfterMs: number;
|
|
534
|
+
};
|
|
535
|
+
[AgentEventType.TIMEOUT]: {
|
|
536
|
+
laneName: string;
|
|
537
|
+
taskName: string;
|
|
538
|
+
timeoutMs: number;
|
|
539
|
+
};
|
|
540
|
+
[StateEventType.TRANSITION]: StateTransitionPayload;
|
|
541
|
+
[StateEventType.TRANSITION_FAILED]: StateTransitionFailedPayload;
|
|
542
|
+
[StateEventType.PERSISTED]: {
|
|
543
|
+
laneName: string;
|
|
544
|
+
filePath: string;
|
|
545
|
+
};
|
|
546
|
+
[StateEventType.RESTORED]: {
|
|
547
|
+
laneName: string;
|
|
548
|
+
filePath: string;
|
|
549
|
+
state: any;
|
|
550
|
+
};
|
|
551
|
+
[StateEventType.CORRUPTED]: StateCorruptedPayload;
|
|
552
|
+
[StateEventType.REPAIRED]: StateRepairedPayload;
|
|
553
|
+
[SystemEventType.STARTUP]: {
|
|
554
|
+
version: string;
|
|
555
|
+
nodeVersion: string;
|
|
556
|
+
};
|
|
557
|
+
[SystemEventType.SHUTDOWN]: {
|
|
558
|
+
reason: string;
|
|
559
|
+
exitCode: number;
|
|
560
|
+
};
|
|
561
|
+
[SystemEventType.HEALTH_CHECK]: SystemHealthCheckPayload;
|
|
562
|
+
[SystemEventType.CONFIG_LOADED]: {
|
|
563
|
+
configPath: string;
|
|
564
|
+
};
|
|
565
|
+
[SystemEventType.LOG_ROTATED]: {
|
|
566
|
+
oldPath: string;
|
|
567
|
+
newPath: string;
|
|
568
|
+
};
|
|
569
|
+
[SystemEventType.SIGNAL_RECEIVED]: SystemSignalReceivedPayload;
|
|
570
|
+
}
|
|
571
|
+
/**
|
|
572
|
+
* 타입이 지정된 CursorFlow 이벤트
|
|
573
|
+
*/
|
|
574
|
+
export interface TypedCursorFlowEvent<T extends keyof EventPayloadMap = keyof EventPayloadMap> {
|
|
575
|
+
/** 고유 이벤트 ID */
|
|
576
|
+
id: string;
|
|
577
|
+
/** 이벤트 타입 */
|
|
578
|
+
type: T;
|
|
579
|
+
/** 이벤트 카테고리 */
|
|
580
|
+
category: EventCategory;
|
|
581
|
+
/** 발생 시간 (ISO 8601) */
|
|
582
|
+
timestamp: string;
|
|
583
|
+
/** 실행 ID */
|
|
584
|
+
runId: string;
|
|
585
|
+
/** Lane 이름 (해당하는 경우) */
|
|
586
|
+
laneName?: string;
|
|
587
|
+
/** 페이로드 */
|
|
588
|
+
payload: EventPayloadMap[T];
|
|
589
|
+
}
|
|
590
|
+
/**
|
|
591
|
+
* 이벤트 타입에서 카테고리 추출
|
|
592
|
+
*/
|
|
593
|
+
export declare function getCategoryFromEventType(eventType: string): EventCategory;
|
|
594
|
+
/**
|
|
595
|
+
* 타입화된 이벤트 핸들러
|
|
596
|
+
*/
|
|
597
|
+
export type TypedEventHandler<T extends keyof EventPayloadMap> = (event: TypedCursorFlowEvent<T>) => void | Promise<void>;
|
|
598
|
+
/**
|
|
599
|
+
* 범용 이벤트 핸들러
|
|
600
|
+
*/
|
|
601
|
+
export type GenericEventHandler = (event: TypedCursorFlowEvent) => void | Promise<void>;
|