@litmers/cursorflow-orchestrator 0.1.40 → 0.2.3

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 (214) hide show
  1. package/CHANGELOG.md +0 -2
  2. package/README.md +8 -3
  3. package/commands/cursorflow-init.md +0 -4
  4. package/dist/cli/index.js +0 -6
  5. package/dist/cli/index.js.map +1 -1
  6. package/dist/cli/logs.js +108 -9
  7. package/dist/cli/logs.js.map +1 -1
  8. package/dist/cli/models.js +20 -3
  9. package/dist/cli/models.js.map +1 -1
  10. package/dist/cli/monitor.d.ts +7 -10
  11. package/dist/cli/monitor.js +1103 -1239
  12. package/dist/cli/monitor.js.map +1 -1
  13. package/dist/cli/resume.js +21 -1
  14. package/dist/cli/resume.js.map +1 -1
  15. package/dist/cli/run.js +28 -9
  16. package/dist/cli/run.js.map +1 -1
  17. package/dist/cli/signal.d.ts +6 -1
  18. package/dist/cli/signal.js +99 -13
  19. package/dist/cli/signal.js.map +1 -1
  20. package/dist/cli/tasks.js +3 -46
  21. package/dist/cli/tasks.js.map +1 -1
  22. package/dist/core/agent-supervisor.d.ts +23 -0
  23. package/dist/core/agent-supervisor.js +42 -0
  24. package/dist/core/agent-supervisor.js.map +1 -0
  25. package/dist/core/auto-recovery.d.ts +3 -117
  26. package/dist/core/auto-recovery.js +4 -482
  27. package/dist/core/auto-recovery.js.map +1 -1
  28. package/dist/core/failure-policy.d.ts +0 -53
  29. package/dist/core/failure-policy.js +7 -175
  30. package/dist/core/failure-policy.js.map +1 -1
  31. package/dist/core/git-lifecycle-manager.d.ts +284 -0
  32. package/dist/core/git-lifecycle-manager.js +778 -0
  33. package/dist/core/git-lifecycle-manager.js.map +1 -0
  34. package/dist/core/git-pipeline-coordinator.d.ts +21 -0
  35. package/dist/core/git-pipeline-coordinator.js +205 -0
  36. package/dist/core/git-pipeline-coordinator.js.map +1 -0
  37. package/dist/core/intervention.d.ts +170 -0
  38. package/dist/core/intervention.js +408 -0
  39. package/dist/core/intervention.js.map +1 -0
  40. package/dist/core/lane-state-machine.d.ts +423 -0
  41. package/dist/core/lane-state-machine.js +890 -0
  42. package/dist/core/lane-state-machine.js.map +1 -0
  43. package/dist/core/orchestrator.d.ts +4 -1
  44. package/dist/core/orchestrator.js +39 -65
  45. package/dist/core/orchestrator.js.map +1 -1
  46. package/dist/core/runner/agent.d.ts +7 -1
  47. package/dist/core/runner/agent.js +54 -36
  48. package/dist/core/runner/agent.js.map +1 -1
  49. package/dist/core/runner/pipeline.js +283 -123
  50. package/dist/core/runner/pipeline.js.map +1 -1
  51. package/dist/core/runner/task.d.ts +4 -5
  52. package/dist/core/runner/task.js +6 -80
  53. package/dist/core/runner/task.js.map +1 -1
  54. package/dist/core/runner.js +8 -2
  55. package/dist/core/runner.js.map +1 -1
  56. package/dist/core/stall-detection.d.ts +11 -4
  57. package/dist/core/stall-detection.js +64 -27
  58. package/dist/core/stall-detection.js.map +1 -1
  59. package/dist/hooks/contexts/index.d.ts +104 -0
  60. package/dist/hooks/contexts/index.js +134 -0
  61. package/dist/hooks/contexts/index.js.map +1 -0
  62. package/dist/hooks/data-accessor.d.ts +86 -0
  63. package/dist/hooks/data-accessor.js +410 -0
  64. package/dist/hooks/data-accessor.js.map +1 -0
  65. package/dist/hooks/flow-controller.d.ts +136 -0
  66. package/dist/hooks/flow-controller.js +351 -0
  67. package/dist/hooks/flow-controller.js.map +1 -0
  68. package/dist/hooks/index.d.ts +68 -0
  69. package/dist/hooks/index.js +105 -0
  70. package/dist/hooks/index.js.map +1 -0
  71. package/dist/hooks/manager.d.ts +129 -0
  72. package/dist/hooks/manager.js +389 -0
  73. package/dist/hooks/manager.js.map +1 -0
  74. package/dist/hooks/types.d.ts +463 -0
  75. package/dist/hooks/types.js +45 -0
  76. package/dist/hooks/types.js.map +1 -0
  77. package/dist/services/logging/buffer.d.ts +2 -2
  78. package/dist/services/logging/buffer.js +95 -42
  79. package/dist/services/logging/buffer.js.map +1 -1
  80. package/dist/services/logging/console.js +6 -1
  81. package/dist/services/logging/console.js.map +1 -1
  82. package/dist/services/logging/formatter.d.ts +9 -4
  83. package/dist/services/logging/formatter.js +64 -18
  84. package/dist/services/logging/formatter.js.map +1 -1
  85. package/dist/services/logging/index.d.ts +0 -1
  86. package/dist/services/logging/index.js +0 -1
  87. package/dist/services/logging/index.js.map +1 -1
  88. package/dist/services/logging/paths.d.ts +8 -0
  89. package/dist/services/logging/paths.js +48 -0
  90. package/dist/services/logging/paths.js.map +1 -0
  91. package/dist/services/logging/raw-log.d.ts +6 -0
  92. package/dist/services/logging/raw-log.js +37 -0
  93. package/dist/services/logging/raw-log.js.map +1 -0
  94. package/dist/services/process/index.js +1 -1
  95. package/dist/services/process/index.js.map +1 -1
  96. package/dist/types/agent.d.ts +15 -0
  97. package/dist/types/config.d.ts +22 -1
  98. package/dist/types/event-categories.d.ts +601 -0
  99. package/dist/types/event-categories.js +233 -0
  100. package/dist/types/event-categories.js.map +1 -0
  101. package/dist/types/events.d.ts +0 -20
  102. package/dist/types/flow.d.ts +10 -6
  103. package/dist/types/index.d.ts +1 -1
  104. package/dist/types/index.js +17 -3
  105. package/dist/types/index.js.map +1 -1
  106. package/dist/types/lane.d.ts +1 -1
  107. package/dist/types/logging.d.ts +1 -1
  108. package/dist/types/task.d.ts +12 -1
  109. package/dist/ui/log-viewer.d.ts +3 -0
  110. package/dist/ui/log-viewer.js +3 -0
  111. package/dist/ui/log-viewer.js.map +1 -1
  112. package/dist/utils/config.js +10 -1
  113. package/dist/utils/config.js.map +1 -1
  114. package/dist/utils/cursor-agent.d.ts +11 -1
  115. package/dist/utils/cursor-agent.js +63 -16
  116. package/dist/utils/cursor-agent.js.map +1 -1
  117. package/dist/utils/enhanced-logger.d.ts +5 -1
  118. package/dist/utils/enhanced-logger.js +98 -19
  119. package/dist/utils/enhanced-logger.js.map +1 -1
  120. package/dist/utils/event-registry.d.ts +222 -0
  121. package/dist/utils/event-registry.js +463 -0
  122. package/dist/utils/event-registry.js.map +1 -0
  123. package/dist/utils/events.d.ts +1 -13
  124. package/dist/utils/events.js.map +1 -1
  125. package/dist/utils/flow.d.ts +10 -0
  126. package/dist/utils/flow.js +75 -0
  127. package/dist/utils/flow.js.map +1 -1
  128. package/dist/utils/log-constants.d.ts +1 -0
  129. package/dist/utils/log-constants.js +2 -1
  130. package/dist/utils/log-constants.js.map +1 -1
  131. package/dist/utils/log-formatter.d.ts +2 -1
  132. package/dist/utils/log-formatter.js +10 -10
  133. package/dist/utils/log-formatter.js.map +1 -1
  134. package/dist/utils/logger.d.ts +11 -0
  135. package/dist/utils/logger.js +82 -3
  136. package/dist/utils/logger.js.map +1 -1
  137. package/dist/utils/repro-thinking-logs.js +0 -13
  138. package/dist/utils/repro-thinking-logs.js.map +1 -1
  139. package/dist/utils/run-service.js +1 -1
  140. package/dist/utils/run-service.js.map +1 -1
  141. package/examples/README.md +0 -2
  142. package/examples/demo-project/README.md +1 -2
  143. package/package.json +13 -34
  144. package/scripts/setup-security.sh +0 -1
  145. package/scripts/test-log-parser.ts +171 -0
  146. package/scripts/verify-change.sh +272 -0
  147. package/src/cli/index.ts +0 -6
  148. package/src/cli/logs.ts +121 -10
  149. package/src/cli/models.ts +20 -3
  150. package/src/cli/monitor.ts +1273 -1342
  151. package/src/cli/resume.ts +27 -1
  152. package/src/cli/run.ts +29 -11
  153. package/src/cli/signal.ts +120 -18
  154. package/src/cli/tasks.ts +2 -59
  155. package/src/core/agent-supervisor.ts +64 -0
  156. package/src/core/auto-recovery.ts +14 -590
  157. package/src/core/failure-policy.ts +7 -229
  158. package/src/core/git-lifecycle-manager.ts +1011 -0
  159. package/src/core/git-pipeline-coordinator.ts +221 -0
  160. package/src/core/intervention.ts +463 -0
  161. package/src/core/lane-state-machine.ts +1097 -0
  162. package/src/core/orchestrator.ts +48 -64
  163. package/src/core/runner/agent.ts +77 -39
  164. package/src/core/runner/pipeline.ts +318 -138
  165. package/src/core/runner/task.ts +12 -97
  166. package/src/core/runner.ts +8 -2
  167. package/src/core/stall-detection.ts +74 -27
  168. package/src/hooks/contexts/index.ts +256 -0
  169. package/src/hooks/data-accessor.ts +488 -0
  170. package/src/hooks/flow-controller.ts +425 -0
  171. package/src/hooks/index.ts +154 -0
  172. package/src/hooks/manager.ts +434 -0
  173. package/src/hooks/types.ts +544 -0
  174. package/src/services/logging/buffer.ts +104 -43
  175. package/src/services/logging/console.ts +7 -1
  176. package/src/services/logging/formatter.ts +74 -18
  177. package/src/services/logging/index.ts +0 -2
  178. package/src/services/logging/paths.ts +14 -0
  179. package/src/services/logging/raw-log.ts +43 -0
  180. package/src/services/process/index.ts +1 -1
  181. package/src/types/agent.ts +15 -0
  182. package/src/types/config.ts +23 -1
  183. package/src/types/event-categories.ts +663 -0
  184. package/src/types/events.ts +0 -25
  185. package/src/types/flow.ts +10 -6
  186. package/src/types/index.ts +50 -4
  187. package/src/types/lane.ts +1 -2
  188. package/src/types/logging.ts +2 -1
  189. package/src/types/task.ts +12 -1
  190. package/src/ui/log-viewer.ts +3 -0
  191. package/src/utils/config.ts +11 -1
  192. package/src/utils/cursor-agent.ts +68 -16
  193. package/src/utils/enhanced-logger.ts +105 -19
  194. package/src/utils/event-registry.ts +595 -0
  195. package/src/utils/events.ts +0 -16
  196. package/src/utils/flow.ts +83 -0
  197. package/src/utils/log-constants.ts +2 -1
  198. package/src/utils/log-formatter.ts +10 -11
  199. package/src/utils/logger.ts +49 -3
  200. package/src/utils/repro-thinking-logs.ts +0 -15
  201. package/src/utils/run-service.ts +1 -1
  202. package/dist/cli/prepare.d.ts +0 -7
  203. package/dist/cli/prepare.js +0 -690
  204. package/dist/cli/prepare.js.map +0 -1
  205. package/dist/services/logging/file-writer.d.ts +0 -71
  206. package/dist/services/logging/file-writer.js +0 -516
  207. package/dist/services/logging/file-writer.js.map +0 -1
  208. package/dist/types/review.d.ts +0 -17
  209. package/dist/types/review.js +0 -6
  210. package/dist/types/review.js.map +0 -1
  211. package/scripts/ai-security-check.js +0 -233
  212. package/src/cli/prepare.ts +0 -777
  213. package/src/services/logging/file-writer.ts +0 -526
  214. package/src/types/review.ts +0 -20
@@ -1,17 +0,0 @@
1
- /**
2
- * Review-related type definitions
3
- */
4
- export interface ReviewIssue {
5
- severity: 'critical' | 'major' | 'minor';
6
- description: string;
7
- file?: string;
8
- suggestion?: string;
9
- }
10
- export interface ReviewResult {
11
- status: 'approved' | 'needs_changes';
12
- buildSuccess: boolean;
13
- issues: ReviewIssue[];
14
- suggestions: string[];
15
- summary: string;
16
- raw: string;
17
- }
@@ -1,6 +0,0 @@
1
- "use strict";
2
- /**
3
- * Review-related type definitions
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- //# sourceMappingURL=review.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/types/review.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -1,233 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * AI 기반 보안 검사 스크립트
5
- * OpenAI API를 사용하여 코드의 보안 취약점을 분석합니다.
6
- */
7
-
8
- const fs = require('fs');
9
- const { spawnSync } = require('child_process');
10
-
11
- // 색상 정의
12
- const colors = {
13
- red: '\x1b[31m',
14
- green: '\x1b[32m',
15
- yellow: '\x1b[33m',
16
- blue: '\x1b[34m',
17
- reset: '\x1b[0m'
18
- };
19
-
20
- // OpenAI API 키 확인
21
- const OPENAI_API_KEY = process.env.OPENAI_API_KEY;
22
- if (!OPENAI_API_KEY) {
23
- console.log(`${colors.yellow}⚠️ OPENAI_API_KEY not set. Skipping AI security check.${colors.reset}`);
24
- process.exit(0);
25
- }
26
-
27
- // 변경된 파일 가져오기 (PR인 경우)
28
- function getChangedFiles() {
29
- try {
30
- const baseBranch = process.env.GITHUB_BASE_REF || 'main';
31
- const result = spawnSync('git', ['diff', '--name-only', `origin/${baseBranch}...HEAD`], { encoding: 'utf-8' });
32
- if (result.status !== 0) throw new Error(result.stderr);
33
-
34
- const files = result.stdout
35
- .split('\n')
36
- .filter(f => f.endsWith('.js') || f.endsWith('.ts') || f.endsWith('.jsx') || f.endsWith('.tsx'))
37
- .filter(f => f && fs.existsSync(f));
38
- return files;
39
- } catch (error) {
40
- // PR이 아닌 경우 최근 커밋의 파일들
41
- try {
42
- const result = spawnSync('git', ['diff-tree', '--no-commit-id', '--name-only', '-r', 'HEAD'], { encoding: 'utf-8' });
43
- if (result.status !== 0) return [];
44
-
45
- const files = result.stdout
46
- .split('\n')
47
- .filter(f => f.endsWith('.js') || f.endsWith('.ts') || f.endsWith('.jsx') || f.endsWith('.tsx'))
48
- .filter(f => f && fs.existsSync(f));
49
- return files;
50
- } catch {
51
- return [];
52
- }
53
- }
54
- }
55
-
56
- // AI 보안 검사 프롬프트
57
- function createSecurityPrompt(code, filename) {
58
- return `You are a security expert analyzing code for vulnerabilities. Analyze the following code and identify any security issues.
59
-
60
- File: ${filename}
61
-
62
- Code:
63
- \`\`\`javascript
64
- ${code}
65
- \`\`\`
66
-
67
- Please analyze for:
68
- 1. **Injection vulnerabilities** (SQL, NoSQL, Command, XSS, etc.)
69
- 2. **Authentication/Authorization issues**
70
- 3. **Sensitive data exposure** (hardcoded secrets, credentials, API keys)
71
- 4. **Insecure dependencies or imports**
72
- 5. **Path traversal vulnerabilities**
73
- 6. **Insecure randomness or cryptography**
74
- 7. **Unsafe deserialization**
75
- 8. **Rate limiting or DoS vulnerabilities**
76
- 9. **CSRF/SSRF vulnerabilities**
77
- 10. **Any OWASP Top 10 issues**
78
- 11. **CodeQL-specific patterns** (tainted data flow, improper input validation, dangerous sinks like eval or child_process.exec)
79
- 12. **Code quality issues** that might trigger CodeQL's "Security and Quality" queries
80
-
81
- Respond in JSON format:
82
- {
83
- "has_issues": true/false,
84
- "severity": "critical" | "high" | "medium" | "low" | "none",
85
- "issues": [
86
- {
87
- "type": "vulnerability type",
88
- "severity": "critical/high/medium/low",
89
- "line": "approximate line number or area",
90
- "description": "detailed description",
91
- "recommendation": "how to fix"
92
- }
93
- ],
94
- "summary": "overall security assessment"
95
- }`;
96
- }
97
-
98
- // OpenAI API 호출
99
- async function analyzeCodeWithAI(code, filename) {
100
- const prompt = createSecurityPrompt(code, filename);
101
-
102
- try {
103
- // SECURITY NOTE: Intentionally sending code to OpenAI API for security analysis.
104
- // This is the expected behavior - the script's purpose is AI-powered code review.
105
- // Code is sent over HTTPS to OpenAI's secure API endpoint.
106
- const response = await fetch('https://api.openai.com/v1/chat/completions', {
107
- method: 'POST',
108
- headers: {
109
- 'Content-Type': 'application/json',
110
- 'Authorization': `Bearer ${OPENAI_API_KEY}`
111
- },
112
- body: JSON.stringify({
113
- model: 'gpt-4o',
114
- messages: [
115
- {
116
- role: 'system',
117
- content: 'You are a security expert specializing in code security analysis. Provide detailed, actionable security assessments in JSON format.'
118
- },
119
- {
120
- role: 'user',
121
- content: prompt
122
- }
123
- ],
124
- temperature: 0.3,
125
- response_format: { type: "json_object" }
126
- })
127
- });
128
-
129
- if (!response.ok) {
130
- throw new Error(`OpenAI API error: ${response.status} ${response.statusText}`);
131
- }
132
-
133
- const data = await response.json();
134
- const content = data.choices[0].message.content;
135
- return JSON.parse(content);
136
- } catch (error) {
137
- console.error(`${colors.red}Error calling OpenAI API: ${error.message}${colors.reset}`);
138
- return null;
139
- }
140
- }
141
-
142
- // 보안 이슈 출력
143
- function printSecurityIssues(filename, analysis) {
144
- if (!analysis.has_issues) {
145
- console.log(`${colors.green}✓ ${filename}: No security issues found${colors.reset}`);
146
- return false;
147
- }
148
-
149
- console.log(`\n${colors.red}⚠️ Security issues found in ${filename}${colors.reset}`);
150
- console.log(`${colors.yellow}Severity: ${analysis.severity.toUpperCase()}${colors.reset}`);
151
- console.log(`\n${analysis.summary}\n`);
152
-
153
- analysis.issues.forEach((issue, index) => {
154
- const severityColor = {
155
- critical: colors.red,
156
- high: colors.red,
157
- medium: colors.yellow,
158
- low: colors.blue
159
- }[issue.severity] || colors.reset;
160
-
161
- console.log(`${index + 1}. ${severityColor}[${issue.severity.toUpperCase()}]${colors.reset} ${issue.type}`);
162
- console.log(` Location: ${issue.line}`);
163
- console.log(` ${issue.description}`);
164
- console.log(` ${colors.green}Fix: ${issue.recommendation}${colors.reset}\n`);
165
- });
166
-
167
- return analysis.severity === 'critical' || analysis.severity === 'high';
168
- }
169
-
170
- // 메인 실행
171
- async function main() {
172
- console.log(`${colors.blue}🔍 Starting AI Security Analysis...${colors.reset}\n`);
173
-
174
- const changedFiles = getChangedFiles();
175
-
176
- if (changedFiles.length === 0) {
177
- console.log(`${colors.yellow}No code files changed. Skipping AI security check.${colors.reset}`);
178
- process.exit(0);
179
- }
180
-
181
- console.log(`Analyzing ${changedFiles.length} file(s):\n`);
182
- changedFiles.forEach(f => console.log(` - ${f}`));
183
- console.log('');
184
-
185
- let hasBlockingIssues = false;
186
- let totalIssues = 0;
187
-
188
- for (const file of changedFiles) {
189
- try {
190
- const code = fs.readFileSync(file, 'utf-8');
191
-
192
- // 파일이 너무 크면 스킵
193
- if (code.length > 50000) {
194
- console.log(`${colors.yellow}⚠️ ${file}: File too large, skipping${colors.reset}`);
195
- continue;
196
- }
197
-
198
- console.log(`Analyzing ${file}...`);
199
- const analysis = await analyzeCodeWithAI(code, file);
200
-
201
- if (analysis) {
202
- const hasIssues = printSecurityIssues(file, analysis);
203
- if (hasIssues) {
204
- hasBlockingIssues = true;
205
- totalIssues += analysis.issues.length;
206
- }
207
- }
208
- } catch (error) {
209
- console.error(`${colors.red}Error analyzing ${file}: ${error.message}${colors.reset}`);
210
- }
211
- }
212
-
213
- console.log(`\n${colors.blue}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${colors.reset}`);
214
- console.log(`${colors.blue}📊 Security Analysis Summary${colors.reset}`);
215
- console.log(`${colors.blue}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${colors.reset}`);
216
- console.log(`Files analyzed: ${changedFiles.length}`);
217
- console.log(`Security issues found: ${totalIssues}`);
218
-
219
- if (hasBlockingIssues) {
220
- console.log(`\n${colors.red}❌ CRITICAL/HIGH severity security issues found!${colors.reset}`);
221
- console.log(`${colors.red}Deployment blocked. Please fix the issues above.${colors.reset}\n`);
222
- process.exit(1);
223
- } else {
224
- console.log(`\n${colors.green}✅ No blocking security issues found${colors.reset}\n`);
225
- process.exit(0);
226
- }
227
- }
228
-
229
- main().catch(error => {
230
- console.error(`${colors.red}Fatal error: ${error.message}${colors.reset}`);
231
- process.exit(1);
232
- });
233
-