aiwf 0.3.21 → 0.3.23

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 (140) hide show
  1. package/package.json +3 -2
  2. package/src/cli/index.js +39 -336
  3. package/src/lib/installer.js +310 -90
  4. package/src/utils/messages.js +24 -0
  5. package/src/DEPENDENCY_MAP.md +0 -90
  6. package/src/cli/cache-cli.js +0 -459
  7. package/src/cli/checkpoint-cli.js +0 -417
  8. package/src/cli/language-cli.js +0 -286
  9. package/src/cli/sprint-cli.js +0 -287
  10. package/src/commands/ai-tool.js +0 -383
  11. package/src/commands/compress.js +0 -60
  12. package/src/commands/create-project.js +0 -160
  13. package/src/commands/evaluate.js +0 -459
  14. package/src/commands/persona.js +0 -309
  15. package/src/commands/sprint-task.js +0 -262
  16. package/src/commands/token.js +0 -312
  17. package/src/lib/ai-persona-manager.js +0 -711
  18. package/src/lib/cache-system.js +0 -332
  19. package/src/lib/context-engine.js +0 -568
  20. package/src/lib/github-integration.js +0 -402
  21. package/src/lib/memory-profiler.js +0 -471
  22. package/src/lib/metrics-collector.js +0 -885
  23. package/src/lib/offline-detector.js +0 -386
  24. package/src/lib/resource-loader-enhanced.js +0 -399
  25. package/src/lib/resource-loader.js +0 -250
  26. package/src/lib/resources/commands/ai-persona.js +0 -602
  27. package/src/lib/resources/commands/compress-context.js +0 -389
  28. package/src/lib/resources/commands/evaluate.js +0 -246
  29. package/src/lib/resources/commands/persona-context-apply.js +0 -562
  30. package/src/lib/resources/commands/token-tracking.js +0 -443
  31. package/src/lib/resources/config/commit-patterns.js +0 -103
  32. package/src/lib/resources/config/language.json +0 -6
  33. package/src/lib/resources/personas/PERSONA_INDEX.md +0 -57
  34. package/src/lib/resources/personas/analyst.json +0 -44
  35. package/src/lib/resources/personas/architect/best_practices.md +0 -136
  36. package/src/lib/resources/personas/architect/knowledge_base.md +0 -377
  37. package/src/lib/resources/personas/architect.json +0 -44
  38. package/src/lib/resources/personas/backend/best_practices.md +0 -766
  39. package/src/lib/resources/personas/backend/knowledge_base.md +0 -1070
  40. package/src/lib/resources/personas/data_analyst/best_practices.md +0 -594
  41. package/src/lib/resources/personas/data_analyst/knowledge_base.md +0 -1057
  42. package/src/lib/resources/personas/developer.json +0 -44
  43. package/src/lib/resources/personas/developer.md +0 -37
  44. package/src/lib/resources/personas/evaluation_criteria.json +0 -137
  45. package/src/lib/resources/personas/frontend/best_practices.md +0 -445
  46. package/src/lib/resources/personas/frontend/knowledge_base.md +0 -729
  47. package/src/lib/resources/personas/persona-index.json +0 -31
  48. package/src/lib/resources/personas/reviewer.json +0 -44
  49. package/src/lib/resources/personas/security/best_practices.md +0 -307
  50. package/src/lib/resources/personas/security/knowledge_base.md +0 -498
  51. package/src/lib/resources/personas/tester.json +0 -44
  52. package/src/lib/resources/templates/README.md +0 -78
  53. package/src/lib/resources/templates/api-server/config.json +0 -64
  54. package/src/lib/resources/templates/api-server/template/.aiwf/config.json +0 -56
  55. package/src/lib/resources/templates/api-server/template/.aiwf/feature-ledger.json +0 -42
  56. package/src/lib/resources/templates/api-server/template/.aiwf/personas/backend-engineer.json +0 -40
  57. package/src/lib/resources/templates/api-server/template/.aiwf/scripts/cli.js +0 -111
  58. package/src/lib/resources/templates/api-server/template/.env.example +0 -29
  59. package/src/lib/resources/templates/api-server/template/.eslintrc.json +0 -23
  60. package/src/lib/resources/templates/api-server/template/README.md +0 -171
  61. package/src/lib/resources/templates/api-server/template/jest.config.js +0 -26
  62. package/src/lib/resources/templates/api-server/template/nodemon.json +0 -9
  63. package/src/lib/resources/templates/api-server/template/package.json +0 -61
  64. package/src/lib/resources/templates/api-server/template/src/app.ts +0 -60
  65. package/src/lib/resources/templates/api-server/template/src/config/swagger.ts +0 -38
  66. package/src/lib/resources/templates/api-server/template/src/controllers/aiwfController.ts +0 -54
  67. package/src/lib/resources/templates/api-server/template/src/controllers/authController.ts +0 -128
  68. package/src/lib/resources/templates/api-server/template/src/controllers/statusController.ts +0 -28
  69. package/src/lib/resources/templates/api-server/template/src/index.ts +0 -28
  70. package/src/lib/resources/templates/api-server/template/src/middleware/aiwfMiddleware.ts +0 -50
  71. package/src/lib/resources/templates/api-server/template/src/middleware/authMiddleware.ts +0 -41
  72. package/src/lib/resources/templates/api-server/template/src/middleware/errorHandler.ts +0 -42
  73. package/src/lib/resources/templates/api-server/template/src/middleware/notFoundHandler.ts +0 -14
  74. package/src/lib/resources/templates/api-server/template/src/middleware/requestLogger.ts +0 -20
  75. package/src/lib/resources/templates/api-server/template/src/routes/aiwf.ts +0 -31
  76. package/src/lib/resources/templates/api-server/template/src/routes/index.ts +0 -13
  77. package/src/lib/resources/templates/api-server/template/src/routes/v1/index.ts +0 -67
  78. package/src/lib/resources/templates/api-server/template/src/utils/logger.ts +0 -37
  79. package/src/lib/resources/templates/api-server/template/tests/app.test.ts +0 -40
  80. package/src/lib/resources/templates/api-server/template/tsconfig.json +0 -43
  81. package/src/lib/resources/templates/npm-library/config.json +0 -61
  82. package/src/lib/resources/templates/npm-library/template/LICENSE +0 -21
  83. package/src/lib/resources/templates/npm-library/template/README.md +0 -201
  84. package/src/lib/resources/templates/npm-library/template/package.json +0 -78
  85. package/src/lib/resources/templates/web-app/config.json +0 -53
  86. package/src/lib/resources/templates/web-app/template/.aiwf/config.json +0 -54
  87. package/src/lib/resources/templates/web-app/template/.aiwf/feature-ledger.json +0 -37
  88. package/src/lib/resources/templates/web-app/template/.aiwf/personas/fullstack-developer.json +0 -40
  89. package/src/lib/resources/templates/web-app/template/.aiwf/scripts/cli.js +0 -110
  90. package/src/lib/resources/templates/web-app/template/.eslintrc.cjs +0 -20
  91. package/src/lib/resources/templates/web-app/template/README.md +0 -151
  92. package/src/lib/resources/templates/web-app/template/index.html +0 -14
  93. package/src/lib/resources/templates/web-app/template/package.json +0 -44
  94. package/src/lib/resources/templates/web-app/template/postcss.config.js +0 -6
  95. package/src/lib/resources/templates/web-app/template/public/vite.svg +0 -1
  96. package/src/lib/resources/templates/web-app/template/src/App.tsx +0 -21
  97. package/src/lib/resources/templates/web-app/template/src/components/Layout.tsx +0 -57
  98. package/src/lib/resources/templates/web-app/template/src/components/aiwf/ContextStatus.tsx +0 -107
  99. package/src/lib/resources/templates/web-app/template/src/components/aiwf/TokenUsage.tsx +0 -71
  100. package/src/lib/resources/templates/web-app/template/src/index.css +0 -60
  101. package/src/lib/resources/templates/web-app/template/src/main.tsx +0 -10
  102. package/src/lib/resources/templates/web-app/template/src/pages/AiwfDashboard.tsx +0 -57
  103. package/src/lib/resources/templates/web-app/template/src/pages/HomePage.tsx +0 -89
  104. package/src/lib/resources/templates/web-app/template/src/pages/NotFound.tsx +0 -25
  105. package/src/lib/resources/templates/web-app/template/src/stores/aiwfStore.ts +0 -126
  106. package/src/lib/resources/templates/web-app/template/src/types/global.d.ts +0 -9
  107. package/src/lib/resources/templates/web-app/template/src/vite-env.d.ts +0 -1
  108. package/src/lib/resources/templates/web-app/template/tailwind.config.js +0 -30
  109. package/src/lib/resources/templates/web-app/template/tsconfig.json +0 -37
  110. package/src/lib/resources/templates/web-app/template/tsconfig.node.json +0 -10
  111. package/src/lib/resources/templates/web-app/template/vite.config.ts +0 -23
  112. package/src/lib/resources/utils/background-monitor.js +0 -223
  113. package/src/lib/resources/utils/compression-metrics.js +0 -1031
  114. package/src/lib/resources/utils/compression-strategies.js +0 -557
  115. package/src/lib/resources/utils/content-normalizer.js +0 -455
  116. package/src/lib/resources/utils/context-compressor.js +0 -583
  117. package/src/lib/resources/utils/context-rule-parser.js +0 -180
  118. package/src/lib/resources/utils/context-token-monitor.js +0 -463
  119. package/src/lib/resources/utils/context-update-manager.js +0 -502
  120. package/src/lib/resources/utils/git-utils.js +0 -220
  121. package/src/lib/resources/utils/importance-classifier.js +0 -645
  122. package/src/lib/resources/utils/information-filter.js +0 -710
  123. package/src/lib/resources/utils/persona-aware-compressor.js +0 -598
  124. package/src/lib/resources/utils/prompt-injector.js +0 -242
  125. package/src/lib/resources/utils/simplified-evaluator.js +0 -119
  126. package/src/lib/resources/utils/text-summarizer.js +0 -492
  127. package/src/lib/resources/utils/token-counter.js +0 -177
  128. package/src/lib/resources/utils/token-monitor.js +0 -484
  129. package/src/lib/resources/utils/token-reporter.js +0 -452
  130. package/src/lib/resources/utils/token-storage.js +0 -433
  131. package/src/lib/resources/utils/token-tracker.js +0 -283
  132. package/src/lib/state/priority-calculator.js +0 -217
  133. package/src/lib/state/state-index.js +0 -155
  134. package/src/lib/state/task-scanner.js +0 -328
  135. package/src/lib/task-analyzer.js +0 -599
  136. package/src/lib/template-cache-system.js +0 -559
  137. package/src/lib/template-downloader.js +0 -467
  138. package/src/lib/template-version-manager.js +0 -491
  139. package/src/lib/token-optimizer.js +0 -517
  140. package/src/utils/engineering-guard.js +0 -399
@@ -1,31 +0,0 @@
1
- {
2
- "personas": [
3
- {
4
- "id": "analyst",
5
- "name": "System Analyst",
6
- "file": "analyst.json"
7
- },
8
- {
9
- "id": "architect",
10
- "name": "System Architect",
11
- "file": "architect.json"
12
- },
13
- {
14
- "id": "developer",
15
- "name": "Software Developer",
16
- "file": "developer.json"
17
- },
18
- {
19
- "id": "reviewer",
20
- "name": "Code Reviewer",
21
- "file": "reviewer.json"
22
- },
23
- {
24
- "id": "tester",
25
- "name": "Quality Assurance Engineer",
26
- "file": "tester.json"
27
- }
28
- ],
29
- "total_personas": 5,
30
- "last_updated": "2025-01-08T17:00:00Z"
31
- }
@@ -1,44 +0,0 @@
1
- {
2
- "id": "reviewer",
3
- "name": "Code Reviewer",
4
- "description": "Reviews code for quality, security, and adherence to standards",
5
- "focus_areas": [
6
- "Code quality assessment",
7
- "Security vulnerability detection",
8
- "Performance analysis",
9
- "Best practices compliance",
10
- "Documentation completeness"
11
- ],
12
- "communication_style": {
13
- "tone": "constructive, detailed, educational",
14
- "language": "technical with specific examples",
15
- "format": "review comments, suggestions, approval criteria"
16
- },
17
- "capabilities": [
18
- "Identify code smells and anti-patterns",
19
- "Detect security vulnerabilities",
20
- "Suggest performance improvements",
21
- "Ensure coding standards compliance",
22
- "Verify test coverage"
23
- ],
24
- "tools_and_methods": [
25
- "Static code analysis",
26
- "Security scanning",
27
- "Performance profiling",
28
- "Code coverage analysis",
29
- "Dependency checking"
30
- ],
31
- "output_formats": [
32
- "Code review comments",
33
- "Security audit reports",
34
- "Performance analysis",
35
- "Improvement suggestions",
36
- "Approval decisions"
37
- ],
38
- "example_prompts": [
39
- "Review the authentication module for security issues",
40
- "Check the payment service for performance bottlenecks",
41
- "Verify test coverage for feature FL-001",
42
- "Review the API design for REST best practices"
43
- ]
44
- }
@@ -1,307 +0,0 @@
1
- # Security 페르소나 Best Practices
2
-
3
- ## 개요
4
- Security 페르소나는 애플리케이션의 보안을 최우선으로 고려합니다. 취약점 예방, 데이터 보호, 접근 제어에 중점을 둡니다.
5
-
6
- ## 핵심 보안 원칙
7
-
8
- ### 1. Defense in Depth (심층 방어)
9
- - 다층적 보안 계층 구축
10
- - 단일 실패 지점(SPOF) 제거
11
- - 각 계층별 독립적 보안 메커니즘
12
-
13
- ### 2. Principle of Least Privilege
14
- ```javascript
15
- // 최소 권한 원칙 적용
16
- class UserPermissions {
17
- constructor(userId) {
18
- this.permissions = this.loadMinimalPermissions(userId);
19
- }
20
-
21
- grantTemporaryAccess(resource, duration) {
22
- // 임시 권한만 부여
23
- const expiry = Date.now() + duration;
24
- this.permissions.temporary[resource] = expiry;
25
- }
26
- }
27
- ```
28
-
29
- ### 3. Zero Trust Architecture
30
- - "절대 신뢰하지 말고 항상 검증하라"
31
- - 모든 요청에 대한 인증/인가
32
- - 네트워크 위치에 관계없이 동일한 보안 적용
33
-
34
- ## 보안 코딩 가이드
35
-
36
- ### 입력 검증 (Input Validation)
37
- ```javascript
38
- class InputValidator {
39
- // 화이트리스트 방식 검증
40
- static validateEmail(email) {
41
- const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
42
- if (!emailRegex.test(email)) {
43
- throw new ValidationError('Invalid email format');
44
- }
45
- return email.toLowerCase().trim();
46
- }
47
-
48
- // SQL Injection 방지
49
- static sanitizeForSQL(input) {
50
- // 파라미터화된 쿼리 사용 권장
51
- return input.replace(/['";\\]/g, '');
52
- }
53
-
54
- // XSS 방지
55
- static sanitizeHTML(input) {
56
- const map = {
57
- '&': '&',
58
- '<': '&lt;',
59
- '>': '&gt;',
60
- '"': '&quot;',
61
- "'": '&#39;',
62
- '/': '&#x2F;'
63
- };
64
- return input.replace(/[&<>"'/]/g, m => map[m]);
65
- }
66
- }
67
- ```
68
-
69
- ### 인증 및 세션 관리
70
- ```javascript
71
- class SecureSessionManager {
72
- // 안전한 세션 생성
73
- createSession(userId) {
74
- const session = {
75
- id: crypto.randomBytes(32).toString('hex'),
76
- userId,
77
- createdAt: Date.now(),
78
- lastActivity: Date.now(),
79
- ipAddress: getClientIP(),
80
- userAgent: getUserAgent()
81
- };
82
-
83
- // 세션 고정 공격 방지
84
- this.regenerateSessionId(session);
85
-
86
- return session;
87
- }
88
-
89
- // 세션 유효성 검사
90
- validateSession(sessionId) {
91
- const session = this.getSession(sessionId);
92
-
93
- // 세션 타임아웃 확인
94
- if (Date.now() - session.lastActivity > SESSION_TIMEOUT) {
95
- this.destroySession(sessionId);
96
- throw new SecurityError('Session expired');
97
- }
98
-
99
- // IP 주소 변경 감지
100
- if (session.ipAddress !== getClientIP()) {
101
- this.flagSuspiciousActivity(session);
102
- }
103
-
104
- return session;
105
- }
106
- }
107
- ```
108
-
109
- ### 암호화 및 해싱
110
- ```javascript
111
- class CryptoService {
112
- // 비밀번호 해싱 (bcrypt 사용)
113
- async hashPassword(password) {
114
- const saltRounds = 12;
115
- return await bcrypt.hash(password, saltRounds);
116
- }
117
-
118
- // 민감한 데이터 암호화
119
- encryptSensitiveData(data) {
120
- const algorithm = 'aes-256-gcm';
121
- const key = Buffer.from(process.env.ENCRYPTION_KEY, 'hex');
122
- const iv = crypto.randomBytes(16);
123
-
124
- const cipher = crypto.createCipheriv(algorithm, key, iv);
125
- let encrypted = cipher.update(JSON.stringify(data), 'utf8', 'hex');
126
- encrypted += cipher.final('hex');
127
-
128
- const authTag = cipher.getAuthTag();
129
-
130
- return {
131
- encrypted,
132
- iv: iv.toString('hex'),
133
- authTag: authTag.toString('hex')
134
- };
135
- }
136
- }
137
- ```
138
-
139
- ## 보안 체크리스트
140
-
141
- ### 애플리케이션 보안
142
- - [ ] 모든 사용자 입력 검증
143
- - [ ] 출력 인코딩 적용
144
- - [ ] 파라미터화된 쿼리 사용
145
- - [ ] 안전한 인증 메커니즘
146
- - [ ] 세션 관리 보안
147
- - [ ] HTTPS 강제 사용
148
- - [ ] 보안 헤더 설정
149
-
150
- ### API 보안
151
- ```javascript
152
- // 보안 헤더 미들웨어
153
- app.use((req, res, next) => {
154
- // XSS 방지
155
- res.setHeader('X-XSS-Protection', '1; mode=block');
156
- res.setHeader('X-Content-Type-Options', 'nosniff');
157
-
158
- // Clickjacking 방지
159
- res.setHeader('X-Frame-Options', 'DENY');
160
-
161
- // HSTS
162
- res.setHeader('Strict-Transport-Security', 'max-age=31536000; includeSubDomains');
163
-
164
- // CSP
165
- res.setHeader('Content-Security-Policy', "default-src 'self'");
166
-
167
- next();
168
- });
169
- ```
170
-
171
- ### 데이터 보안
172
- - [ ] 저장 시 암호화 (Encryption at Rest)
173
- - [ ] 전송 시 암호화 (Encryption in Transit)
174
- - [ ] 개인정보 마스킹
175
- - [ ] 안전한 백업 및 복구
176
- - [ ] 데이터 보존 정책
177
-
178
- ## 취약점 방지
179
-
180
- ### OWASP Top 10 대응
181
- 1. **Injection**: 파라미터화된 쿼리, 입력 검증
182
- 2. **Broken Authentication**: MFA, 안전한 세션 관리
183
- 3. **Sensitive Data Exposure**: 암호화, HTTPS
184
- 4. **XML External Entities**: XML 파서 보안 설정
185
- 5. **Broken Access Control**: 권한 검증, RBAC
186
- 6. **Security Misconfiguration**: 보안 설정 자동화
187
- 7. **XSS**: 출력 인코딩, CSP
188
- 8. **Insecure Deserialization**: 입력 검증, 타입 체크
189
- 9. **Using Components with Known Vulnerabilities**: 의존성 관리
190
- 10. **Insufficient Logging**: 포괄적 로깅 및 모니터링
191
-
192
- ### Rate Limiting
193
- ```javascript
194
- class RateLimiter {
195
- constructor(windowMs, maxRequests) {
196
- this.windowMs = windowMs;
197
- this.maxRequests = maxRequests;
198
- this.requests = new Map();
199
- }
200
-
201
- async checkLimit(identifier) {
202
- const now = Date.now();
203
- const windowStart = now - this.windowMs;
204
-
205
- // 오래된 요청 정리
206
- const requests = this.requests.get(identifier) || [];
207
- const recentRequests = requests.filter(time => time > windowStart);
208
-
209
- if (recentRequests.length >= this.maxRequests) {
210
- throw new RateLimitError('Too many requests');
211
- }
212
-
213
- recentRequests.push(now);
214
- this.requests.set(identifier, recentRequests);
215
- }
216
- }
217
- ```
218
-
219
- ## 보안 테스팅
220
-
221
- ### 정적 분석 (SAST)
222
- ```bash
223
- # 보안 취약점 스캔
224
- npm audit
225
- snyk test
226
-
227
- # 코드 분석
228
- eslint --plugin security
229
- ```
230
-
231
- ### 동적 분석 (DAST)
232
- - OWASP ZAP
233
- - Burp Suite
234
- - SQL Map
235
-
236
- ### 침투 테스트 체크리스트
237
- - [ ] 인증 우회 시도
238
- - [ ] 권한 상승 테스트
239
- - [ ] SQL Injection 테스트
240
- - [ ] XSS 테스트
241
- - [ ] CSRF 테스트
242
- - [ ] 파일 업로드 취약점
243
- - [ ] API 엔드포인트 테스트
244
-
245
- ## 사고 대응 (Incident Response)
246
-
247
- ### 대응 절차
248
- 1. **탐지**: 이상 행동 모니터링
249
- 2. **분석**: 영향 범위 파악
250
- 3. **격리**: 피해 확산 방지
251
- 4. **제거**: 위협 요소 제거
252
- 5. **복구**: 정상 서비스 복원
253
- 6. **사후 분석**: 재발 방지 대책
254
-
255
- ### 로깅 및 모니터링
256
- ```javascript
257
- class SecurityLogger {
258
- logSecurityEvent(event) {
259
- const log = {
260
- timestamp: new Date().toISOString(),
261
- eventType: event.type,
262
- severity: event.severity,
263
- userId: event.userId,
264
- ipAddress: event.ipAddress,
265
- userAgent: event.userAgent,
266
- details: event.details,
267
- stackTrace: event.error?.stack
268
- };
269
-
270
- // 중요 이벤트는 즉시 알림
271
- if (event.severity === 'CRITICAL') {
272
- this.alertSecurityTeam(log);
273
- }
274
-
275
- // 모든 보안 이벤트 기록
276
- this.writeToSecurityLog(log);
277
- }
278
- }
279
- ```
280
-
281
- ## 컴플라이언스
282
-
283
- ### GDPR 준수
284
- - 개인정보 처리 동의
285
- - 데이터 이동권
286
- - 잊혀질 권리
287
- - 데이터 최소화
288
-
289
- ### PCI DSS 준수
290
- - 카드 데이터 암호화
291
- - 접근 제어
292
- - 정기적인 보안 테스트
293
- - 보안 정책 문서화
294
-
295
- ## 보안 도구
296
-
297
- ### 필수 도구
298
- - **SAST**: SonarQube, Checkmarx
299
- - **DAST**: OWASP ZAP, Acunetix
300
- - **의존성 스캔**: Snyk, npm audit
301
- - **시크릿 스캔**: GitGuardian, TruffleHog
302
- - **WAF**: ModSecurity, Cloudflare
303
-
304
- ### 모니터링 도구
305
- - **SIEM**: Splunk, ELK Stack
306
- - **IDS/IPS**: Snort, Suricata
307
- - **취약점 스캐너**: Nessus, OpenVAS