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.
- package/package.json +3 -2
- package/src/cli/index.js +39 -336
- package/src/lib/installer.js +310 -90
- package/src/utils/messages.js +24 -0
- package/src/DEPENDENCY_MAP.md +0 -90
- package/src/cli/cache-cli.js +0 -459
- package/src/cli/checkpoint-cli.js +0 -417
- package/src/cli/language-cli.js +0 -286
- package/src/cli/sprint-cli.js +0 -287
- package/src/commands/ai-tool.js +0 -383
- package/src/commands/compress.js +0 -60
- package/src/commands/create-project.js +0 -160
- package/src/commands/evaluate.js +0 -459
- package/src/commands/persona.js +0 -309
- package/src/commands/sprint-task.js +0 -262
- package/src/commands/token.js +0 -312
- package/src/lib/ai-persona-manager.js +0 -711
- package/src/lib/cache-system.js +0 -332
- package/src/lib/context-engine.js +0 -568
- package/src/lib/github-integration.js +0 -402
- package/src/lib/memory-profiler.js +0 -471
- package/src/lib/metrics-collector.js +0 -885
- package/src/lib/offline-detector.js +0 -386
- package/src/lib/resource-loader-enhanced.js +0 -399
- package/src/lib/resource-loader.js +0 -250
- package/src/lib/resources/commands/ai-persona.js +0 -602
- package/src/lib/resources/commands/compress-context.js +0 -389
- package/src/lib/resources/commands/evaluate.js +0 -246
- package/src/lib/resources/commands/persona-context-apply.js +0 -562
- package/src/lib/resources/commands/token-tracking.js +0 -443
- package/src/lib/resources/config/commit-patterns.js +0 -103
- package/src/lib/resources/config/language.json +0 -6
- package/src/lib/resources/personas/PERSONA_INDEX.md +0 -57
- package/src/lib/resources/personas/analyst.json +0 -44
- package/src/lib/resources/personas/architect/best_practices.md +0 -136
- package/src/lib/resources/personas/architect/knowledge_base.md +0 -377
- package/src/lib/resources/personas/architect.json +0 -44
- package/src/lib/resources/personas/backend/best_practices.md +0 -766
- package/src/lib/resources/personas/backend/knowledge_base.md +0 -1070
- package/src/lib/resources/personas/data_analyst/best_practices.md +0 -594
- package/src/lib/resources/personas/data_analyst/knowledge_base.md +0 -1057
- package/src/lib/resources/personas/developer.json +0 -44
- package/src/lib/resources/personas/developer.md +0 -37
- package/src/lib/resources/personas/evaluation_criteria.json +0 -137
- package/src/lib/resources/personas/frontend/best_practices.md +0 -445
- package/src/lib/resources/personas/frontend/knowledge_base.md +0 -729
- package/src/lib/resources/personas/persona-index.json +0 -31
- package/src/lib/resources/personas/reviewer.json +0 -44
- package/src/lib/resources/personas/security/best_practices.md +0 -307
- package/src/lib/resources/personas/security/knowledge_base.md +0 -498
- package/src/lib/resources/personas/tester.json +0 -44
- package/src/lib/resources/templates/README.md +0 -78
- package/src/lib/resources/templates/api-server/config.json +0 -64
- package/src/lib/resources/templates/api-server/template/.aiwf/config.json +0 -56
- package/src/lib/resources/templates/api-server/template/.aiwf/feature-ledger.json +0 -42
- package/src/lib/resources/templates/api-server/template/.aiwf/personas/backend-engineer.json +0 -40
- package/src/lib/resources/templates/api-server/template/.aiwf/scripts/cli.js +0 -111
- package/src/lib/resources/templates/api-server/template/.env.example +0 -29
- package/src/lib/resources/templates/api-server/template/.eslintrc.json +0 -23
- package/src/lib/resources/templates/api-server/template/README.md +0 -171
- package/src/lib/resources/templates/api-server/template/jest.config.js +0 -26
- package/src/lib/resources/templates/api-server/template/nodemon.json +0 -9
- package/src/lib/resources/templates/api-server/template/package.json +0 -61
- package/src/lib/resources/templates/api-server/template/src/app.ts +0 -60
- package/src/lib/resources/templates/api-server/template/src/config/swagger.ts +0 -38
- package/src/lib/resources/templates/api-server/template/src/controllers/aiwfController.ts +0 -54
- package/src/lib/resources/templates/api-server/template/src/controllers/authController.ts +0 -128
- package/src/lib/resources/templates/api-server/template/src/controllers/statusController.ts +0 -28
- package/src/lib/resources/templates/api-server/template/src/index.ts +0 -28
- package/src/lib/resources/templates/api-server/template/src/middleware/aiwfMiddleware.ts +0 -50
- package/src/lib/resources/templates/api-server/template/src/middleware/authMiddleware.ts +0 -41
- package/src/lib/resources/templates/api-server/template/src/middleware/errorHandler.ts +0 -42
- package/src/lib/resources/templates/api-server/template/src/middleware/notFoundHandler.ts +0 -14
- package/src/lib/resources/templates/api-server/template/src/middleware/requestLogger.ts +0 -20
- package/src/lib/resources/templates/api-server/template/src/routes/aiwf.ts +0 -31
- package/src/lib/resources/templates/api-server/template/src/routes/index.ts +0 -13
- package/src/lib/resources/templates/api-server/template/src/routes/v1/index.ts +0 -67
- package/src/lib/resources/templates/api-server/template/src/utils/logger.ts +0 -37
- package/src/lib/resources/templates/api-server/template/tests/app.test.ts +0 -40
- package/src/lib/resources/templates/api-server/template/tsconfig.json +0 -43
- package/src/lib/resources/templates/npm-library/config.json +0 -61
- package/src/lib/resources/templates/npm-library/template/LICENSE +0 -21
- package/src/lib/resources/templates/npm-library/template/README.md +0 -201
- package/src/lib/resources/templates/npm-library/template/package.json +0 -78
- package/src/lib/resources/templates/web-app/config.json +0 -53
- package/src/lib/resources/templates/web-app/template/.aiwf/config.json +0 -54
- package/src/lib/resources/templates/web-app/template/.aiwf/feature-ledger.json +0 -37
- package/src/lib/resources/templates/web-app/template/.aiwf/personas/fullstack-developer.json +0 -40
- package/src/lib/resources/templates/web-app/template/.aiwf/scripts/cli.js +0 -110
- package/src/lib/resources/templates/web-app/template/.eslintrc.cjs +0 -20
- package/src/lib/resources/templates/web-app/template/README.md +0 -151
- package/src/lib/resources/templates/web-app/template/index.html +0 -14
- package/src/lib/resources/templates/web-app/template/package.json +0 -44
- package/src/lib/resources/templates/web-app/template/postcss.config.js +0 -6
- package/src/lib/resources/templates/web-app/template/public/vite.svg +0 -1
- package/src/lib/resources/templates/web-app/template/src/App.tsx +0 -21
- package/src/lib/resources/templates/web-app/template/src/components/Layout.tsx +0 -57
- package/src/lib/resources/templates/web-app/template/src/components/aiwf/ContextStatus.tsx +0 -107
- package/src/lib/resources/templates/web-app/template/src/components/aiwf/TokenUsage.tsx +0 -71
- package/src/lib/resources/templates/web-app/template/src/index.css +0 -60
- package/src/lib/resources/templates/web-app/template/src/main.tsx +0 -10
- package/src/lib/resources/templates/web-app/template/src/pages/AiwfDashboard.tsx +0 -57
- package/src/lib/resources/templates/web-app/template/src/pages/HomePage.tsx +0 -89
- package/src/lib/resources/templates/web-app/template/src/pages/NotFound.tsx +0 -25
- package/src/lib/resources/templates/web-app/template/src/stores/aiwfStore.ts +0 -126
- package/src/lib/resources/templates/web-app/template/src/types/global.d.ts +0 -9
- package/src/lib/resources/templates/web-app/template/src/vite-env.d.ts +0 -1
- package/src/lib/resources/templates/web-app/template/tailwind.config.js +0 -30
- package/src/lib/resources/templates/web-app/template/tsconfig.json +0 -37
- package/src/lib/resources/templates/web-app/template/tsconfig.node.json +0 -10
- package/src/lib/resources/templates/web-app/template/vite.config.ts +0 -23
- package/src/lib/resources/utils/background-monitor.js +0 -223
- package/src/lib/resources/utils/compression-metrics.js +0 -1031
- package/src/lib/resources/utils/compression-strategies.js +0 -557
- package/src/lib/resources/utils/content-normalizer.js +0 -455
- package/src/lib/resources/utils/context-compressor.js +0 -583
- package/src/lib/resources/utils/context-rule-parser.js +0 -180
- package/src/lib/resources/utils/context-token-monitor.js +0 -463
- package/src/lib/resources/utils/context-update-manager.js +0 -502
- package/src/lib/resources/utils/git-utils.js +0 -220
- package/src/lib/resources/utils/importance-classifier.js +0 -645
- package/src/lib/resources/utils/information-filter.js +0 -710
- package/src/lib/resources/utils/persona-aware-compressor.js +0 -598
- package/src/lib/resources/utils/prompt-injector.js +0 -242
- package/src/lib/resources/utils/simplified-evaluator.js +0 -119
- package/src/lib/resources/utils/text-summarizer.js +0 -492
- package/src/lib/resources/utils/token-counter.js +0 -177
- package/src/lib/resources/utils/token-monitor.js +0 -484
- package/src/lib/resources/utils/token-reporter.js +0 -452
- package/src/lib/resources/utils/token-storage.js +0 -433
- package/src/lib/resources/utils/token-tracker.js +0 -283
- package/src/lib/state/priority-calculator.js +0 -217
- package/src/lib/state/state-index.js +0 -155
- package/src/lib/state/task-scanner.js +0 -328
- package/src/lib/task-analyzer.js +0 -599
- package/src/lib/template-cache-system.js +0 -559
- package/src/lib/template-downloader.js +0 -467
- package/src/lib/template-version-manager.js +0 -491
- package/src/lib/token-optimizer.js +0 -517
- package/src/utils/engineering-guard.js +0 -399
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "npm-library",
|
|
3
|
-
"displayName": "NPM 라이브러리",
|
|
4
|
-
"description": "TypeScript 기반 NPM 패키지 라이브러리 템플릿",
|
|
5
|
-
"type": "npm-library",
|
|
6
|
-
"language": "typescript",
|
|
7
|
-
"framework": "none",
|
|
8
|
-
"features": [
|
|
9
|
-
"TypeScript",
|
|
10
|
-
"Rollup Build",
|
|
11
|
-
"Jest Testing",
|
|
12
|
-
"ESM & CommonJS",
|
|
13
|
-
"Type Definitions",
|
|
14
|
-
"Tree Shaking",
|
|
15
|
-
"AIWF Integration",
|
|
16
|
-
"Auto Versioning"
|
|
17
|
-
],
|
|
18
|
-
"structure": {
|
|
19
|
-
"src": "소스 코드",
|
|
20
|
-
"tests": "테스트 파일",
|
|
21
|
-
"dist": "빌드 출력",
|
|
22
|
-
".aiwf": "AIWF 설정 및 메타데이터",
|
|
23
|
-
"docs": "라이브러리 문서"
|
|
24
|
-
},
|
|
25
|
-
"dependencies": {},
|
|
26
|
-
"devDependencies": {
|
|
27
|
-
"@types/node": "^20.0.0",
|
|
28
|
-
"@typescript-eslint/eslint-plugin": "^5.60.0",
|
|
29
|
-
"@typescript-eslint/parser": "^5.60.0",
|
|
30
|
-
"typescript": "^5.1.0",
|
|
31
|
-
"rollup": "^3.25.0",
|
|
32
|
-
"@rollup/plugin-typescript": "^11.1.0",
|
|
33
|
-
"@rollup/plugin-node-resolve": "^15.1.0",
|
|
34
|
-
"@rollup/plugin-commonjs": "^25.0.0",
|
|
35
|
-
"@rollup/plugin-json": "^6.0.0",
|
|
36
|
-
"rollup-plugin-terser": "^7.0.2",
|
|
37
|
-
"eslint": "^8.43.0",
|
|
38
|
-
"jest": "^29.5.0",
|
|
39
|
-
"@types/jest": "^29.5.0",
|
|
40
|
-
"ts-jest": "^29.1.0",
|
|
41
|
-
"np": "^8.0.0",
|
|
42
|
-
"husky": "^8.0.0",
|
|
43
|
-
"lint-staged": "^13.0.0",
|
|
44
|
-
"prettier": "^2.8.0"
|
|
45
|
-
},
|
|
46
|
-
"scripts": {
|
|
47
|
-
"build": "rollup -c",
|
|
48
|
-
"dev": "rollup -c -w",
|
|
49
|
-
"test": "jest",
|
|
50
|
-
"test:watch": "jest --watch",
|
|
51
|
-
"test:coverage": "jest --coverage",
|
|
52
|
-
"lint": "eslint . --ext .ts",
|
|
53
|
-
"format": "prettier --write \"src/**/*.ts\"",
|
|
54
|
-
"prepublishOnly": "npm run build",
|
|
55
|
-
"release": "np",
|
|
56
|
-
"aiwf": "node .aiwf/scripts/cli.js"
|
|
57
|
-
},
|
|
58
|
-
"publishConfig": {
|
|
59
|
-
"access": "public"
|
|
60
|
-
}
|
|
61
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) {{year}} {{author}}
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
# {{projectName}}
|
|
2
|
-
|
|
3
|
-
{{description}}
|
|
4
|
-
|
|
5
|
-
## 설치
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
npm install {{projectName}}
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
## 사용법
|
|
12
|
-
|
|
13
|
-
### 기본 사용
|
|
14
|
-
|
|
15
|
-
```typescript
|
|
16
|
-
import { AiwfIntegration } from '{{projectName}}';
|
|
17
|
-
|
|
18
|
-
const aiwf = new AiwfIntegration({
|
|
19
|
-
projectName: 'my-project',
|
|
20
|
-
projectType: 'npm-library',
|
|
21
|
-
features: {
|
|
22
|
-
featureLedger: true,
|
|
23
|
-
contextCompression: true,
|
|
24
|
-
aiPersona: false,
|
|
25
|
-
},
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
// Validate integration
|
|
29
|
-
const result = await aiwf.validate();
|
|
30
|
-
console.log(result);
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
### Feature Tracking
|
|
34
|
-
|
|
35
|
-
```typescript
|
|
36
|
-
const tracker = aiwf.getFeatureTracker();
|
|
37
|
-
|
|
38
|
-
// Add a new feature
|
|
39
|
-
const feature = tracker.addFeature({
|
|
40
|
-
name: 'New API Endpoint',
|
|
41
|
-
description: 'Add user authentication endpoint',
|
|
42
|
-
type: 'feature',
|
|
43
|
-
status: 'planned',
|
|
44
|
-
tags: ['api', 'auth'],
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
// Update feature status
|
|
48
|
-
tracker.updateFeatureStatus(feature.id, 'in_progress');
|
|
49
|
-
|
|
50
|
-
// Get statistics
|
|
51
|
-
const stats = tracker.getStatistics();
|
|
52
|
-
console.log(stats); // { total: 1, completed: 0, inProgress: 1, planned: 0 }
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
### Context Compression
|
|
56
|
-
|
|
57
|
-
```typescript
|
|
58
|
-
const contextManager = aiwf.getContextManager();
|
|
59
|
-
|
|
60
|
-
// Compress content
|
|
61
|
-
const compressed = contextManager.compress(largeContent);
|
|
62
|
-
|
|
63
|
-
// Check token limit
|
|
64
|
-
const isWithinLimit = contextManager.checkTokenLimit(content);
|
|
65
|
-
|
|
66
|
-
// Get token usage
|
|
67
|
-
const usage = contextManager.getTokenUsage();
|
|
68
|
-
console.log(`Token usage: ${usage.percentage}%`);
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
## API 문서
|
|
72
|
-
|
|
73
|
-
### AiwfIntegration
|
|
74
|
-
|
|
75
|
-
메인 통합 클래스입니다.
|
|
76
|
-
|
|
77
|
-
#### Constructor
|
|
78
|
-
|
|
79
|
-
```typescript
|
|
80
|
-
new AiwfIntegration(config: AiwfConfig)
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
#### Methods
|
|
84
|
-
|
|
85
|
-
- `getConfig(): AiwfConfig` - 현재 설정 반환
|
|
86
|
-
- `getFeatureTracker(): FeatureTracker | undefined` - Feature Tracker 인스턴스
|
|
87
|
-
- `getContextManager(): ContextManager | undefined` - Context Manager 인스턴스
|
|
88
|
-
- `validate(): Promise<IntegrationResult>` - 통합 유효성 검사
|
|
89
|
-
|
|
90
|
-
### FeatureTracker
|
|
91
|
-
|
|
92
|
-
기능 추적을 관리합니다.
|
|
93
|
-
|
|
94
|
-
#### Methods
|
|
95
|
-
|
|
96
|
-
- `addFeature(feature: Omit<Feature, 'id' | 'createdAt'>): Feature` - 새 기능 추가
|
|
97
|
-
- `updateFeatureStatus(featureId: string, status: Feature['status']): Feature | undefined` - 상태 업데이트
|
|
98
|
-
- `getAllFeatures(): Feature[]` - 모든 기능 조회
|
|
99
|
-
- `getFeaturesByStatus(status: Feature['status']): Feature[]` - 상태별 기능 조회
|
|
100
|
-
- `getStatistics(): Record<string, number>` - 통계 조회
|
|
101
|
-
- `exportToJSON(): string` - JSON으로 내보내기
|
|
102
|
-
|
|
103
|
-
### ContextManager
|
|
104
|
-
|
|
105
|
-
컨텍스트 압축과 토큰 관리를 담당합니다.
|
|
106
|
-
|
|
107
|
-
#### Methods
|
|
108
|
-
|
|
109
|
-
- `compress(content: string): string` - 컨텐츠 압축
|
|
110
|
-
- `estimateTokens(content: string): number` - 토큰 수 추정
|
|
111
|
-
- `checkTokenLimit(content: string): boolean` - 토큰 한도 확인
|
|
112
|
-
- `updateTokenUsage(tokens: number): void` - 토큰 사용량 업데이트
|
|
113
|
-
- `getTokenUsage(): { used: number; limit: number; percentage: number }` - 사용량 조회
|
|
114
|
-
- `clearCache(): void` - 캐시 초기화
|
|
115
|
-
- `getCacheStats(): { size: number; entries: number }` - 캐시 통계
|
|
116
|
-
|
|
117
|
-
## 타입 정의
|
|
118
|
-
|
|
119
|
-
```typescript
|
|
120
|
-
interface AiwfConfig {
|
|
121
|
-
projectName: string;
|
|
122
|
-
projectType: 'web-app' | 'api-server' | 'npm-library' | 'custom';
|
|
123
|
-
features: {
|
|
124
|
-
featureLedger?: boolean;
|
|
125
|
-
contextCompression?: boolean;
|
|
126
|
-
aiPersona?: boolean;
|
|
127
|
-
};
|
|
128
|
-
options?: Record<string, unknown>;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
interface Feature {
|
|
132
|
-
id: string;
|
|
133
|
-
name: string;
|
|
134
|
-
description: string;
|
|
135
|
-
type: 'feature' | 'bugfix' | 'enhancement' | 'setup';
|
|
136
|
-
status: 'planned' | 'in_progress' | 'completed';
|
|
137
|
-
createdAt: Date;
|
|
138
|
-
completedAt?: Date;
|
|
139
|
-
tags: string[];
|
|
140
|
-
metadata?: Record<string, unknown>;
|
|
141
|
-
}
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
## 개발
|
|
145
|
-
|
|
146
|
-
### 설치
|
|
147
|
-
|
|
148
|
-
```bash
|
|
149
|
-
npm install
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
### 개발 모드
|
|
153
|
-
|
|
154
|
-
```bash
|
|
155
|
-
npm run dev
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
### 테스트
|
|
159
|
-
|
|
160
|
-
```bash
|
|
161
|
-
npm test
|
|
162
|
-
npm run test:coverage
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
### 빌드
|
|
166
|
-
|
|
167
|
-
```bash
|
|
168
|
-
npm run build
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
### 릴리즈
|
|
172
|
-
|
|
173
|
-
```bash
|
|
174
|
-
npm run release
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
## AIWF 기능
|
|
178
|
-
|
|
179
|
-
이 라이브러리는 AIWF와 완벽하게 통합되어 있습니다:
|
|
180
|
-
|
|
181
|
-
- **Feature Ledger**: 라이브러리 기능 개발 추적
|
|
182
|
-
- **Context Compression**: 토큰 사용 최적화
|
|
183
|
-
- **AI Persona**: 라이브러리 개발에 특화된 AI 어시스턴트
|
|
184
|
-
|
|
185
|
-
```bash
|
|
186
|
-
npm run aiwf:status # 프로젝트 상태 확인
|
|
187
|
-
npm run aiwf:feature # Feature 관리
|
|
188
|
-
npm run aiwf:version # 버전 관리
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
## 기여하기
|
|
192
|
-
|
|
193
|
-
1. Fork the repository
|
|
194
|
-
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
|
|
195
|
-
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
|
|
196
|
-
4. Push to the branch (`git push origin feature/amazing-feature`)
|
|
197
|
-
5. Open a Pull Request
|
|
198
|
-
|
|
199
|
-
## 라이선스
|
|
200
|
-
|
|
201
|
-
MIT License - see the [LICENSE](LICENSE) file for details
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "{{projectName}}",
|
|
3
|
-
"version": "0.0.1",
|
|
4
|
-
"description": "{{description}}",
|
|
5
|
-
"main": "dist/index.js",
|
|
6
|
-
"module": "dist/index.esm.js",
|
|
7
|
-
"types": "dist/index.d.ts",
|
|
8
|
-
"files": [
|
|
9
|
-
"dist",
|
|
10
|
-
"README.md",
|
|
11
|
-
"LICENSE"
|
|
12
|
-
],
|
|
13
|
-
"scripts": {
|
|
14
|
-
"build": "rollup -c",
|
|
15
|
-
"dev": "rollup -c -w",
|
|
16
|
-
"test": "jest",
|
|
17
|
-
"test:watch": "jest --watch",
|
|
18
|
-
"test:coverage": "jest --coverage",
|
|
19
|
-
"lint": "eslint . --ext .ts",
|
|
20
|
-
"format": "prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"",
|
|
21
|
-
"prepublishOnly": "npm run lint && npm test && npm run build",
|
|
22
|
-
"prepare": "husky install",
|
|
23
|
-
"release": "np",
|
|
24
|
-
"aiwf": "node .aiwf/scripts/cli.js",
|
|
25
|
-
"aiwf:status": "npm run aiwf status",
|
|
26
|
-
"aiwf:feature": "npm run aiwf feature",
|
|
27
|
-
"aiwf:version": "npm run aiwf version"
|
|
28
|
-
},
|
|
29
|
-
"keywords": [
|
|
30
|
-
"typescript",
|
|
31
|
-
"library",
|
|
32
|
-
"aiwf"
|
|
33
|
-
],
|
|
34
|
-
"author": "{{author}}",
|
|
35
|
-
"license": "MIT",
|
|
36
|
-
"repository": {
|
|
37
|
-
"type": "git",
|
|
38
|
-
"url": "https://github.com/{{username}}/{{projectName}}"
|
|
39
|
-
},
|
|
40
|
-
"bugs": {
|
|
41
|
-
"url": "https://github.com/{{username}}/{{projectName}}/issues"
|
|
42
|
-
},
|
|
43
|
-
"homepage": "https://github.com/{{username}}/{{projectName}}#readme",
|
|
44
|
-
"devDependencies": {
|
|
45
|
-
"@types/node": "^20.0.0",
|
|
46
|
-
"@typescript-eslint/eslint-plugin": "^5.60.0",
|
|
47
|
-
"@typescript-eslint/parser": "^5.60.0",
|
|
48
|
-
"typescript": "^5.1.0",
|
|
49
|
-
"rollup": "^3.25.0",
|
|
50
|
-
"@rollup/plugin-typescript": "^11.1.0",
|
|
51
|
-
"@rollup/plugin-node-resolve": "^15.1.0",
|
|
52
|
-
"@rollup/plugin-commonjs": "^25.0.0",
|
|
53
|
-
"@rollup/plugin-json": "^6.0.0",
|
|
54
|
-
"rollup-plugin-terser": "^7.0.2",
|
|
55
|
-
"rollup-plugin-dts": "^5.3.0",
|
|
56
|
-
"eslint": "^8.43.0",
|
|
57
|
-
"jest": "^29.5.0",
|
|
58
|
-
"@types/jest": "^29.5.0",
|
|
59
|
-
"ts-jest": "^29.1.0",
|
|
60
|
-
"np": "^8.0.0",
|
|
61
|
-
"husky": "^8.0.0",
|
|
62
|
-
"lint-staged": "^13.0.0",
|
|
63
|
-
"prettier": "^2.8.0"
|
|
64
|
-
},
|
|
65
|
-
"lint-staged": {
|
|
66
|
-
"*.ts": [
|
|
67
|
-
"eslint --fix",
|
|
68
|
-
"prettier --write"
|
|
69
|
-
]
|
|
70
|
-
},
|
|
71
|
-
"np": {
|
|
72
|
-
"yarn": false,
|
|
73
|
-
"tests": true
|
|
74
|
-
},
|
|
75
|
-
"engines": {
|
|
76
|
-
"node": ">=14.0.0"
|
|
77
|
-
}
|
|
78
|
-
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "web-app",
|
|
3
|
-
"displayName": "웹 애플리케이션 (React + TypeScript)",
|
|
4
|
-
"description": "React 18과 TypeScript로 구성된 모던 웹 애플리케이션 템플릿",
|
|
5
|
-
"type": "web-app",
|
|
6
|
-
"language": "typescript",
|
|
7
|
-
"framework": "react",
|
|
8
|
-
"features": [
|
|
9
|
-
"React 18",
|
|
10
|
-
"TypeScript",
|
|
11
|
-
"Vite",
|
|
12
|
-
"React Router",
|
|
13
|
-
"Zustand",
|
|
14
|
-
"Tailwind CSS",
|
|
15
|
-
"AIWF Dashboard"
|
|
16
|
-
],
|
|
17
|
-
"structure": {
|
|
18
|
-
"src": "소스 코드",
|
|
19
|
-
"public": "정적 파일",
|
|
20
|
-
".aiwf": "AIWF 설정 및 메타데이터",
|
|
21
|
-
"tests": "테스트 파일"
|
|
22
|
-
},
|
|
23
|
-
"dependencies": {
|
|
24
|
-
"react": "^18.2.0",
|
|
25
|
-
"react-dom": "^18.2.0",
|
|
26
|
-
"react-router-dom": "^6.14.0",
|
|
27
|
-
"zustand": "^4.3.8",
|
|
28
|
-
"axios": "^1.4.0"
|
|
29
|
-
},
|
|
30
|
-
"devDependencies": {
|
|
31
|
-
"@types/react": "^18.2.0",
|
|
32
|
-
"@types/react-dom": "^18.2.0",
|
|
33
|
-
"@typescript-eslint/eslint-plugin": "^5.60.0",
|
|
34
|
-
"@typescript-eslint/parser": "^5.60.0",
|
|
35
|
-
"@vitejs/plugin-react": "^4.0.0",
|
|
36
|
-
"autoprefixer": "^10.4.14",
|
|
37
|
-
"eslint": "^8.43.0",
|
|
38
|
-
"eslint-plugin-react-hooks": "^4.6.0",
|
|
39
|
-
"eslint-plugin-react-refresh": "^0.4.0",
|
|
40
|
-
"postcss": "^8.4.24",
|
|
41
|
-
"tailwindcss": "^3.3.2",
|
|
42
|
-
"typescript": "^5.1.0",
|
|
43
|
-
"vite": "^4.3.0"
|
|
44
|
-
},
|
|
45
|
-
"scripts": {
|
|
46
|
-
"dev": "vite",
|
|
47
|
-
"build": "tsc && vite build",
|
|
48
|
-
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
|
|
49
|
-
"preview": "vite preview",
|
|
50
|
-
"test": "jest",
|
|
51
|
-
"aiwf": "node .aiwf/scripts/cli.js"
|
|
52
|
-
}
|
|
53
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"project_name": "{{projectName}}",
|
|
3
|
-
"project_type": "web-app",
|
|
4
|
-
"framework": "react",
|
|
5
|
-
"language": "typescript",
|
|
6
|
-
"created_at": "{{createdAt}}",
|
|
7
|
-
"version": "0.0.1",
|
|
8
|
-
"features": {
|
|
9
|
-
"feature_ledger": {
|
|
10
|
-
"enabled": true,
|
|
11
|
-
"auto_track": true,
|
|
12
|
-
"git_integration": true
|
|
13
|
-
},
|
|
14
|
-
"ai_persona": {
|
|
15
|
-
"enabled": true,
|
|
16
|
-
"default": "fullstack-developer",
|
|
17
|
-
"available": [
|
|
18
|
-
"fullstack-developer",
|
|
19
|
-
"frontend-specialist",
|
|
20
|
-
"ui-ux-designer",
|
|
21
|
-
"performance-optimizer",
|
|
22
|
-
"security-auditor"
|
|
23
|
-
]
|
|
24
|
-
},
|
|
25
|
-
"context_compression": {
|
|
26
|
-
"enabled": true,
|
|
27
|
-
"level": "balanced",
|
|
28
|
-
"token_limit": 100000,
|
|
29
|
-
"cache_enabled": true
|
|
30
|
-
},
|
|
31
|
-
"token_tracking": {
|
|
32
|
-
"enabled": true,
|
|
33
|
-
"alert_threshold": 80000,
|
|
34
|
-
"history_days": 30
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
"structure": {
|
|
38
|
-
"src_dir": "src",
|
|
39
|
-
"test_dir": "tests",
|
|
40
|
-
"build_dir": "dist",
|
|
41
|
-
"public_dir": "public"
|
|
42
|
-
},
|
|
43
|
-
"conventions": {
|
|
44
|
-
"component_style": "functional",
|
|
45
|
-
"state_management": "zustand",
|
|
46
|
-
"styling": "tailwind",
|
|
47
|
-
"testing": "jest",
|
|
48
|
-
"linting": "eslint"
|
|
49
|
-
},
|
|
50
|
-
"scripts": {
|
|
51
|
-
"pre_commit": "npm run lint && npm test",
|
|
52
|
-
"post_feature": "npm run aiwf:feature update"
|
|
53
|
-
}
|
|
54
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": "1.0.0",
|
|
3
|
-
"project": "{{projectName}}",
|
|
4
|
-
"created": "{{createdAt}}",
|
|
5
|
-
"features": [
|
|
6
|
-
{
|
|
7
|
-
"id": "F001",
|
|
8
|
-
"name": "프로젝트 초기 설정",
|
|
9
|
-
"description": "React + TypeScript + Vite 기반 웹 애플리케이션 초기 설정",
|
|
10
|
-
"type": "setup",
|
|
11
|
-
"status": "completed",
|
|
12
|
-
"created_at": "{{createdAt}}",
|
|
13
|
-
"completed_at": "{{createdAt}}",
|
|
14
|
-
"components": [
|
|
15
|
-
"프로젝트 구조",
|
|
16
|
-
"빌드 설정",
|
|
17
|
-
"TypeScript 설정",
|
|
18
|
-
"ESLint 설정",
|
|
19
|
-
"Tailwind CSS 설정"
|
|
20
|
-
],
|
|
21
|
-
"files": [
|
|
22
|
-
"package.json",
|
|
23
|
-
"vite.config.ts",
|
|
24
|
-
"tsconfig.json",
|
|
25
|
-
"tailwind.config.js",
|
|
26
|
-
".eslintrc.cjs"
|
|
27
|
-
],
|
|
28
|
-
"tags": ["초기설정", "인프라", "설정"]
|
|
29
|
-
}
|
|
30
|
-
],
|
|
31
|
-
"statistics": {
|
|
32
|
-
"total_features": 1,
|
|
33
|
-
"completed": 1,
|
|
34
|
-
"in_progress": 0,
|
|
35
|
-
"planned": 0
|
|
36
|
-
}
|
|
37
|
-
}
|
package/src/lib/resources/templates/web-app/template/.aiwf/personas/fullstack-developer.json
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"id": "fullstack-developer",
|
|
3
|
-
"name": "풀스택 개발자",
|
|
4
|
-
"description": "React 웹 애플리케이션 전체 스택 개발 전문가",
|
|
5
|
-
"expertise": [
|
|
6
|
-
"React 18+ 최신 기능",
|
|
7
|
-
"TypeScript 고급 패턴",
|
|
8
|
-
"상태 관리 (Zustand, Redux)",
|
|
9
|
-
"API 통합 및 데이터 페칭",
|
|
10
|
-
"성능 최적화",
|
|
11
|
-
"테스트 전략"
|
|
12
|
-
],
|
|
13
|
-
"context": {
|
|
14
|
-
"focus_areas": [
|
|
15
|
-
"컴포넌트 설계 및 구현",
|
|
16
|
-
"타입 안정성",
|
|
17
|
-
"코드 재사용성",
|
|
18
|
-
"성능 최적화",
|
|
19
|
-
"접근성 (a11y)"
|
|
20
|
-
],
|
|
21
|
-
"code_style": {
|
|
22
|
-
"components": "함수형 컴포넌트 + Hooks",
|
|
23
|
-
"naming": "camelCase (함수), PascalCase (컴포넌트)",
|
|
24
|
-
"imports": "절대 경로 사용 (@/...)",
|
|
25
|
-
"types": "인터페이스 우선, 필요시 타입 별칭"
|
|
26
|
-
},
|
|
27
|
-
"best_practices": [
|
|
28
|
-
"컴포넌트 단일 책임 원칙",
|
|
29
|
-
"Props 타입 명시",
|
|
30
|
-
"커스텀 훅 활용",
|
|
31
|
-
"메모이제이션 적절히 사용",
|
|
32
|
-
"에러 바운더리 구현"
|
|
33
|
-
]
|
|
34
|
-
},
|
|
35
|
-
"prompts": {
|
|
36
|
-
"component_creation": "React 18의 최신 기능을 활용하여 재사용 가능하고 타입 안전한 컴포넌트를 만들어주세요.",
|
|
37
|
-
"optimization": "React.memo, useMemo, useCallback을 적절히 사용하여 성능을 최적화해주세요.",
|
|
38
|
-
"testing": "Jest와 React Testing Library를 사용하여 컴포넌트 테스트를 작성해주세요."
|
|
39
|
-
}
|
|
40
|
-
}
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
const fs = require('fs');
|
|
4
|
-
const path = require('path');
|
|
5
|
-
|
|
6
|
-
const args = process.argv.slice(2);
|
|
7
|
-
const command = args[0];
|
|
8
|
-
const subcommand = args[1];
|
|
9
|
-
|
|
10
|
-
const projectRoot = path.resolve(__dirname, '../..');
|
|
11
|
-
const aiwfDir = path.join(projectRoot, '.aiwf');
|
|
12
|
-
const featureLedgerPath = path.join(aiwfDir, 'feature-ledger.json');
|
|
13
|
-
const configPath = path.join(aiwfDir, 'config.json');
|
|
14
|
-
|
|
15
|
-
// Feature Ledger 관련 명령어
|
|
16
|
-
if (command === 'feature') {
|
|
17
|
-
const ledger = JSON.parse(fs.readFileSync(featureLedgerPath, 'utf8'));
|
|
18
|
-
|
|
19
|
-
switch (subcommand) {
|
|
20
|
-
case 'list':
|
|
21
|
-
console.log('\n📋 Feature Ledger\n');
|
|
22
|
-
ledger.features.forEach(feature => {
|
|
23
|
-
const status = {
|
|
24
|
-
completed: '✅',
|
|
25
|
-
in_progress: '🔄',
|
|
26
|
-
planned: '📝'
|
|
27
|
-
}[feature.status];
|
|
28
|
-
console.log(`${status} [${feature.id}] ${feature.name}`);
|
|
29
|
-
console.log(` ${feature.description}`);
|
|
30
|
-
console.log(` Tags: ${feature.tags.join(', ')}`);
|
|
31
|
-
console.log();
|
|
32
|
-
});
|
|
33
|
-
console.log(`총 ${ledger.features.length}개 기능`);
|
|
34
|
-
break;
|
|
35
|
-
|
|
36
|
-
case 'add':
|
|
37
|
-
console.log('새 기능 추가는 아직 구현되지 않았습니다.');
|
|
38
|
-
break;
|
|
39
|
-
|
|
40
|
-
case 'update':
|
|
41
|
-
console.log('기능 업데이트는 아직 구현되지 않았습니다.');
|
|
42
|
-
break;
|
|
43
|
-
|
|
44
|
-
default:
|
|
45
|
-
console.log('사용법: npm run aiwf feature [list|add|update]');
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// Context 관련 명령어
|
|
50
|
-
else if (command === 'context') {
|
|
51
|
-
const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
|
|
52
|
-
|
|
53
|
-
switch (subcommand) {
|
|
54
|
-
case 'status':
|
|
55
|
-
console.log('\n📊 Context 상태\n');
|
|
56
|
-
console.log(`압축 레벨: ${config.features.context_compression.level}`);
|
|
57
|
-
console.log(`캐시 활성화: ${config.features.context_compression.cache_enabled ? '예' : '아니오'}`);
|
|
58
|
-
console.log(`토큰 한도: ${config.features.context_compression.token_limit.toLocaleString()}`);
|
|
59
|
-
break;
|
|
60
|
-
|
|
61
|
-
case 'compress':
|
|
62
|
-
console.log('수동 압축은 아직 구현되지 않았습니다.');
|
|
63
|
-
break;
|
|
64
|
-
|
|
65
|
-
default:
|
|
66
|
-
console.log('사용법: npm run aiwf context [status|compress]');
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// 상태 명령어
|
|
71
|
-
else if (command === 'status') {
|
|
72
|
-
const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
|
|
73
|
-
const ledger = JSON.parse(fs.readFileSync(featureLedgerPath, 'utf8'));
|
|
74
|
-
|
|
75
|
-
console.log('\n🚀 AIWF 프로젝트 상태\n');
|
|
76
|
-
console.log(`프로젝트: ${config.project_name}`);
|
|
77
|
-
console.log(`타입: ${config.project_type}`);
|
|
78
|
-
console.log(`버전: ${config.version}`);
|
|
79
|
-
console.log();
|
|
80
|
-
console.log('📊 통계:');
|
|
81
|
-
console.log(`- 총 기능: ${ledger.statistics.total_features}`);
|
|
82
|
-
console.log(`- 완료: ${ledger.statistics.completed}`);
|
|
83
|
-
console.log(`- 진행중: ${ledger.statistics.in_progress}`);
|
|
84
|
-
console.log(`- 계획됨: ${ledger.statistics.planned}`);
|
|
85
|
-
console.log();
|
|
86
|
-
console.log('🤖 AI 페르소나:', config.features.ai_persona.default);
|
|
87
|
-
console.log('📦 Context 압축:', config.features.context_compression.level);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
// 도움말
|
|
91
|
-
else {
|
|
92
|
-
console.log(`
|
|
93
|
-
AIWF CLI - AI Workflow Framework
|
|
94
|
-
|
|
95
|
-
사용법: npm run aiwf [command] [subcommand]
|
|
96
|
-
|
|
97
|
-
명령어:
|
|
98
|
-
status 프로젝트 상태 보기
|
|
99
|
-
feature list 기능 목록 보기
|
|
100
|
-
feature add 새 기능 추가
|
|
101
|
-
feature update 기능 상태 업데이트
|
|
102
|
-
context status Context 압축 상태 보기
|
|
103
|
-
context compress 수동 압축 실행
|
|
104
|
-
|
|
105
|
-
예시:
|
|
106
|
-
npm run aiwf status
|
|
107
|
-
npm run aiwf feature list
|
|
108
|
-
npm run aiwf context status
|
|
109
|
-
`);
|
|
110
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
root: true,
|
|
3
|
-
env: { browser: true, es2020: true },
|
|
4
|
-
extends: [
|
|
5
|
-
'eslint:recommended',
|
|
6
|
-
'plugin:@typescript-eslint/recommended',
|
|
7
|
-
'plugin:react-hooks/recommended',
|
|
8
|
-
],
|
|
9
|
-
ignorePatterns: ['dist', '.eslintrc.cjs'],
|
|
10
|
-
parser: '@typescript-eslint/parser',
|
|
11
|
-
plugins: ['react-refresh'],
|
|
12
|
-
rules: {
|
|
13
|
-
'react-refresh/only-export-components': [
|
|
14
|
-
'warn',
|
|
15
|
-
{ allowConstantExport: true },
|
|
16
|
-
],
|
|
17
|
-
'@typescript-eslint/no-explicit-any': 'warn',
|
|
18
|
-
'@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
|
|
19
|
-
},
|
|
20
|
-
}
|