@silbaram/artifact-driven-agent 0.1.9 → 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.
- package/README.md +296 -25
- package/ai-dev-team/.ada-status.template.json +10 -10
- package/ai-dev-team/README.md +39 -44
- package/ai-dev-team/artifacts/api.md +2 -212
- package/ai-dev-team/artifacts/features/_template/api.md +19 -19
- package/ai-dev-team/artifacts/features/_template/review.md +14 -14
- package/ai-dev-team/artifacts/features/_template/spec.md +28 -28
- package/ai-dev-team/artifacts/features/_template/ui.md +14 -14
- package/ai-dev-team/artifacts/improvement-reports/IMP-0000-template.md +57 -57
- package/ai-dev-team/artifacts/project.md +2 -193
- package/ai-dev-team/artifacts/rfc/RFC-0000-template.md +49 -49
- package/core/artifacts/decision.md +72 -72
- package/core/artifacts/plan.md +187 -187
- package/core/artifacts/project.md +193 -193
- package/core/artifacts/sprints/_template/docs/release-notes.md +37 -37
- package/core/artifacts/sprints/_template/meta.md +54 -54
- package/core/artifacts/sprints/_template/retrospective.md +50 -50
- package/core/artifacts/sprints/_template/review-reports/review-template.md +49 -49
- package/core/artifacts/sprints/_template/tasks/task-template.md +43 -43
- package/core/docs-templates/mkdocs/docs/architecture/overview.md +29 -29
- package/core/docs-templates/mkdocs/docs/changelog.md +36 -36
- package/core/docs-templates/mkdocs/docs/contributing/contributing.md +60 -60
- package/core/docs-templates/mkdocs/docs/getting-started/configuration.md +51 -51
- package/core/docs-templates/mkdocs/docs/getting-started/installation.md +41 -41
- package/core/docs-templates/mkdocs/docs/getting-started/quick-start.md +56 -56
- package/core/docs-templates/mkdocs/docs/guides/api-reference.md +83 -83
- package/core/docs-templates/mkdocs/docs/index.md +32 -32
- package/core/docs-templates/mkdocs/mkdocs.yml +86 -86
- package/core/roles/analyzer.md +265 -265
- package/core/roles/developer.md +6 -1
- package/core/roles/documenter.md +226 -715
- package/core/roles/improver.md +461 -461
- package/core/roles/manager.md +574 -544
- package/core/roles/planner.md +398 -398
- package/core/roles/reviewer.md +294 -294
- package/core/rules/document-priority.md +198 -198
- package/core/rules/escalation.md +172 -172
- package/core/rules/iteration.md +236 -236
- package/core/rules/rfc.md +31 -31
- package/core/rules/rollback.md +218 -218
- package/core/skills/_template/SKILL.md +50 -0
- package/core/skills/clean-code/SKILL.md +177 -0
- package/core/skills/code-review-checklist/SKILL.md +125 -0
- package/core/skills/error-handling/SKILL.md +155 -0
- package/core/skills/talk-game-dot-design/SKILL.md +85 -0
- package/core/skills/talk-game-dot-design/references/asset-specs.md +57 -0
- package/core/skills/talk-game-dot-design/references/review-checklist.md +34 -0
- package/core/skills/task-writing/SKILL.md +166 -0
- package/core/skills/testing-patterns/SKILL.md +140 -0
- package/dist/bin/cli.d.ts +2 -0
- package/dist/bin/cli.js +121 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/src/commands/config.d.ts +4 -0
- package/dist/src/commands/config.js +427 -0
- package/dist/src/commands/config.js.map +1 -0
- package/dist/src/commands/docs.d.ts +12 -0
- package/dist/src/commands/docs.js +453 -0
- package/dist/src/commands/docs.js.map +1 -0
- package/dist/src/commands/interactive.d.ts +4 -0
- package/dist/src/commands/interactive.js +380 -0
- package/dist/src/commands/interactive.js.map +1 -0
- package/dist/src/commands/logs.d.ts +1 -0
- package/dist/src/commands/logs.js +76 -0
- package/dist/src/commands/logs.js.map +1 -0
- package/dist/src/commands/monitor.d.ts +6 -0
- package/dist/src/commands/monitor.js +216 -0
- package/dist/src/commands/monitor.js.map +1 -0
- package/dist/src/commands/reset.d.ts +4 -0
- package/dist/src/commands/reset.js +57 -0
- package/dist/src/commands/reset.js.map +1 -0
- package/dist/src/commands/run.d.ts +45 -0
- package/dist/src/commands/run.js +421 -0
- package/dist/src/commands/run.js.map +1 -0
- package/dist/src/commands/sessions.d.ts +5 -0
- package/dist/src/commands/sessions.js +563 -0
- package/dist/src/commands/sessions.js.map +1 -0
- package/dist/src/commands/setup.d.ts +1 -0
- package/dist/src/commands/setup.js +132 -0
- package/dist/src/commands/setup.js.map +1 -0
- package/dist/src/commands/skills.d.ts +4 -0
- package/dist/src/commands/skills.js +748 -0
- package/dist/src/commands/skills.js.map +1 -0
- package/dist/src/commands/sprint.d.ts +4 -0
- package/dist/src/commands/sprint.js +434 -0
- package/dist/src/commands/sprint.js.map +1 -0
- package/dist/src/commands/status.d.ts +1 -0
- package/dist/src/commands/status.js +97 -0
- package/dist/src/commands/status.js.map +1 -0
- package/dist/src/commands/upgrade.d.ts +6 -0
- package/dist/src/commands/upgrade.js +350 -0
- package/dist/src/commands/upgrade.js.map +1 -0
- package/dist/src/commands/validate.d.ts +8 -0
- package/dist/src/commands/validate.js +260 -0
- package/dist/src/commands/validate.js.map +1 -0
- package/dist/src/commands/validate.test.d.ts +1 -0
- package/dist/src/commands/validate.test.js +74 -0
- package/dist/src/commands/validate.test.js.map +1 -0
- package/{src/index.js → dist/src/index.d.ts} +1 -3
- package/dist/src/index.js +15 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/types/common.d.ts +31 -0
- package/dist/src/types/common.js +2 -0
- package/dist/src/types/common.js.map +1 -0
- package/dist/src/types/config.d.ts +46 -0
- package/dist/src/types/config.js +2 -0
- package/dist/src/types/config.js.map +1 -0
- package/dist/src/types/index.d.ts +53 -0
- package/dist/src/types/index.js +2 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/types/session.d.ts +87 -0
- package/dist/src/types/session.js +2 -0
- package/dist/src/types/session.js.map +1 -0
- package/dist/src/types/task.d.ts +32 -0
- package/dist/src/types/task.js +2 -0
- package/dist/src/types/task.js.map +1 -0
- package/dist/src/ui/dashboard.d.ts +9 -0
- package/dist/src/ui/dashboard.js +468 -0
- package/dist/src/ui/dashboard.js.map +1 -0
- package/dist/src/ui/keyHandler.d.ts +47 -0
- package/dist/src/ui/keyHandler.js +132 -0
- package/dist/src/ui/keyHandler.js.map +1 -0
- package/dist/src/ui/quickActions.d.ts +25 -0
- package/dist/src/ui/quickActions.js +106 -0
- package/dist/src/ui/quickActions.js.map +1 -0
- package/dist/src/utils/config.d.ts +33 -0
- package/dist/src/utils/config.js +135 -0
- package/dist/src/utils/config.js.map +1 -0
- package/dist/src/utils/files.d.ts +84 -0
- package/dist/src/utils/files.js +202 -0
- package/dist/src/utils/files.js.map +1 -0
- package/dist/src/utils/promptBuilder.d.ts +39 -0
- package/dist/src/utils/promptBuilder.js +726 -0
- package/dist/src/utils/promptBuilder.js.map +1 -0
- package/dist/src/utils/sessionState.d.ts +83 -0
- package/dist/src/utils/sessionState.js +466 -0
- package/dist/src/utils/sessionState.js.map +1 -0
- package/dist/src/utils/sessionState.process.test.d.ts +1 -0
- package/dist/src/utils/sessionState.process.test.js +93 -0
- package/dist/src/utils/sessionState.process.test.js.map +1 -0
- package/dist/src/utils/sessionState.test.d.ts +1 -0
- package/dist/src/utils/sessionState.test.js +150 -0
- package/dist/src/utils/sessionState.test.js.map +1 -0
- package/dist/src/utils/sprintUtils.d.ts +13 -0
- package/dist/src/utils/sprintUtils.js +129 -0
- package/dist/src/utils/sprintUtils.js.map +1 -0
- package/dist/src/utils/taskParser.d.ts +9 -0
- package/dist/src/utils/taskParser.js +122 -0
- package/dist/src/utils/taskParser.js.map +1 -0
- package/dist/src/utils/taskParser.test.d.ts +1 -0
- package/dist/src/utils/taskParser.test.js +69 -0
- package/dist/src/utils/taskParser.test.js.map +1 -0
- package/package.json +62 -47
- package/templates/cli/artifacts/commands.md +262 -262
- package/templates/cli/artifacts/output-format.md +298 -298
- package/templates/cli/rules/command-change.md +225 -225
- package/templates/game/artifacts/assets.md +148 -148
- package/templates/game/artifacts/game-systems.md +217 -217
- package/templates/game/artifacts/hud.md +199 -199
- package/templates/game/rules/system-change.md +184 -184
- package/templates/library/artifacts/changelog.md +84 -84
- package/templates/library/artifacts/examples.md +157 -157
- package/templates/library/artifacts/public-api.md +197 -197
- package/templates/library/rules/versioning.md +186 -186
- package/templates/web-dev/artifacts/api.md +212 -212
- package/templates/web-dev/artifacts/ui.md +104 -104
- package/templates/web-dev/rules/api-change.md +198 -198
- package/ai-dev-team/.ada-status.json +0 -10
- package/ai-dev-team/.ada-version +0 -6
- package/ai-dev-team/.current-template +0 -1
- package/ai-dev-team/.gitkeep +0 -0
- package/ai-dev-team/.sessions/logs/20260124-014551-00f04724.log +0 -5
- package/ai-dev-team/.sessions/logs/20260124-014623-cb2b1d44.log +0 -5
- package/ai-dev-team/artifacts/.gitkeep +0 -0
- package/ai-dev-team/artifacts/decision.md +0 -72
- package/ai-dev-team/artifacts/plan.md +0 -187
- package/ai-dev-team/artifacts/sprints/_template/docs/release-notes.md +0 -37
- package/ai-dev-team/artifacts/sprints/_template/meta.md +0 -54
- package/ai-dev-team/artifacts/sprints/_template/retrospective.md +0 -50
- package/ai-dev-team/artifacts/sprints/_template/review-reports/review-template.md +0 -49
- package/ai-dev-team/artifacts/sprints/_template/tasks/task-template.md +0 -43
- package/ai-dev-team/artifacts/ui.md +0 -104
- package/ai-dev-team/roles/.gitkeep +0 -0
- package/ai-dev-team/roles/analyzer.md +0 -265
- package/ai-dev-team/roles/developer.md +0 -222
- package/ai-dev-team/roles/documenter.md +0 -715
- package/ai-dev-team/roles/improver.md +0 -461
- package/ai-dev-team/roles/manager.md +0 -544
- package/ai-dev-team/roles/planner.md +0 -398
- package/ai-dev-team/roles/reviewer.md +0 -294
- package/ai-dev-team/rules/.gitkeep +0 -0
- package/ai-dev-team/rules/api-change.md +0 -198
- package/ai-dev-team/rules/document-priority.md +0 -199
- package/ai-dev-team/rules/escalation.md +0 -172
- package/ai-dev-team/rules/iteration.md +0 -236
- package/ai-dev-team/rules/rfc.md +0 -31
- package/ai-dev-team/rules/rollback.md +0 -218
- package/bin/cli.js +0 -127
- package/src/commands/config.js +0 -371
- package/src/commands/docs.js +0 -502
- package/src/commands/interactive.js +0 -392
- package/src/commands/logs.js +0 -81
- package/src/commands/monitor.js +0 -236
- package/src/commands/reset.js +0 -66
- package/src/commands/run.js +0 -739
- package/src/commands/sessions.js +0 -646
- package/src/commands/setup.js +0 -149
- package/src/commands/sprint.js +0 -503
- package/src/commands/status.js +0 -109
- package/src/commands/upgrade.js +0 -416
- package/src/commands/validate.js +0 -289
- package/src/commands/validate.test.js +0 -84
- package/src/ui/dashboard.js +0 -518
- package/src/ui/keyHandler.js +0 -147
- package/src/ui/quickActions.js +0 -111
- package/src/utils/config.js +0 -74
- package/src/utils/files.js +0 -201
- package/src/utils/sessionState.js +0 -513
- package/src/utils/sessionState.process.test.js +0 -101
- package/src/utils/sessionState.test.js +0 -183
- package/src/utils/sprintUtils.js +0 -134
- package/src/utils/taskParser.js +0 -134
- package/src/utils/taskParser.test.js +0 -76
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyHandler.js","sourceRoot":"","sources":["../../../src/ui/keyHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ProjectState } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Quick Action 결과
|
|
4
|
+
*/
|
|
5
|
+
export interface QuickActionResult {
|
|
6
|
+
handled: boolean;
|
|
7
|
+
special?: string;
|
|
8
|
+
error?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Quick Action 정의
|
|
12
|
+
*/
|
|
13
|
+
export interface QuickAction {
|
|
14
|
+
label: string;
|
|
15
|
+
description: string;
|
|
16
|
+
handler: ((state: ProjectState) => Promise<void>) | null;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Quick Action 정의
|
|
20
|
+
*/
|
|
21
|
+
export declare const QUICK_ACTIONS: Record<string, QuickAction>;
|
|
22
|
+
/**
|
|
23
|
+
* Quick Action 실행
|
|
24
|
+
*/
|
|
25
|
+
export declare function executeQuickAction(key: string, state: ProjectState): Promise<QuickActionResult>;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { sessions } from '../commands/sessions.js';
|
|
3
|
+
import { logs } from '../commands/logs.js';
|
|
4
|
+
import { status } from '../commands/status.js';
|
|
5
|
+
/**
|
|
6
|
+
* Quick Action 정의
|
|
7
|
+
*/
|
|
8
|
+
export const QUICK_ACTIONS = {
|
|
9
|
+
q: {
|
|
10
|
+
label: '종료',
|
|
11
|
+
description: '대시보드 종료',
|
|
12
|
+
handler: null, // 특수 처리
|
|
13
|
+
},
|
|
14
|
+
h: {
|
|
15
|
+
label: '도움말',
|
|
16
|
+
description: '도움말 표시',
|
|
17
|
+
handler: showHelp,
|
|
18
|
+
},
|
|
19
|
+
// 알파벳 키 추가 명령어
|
|
20
|
+
s: {
|
|
21
|
+
label: 'sessions',
|
|
22
|
+
description: '활성 세션 목록',
|
|
23
|
+
handler: runSessions,
|
|
24
|
+
},
|
|
25
|
+
l: {
|
|
26
|
+
label: 'logs',
|
|
27
|
+
description: '최근 세션 로그',
|
|
28
|
+
handler: runLogs,
|
|
29
|
+
},
|
|
30
|
+
t: {
|
|
31
|
+
label: 'status',
|
|
32
|
+
description: '프로젝트 상태 확인',
|
|
33
|
+
handler: runStatus,
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* 세션 목록 표시
|
|
38
|
+
*/
|
|
39
|
+
async function runSessions() {
|
|
40
|
+
console.log('');
|
|
41
|
+
await sessions({});
|
|
42
|
+
console.log('\n계속하려면 아무 키나 누르세요...');
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 로그 확인
|
|
46
|
+
*/
|
|
47
|
+
async function runLogs() {
|
|
48
|
+
console.log('');
|
|
49
|
+
await logs();
|
|
50
|
+
console.log('\n계속하려면 아무 키나 누르세요...');
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* 프로젝트 상태 확인
|
|
54
|
+
*/
|
|
55
|
+
async function runStatus() {
|
|
56
|
+
console.log('');
|
|
57
|
+
await status();
|
|
58
|
+
console.log('\n계속하려면 아무 키나 누르세요...');
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* 도움말 표시
|
|
62
|
+
*/
|
|
63
|
+
async function showHelp() {
|
|
64
|
+
console.log('');
|
|
65
|
+
console.log(chalk.cyan('━'.repeat(60)));
|
|
66
|
+
console.log(chalk.cyan.bold(' ADA UI Mode 도움말'));
|
|
67
|
+
console.log(chalk.cyan('━'.repeat(60)));
|
|
68
|
+
console.log('');
|
|
69
|
+
console.log(chalk.white.bold(' 알파벳 키 (관리/모니터링):'));
|
|
70
|
+
console.log(' s - 활성 세션 목록');
|
|
71
|
+
console.log(' l - 최근 세션 로그');
|
|
72
|
+
console.log(' t - 프로젝트 상태 확인');
|
|
73
|
+
console.log('');
|
|
74
|
+
console.log(chalk.white.bold(' 기타 키:'));
|
|
75
|
+
console.log(' q - UI 모드 종료');
|
|
76
|
+
console.log(' h - 이 도움말 표시');
|
|
77
|
+
console.log('');
|
|
78
|
+
console.log(chalk.gray(' 화면은 2초마다 자동 갱신됩니다.'));
|
|
79
|
+
console.log(chalk.gray(' 에이전트 실행 중에는 UI가 일시 정지됩니다.'));
|
|
80
|
+
console.log('');
|
|
81
|
+
console.log(chalk.cyan('━'.repeat(60)));
|
|
82
|
+
console.log('\n계속하려면 아무 키나 누르세요...');
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Quick Action 실행
|
|
86
|
+
*/
|
|
87
|
+
export async function executeQuickAction(key, state) {
|
|
88
|
+
const action = QUICK_ACTIONS[key];
|
|
89
|
+
if (!action) {
|
|
90
|
+
return { handled: false };
|
|
91
|
+
}
|
|
92
|
+
if (action.handler === null) {
|
|
93
|
+
// 특수 처리 (refresh, quit)
|
|
94
|
+
return { handled: true, special: key };
|
|
95
|
+
}
|
|
96
|
+
try {
|
|
97
|
+
await action.handler(state);
|
|
98
|
+
return { handled: true };
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
102
|
+
console.error(chalk.red(`액션 실행 오류: ${message}`));
|
|
103
|
+
return { handled: true, error: message };
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=quickActions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quickActions.js","sourceRoot":"","sources":["../../../src/ui/quickActions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { AdaConfig } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* 설정 파일 경로 반환
|
|
4
|
+
*/
|
|
5
|
+
export declare function getConfigPath(): string;
|
|
6
|
+
/**
|
|
7
|
+
* 설정 파일 읽기 (없으면 기본값 생성)
|
|
8
|
+
*/
|
|
9
|
+
export declare function readConfig(): AdaConfig;
|
|
10
|
+
/**
|
|
11
|
+
* 설정 파일 쓰기
|
|
12
|
+
*/
|
|
13
|
+
export declare function writeConfig(config: AdaConfig): void;
|
|
14
|
+
/**
|
|
15
|
+
* 역할에 대한 권장 도구 반환
|
|
16
|
+
*/
|
|
17
|
+
export declare function getToolForRole(role: string): string;
|
|
18
|
+
/**
|
|
19
|
+
* 역할에 대한 스킬 목록 반환
|
|
20
|
+
*/
|
|
21
|
+
export declare function getSkillsForRole(role: string): string[];
|
|
22
|
+
/**
|
|
23
|
+
* 역할에 스킬 설정 (덮어쓰기)
|
|
24
|
+
*/
|
|
25
|
+
export declare function setSkillsForRole(role: string, skills: string[]): void;
|
|
26
|
+
/**
|
|
27
|
+
* 역할의 스킬 추가
|
|
28
|
+
*/
|
|
29
|
+
export declare function addSkillsToRole(role: string, ...skillsToAdd: string[]): void;
|
|
30
|
+
/**
|
|
31
|
+
* 역할의 스킬 제거
|
|
32
|
+
*/
|
|
33
|
+
export declare function removeSkillsFromRole(role: string, ...skillsToRemove: string[]): void;
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import fs from 'fs-extra';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { getWorkspaceDir } from './files.js';
|
|
4
|
+
const CONFIG_FILENAME = 'ada.config.json';
|
|
5
|
+
const DEFAULT_CONFIG = {
|
|
6
|
+
version: '1.0',
|
|
7
|
+
defaults: {
|
|
8
|
+
tool: 'claude',
|
|
9
|
+
},
|
|
10
|
+
roles: {
|
|
11
|
+
// 기본값은 모두 claude로 설정하되, 사용자가 변경 가능
|
|
12
|
+
manager: 'claude',
|
|
13
|
+
planner: 'claude',
|
|
14
|
+
architect: 'claude',
|
|
15
|
+
developer: 'claude',
|
|
16
|
+
reviewer: 'claude',
|
|
17
|
+
improver: 'claude',
|
|
18
|
+
documenter: 'claude',
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* 설정 파일 경로 반환
|
|
23
|
+
*/
|
|
24
|
+
export function getConfigPath() {
|
|
25
|
+
return path.join(getWorkspaceDir(), CONFIG_FILENAME);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 설정 파일 읽기 (없으면 기본값 생성)
|
|
29
|
+
*/
|
|
30
|
+
export function readConfig() {
|
|
31
|
+
const configPath = getConfigPath();
|
|
32
|
+
if (!fs.existsSync(configPath)) {
|
|
33
|
+
// 설정 파일이 없으면 기본값 저장 후 반환
|
|
34
|
+
writeConfig(DEFAULT_CONFIG);
|
|
35
|
+
return DEFAULT_CONFIG;
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
const content = fs.readFileSync(configPath, 'utf-8');
|
|
39
|
+
const config = JSON.parse(content);
|
|
40
|
+
// 누락된 필드가 있으면 기본값으로 채움
|
|
41
|
+
return {
|
|
42
|
+
...DEFAULT_CONFIG,
|
|
43
|
+
...config,
|
|
44
|
+
defaults: { ...DEFAULT_CONFIG.defaults, ...(config.defaults || {}) },
|
|
45
|
+
roles: { ...DEFAULT_CONFIG.roles, ...(config.roles || {}) },
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
console.warn(`⚠️ 설정 파일(${CONFIG_FILENAME}) 파싱 실패, 기본값을 사용합니다.`);
|
|
50
|
+
return DEFAULT_CONFIG;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* 설정 파일 쓰기
|
|
55
|
+
*/
|
|
56
|
+
export function writeConfig(config) {
|
|
57
|
+
const configPath = getConfigPath();
|
|
58
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* 역할에 대한 권장 도구 반환
|
|
62
|
+
*/
|
|
63
|
+
export function getToolForRole(role) {
|
|
64
|
+
const config = readConfig();
|
|
65
|
+
const roleConfig = config.roles[role];
|
|
66
|
+
// 객체 형식 (tool + skills)
|
|
67
|
+
if (typeof roleConfig === 'object' && roleConfig !== null) {
|
|
68
|
+
return roleConfig.tool;
|
|
69
|
+
}
|
|
70
|
+
// 문자열 형식
|
|
71
|
+
if (typeof roleConfig === 'string') {
|
|
72
|
+
return roleConfig;
|
|
73
|
+
}
|
|
74
|
+
// 기본값
|
|
75
|
+
return config.defaults?.tool || 'claude';
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* 역할에 대한 스킬 목록 반환
|
|
79
|
+
*/
|
|
80
|
+
export function getSkillsForRole(role) {
|
|
81
|
+
const config = readConfig();
|
|
82
|
+
const roleConfig = config.roles[role];
|
|
83
|
+
// 객체 형식 (tool + skills)
|
|
84
|
+
if (typeof roleConfig === 'object' && roleConfig !== null && roleConfig.skills) {
|
|
85
|
+
return roleConfig.skills;
|
|
86
|
+
}
|
|
87
|
+
// 문자열 형식 또는 스킬 없음
|
|
88
|
+
return [];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* 역할에 스킬 설정 (덮어쓰기)
|
|
92
|
+
*/
|
|
93
|
+
export function setSkillsForRole(role, skills) {
|
|
94
|
+
const config = readConfig();
|
|
95
|
+
const roleConfig = config.roles[role];
|
|
96
|
+
// 기존이 문자열이면 객체로 변환
|
|
97
|
+
if (typeof roleConfig === 'string') {
|
|
98
|
+
config.roles[role] = {
|
|
99
|
+
tool: roleConfig,
|
|
100
|
+
skills: skills,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
// 기존이 객체면 skills만 업데이트
|
|
104
|
+
else if (typeof roleConfig === 'object' && roleConfig !== null) {
|
|
105
|
+
config.roles[role] = {
|
|
106
|
+
...roleConfig,
|
|
107
|
+
skills: skills,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
// 역할이 없으면 새로 생성
|
|
111
|
+
else {
|
|
112
|
+
config.roles[role] = {
|
|
113
|
+
tool: config.defaults?.tool || 'claude',
|
|
114
|
+
skills: skills,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
writeConfig(config);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* 역할의 스킬 추가
|
|
121
|
+
*/
|
|
122
|
+
export function addSkillsToRole(role, ...skillsToAdd) {
|
|
123
|
+
const existingSkills = getSkillsForRole(role);
|
|
124
|
+
const newSkills = [...new Set([...existingSkills, ...skillsToAdd])]; // 중복 제거
|
|
125
|
+
setSkillsForRole(role, newSkills);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* 역할의 스킬 제거
|
|
129
|
+
*/
|
|
130
|
+
export function removeSkillsFromRole(role, ...skillsToRemove) {
|
|
131
|
+
const existingSkills = getSkillsForRole(role);
|
|
132
|
+
const newSkills = existingSkills.filter(s => !skillsToRemove.includes(s));
|
|
133
|
+
setSkillsForRole(role, newSkills);
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/utils/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { VersionInfo } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* 줄바꿈 문자를 LF로 통일
|
|
4
|
+
* Windows CRLF(\r\n) → LF(\n)
|
|
5
|
+
*/
|
|
6
|
+
export declare function normalizeLineEndings(content: string): string;
|
|
7
|
+
/**
|
|
8
|
+
* 패키지 루트 디렉토리 반환
|
|
9
|
+
*/
|
|
10
|
+
export declare function getPackageRoot(): string;
|
|
11
|
+
/**
|
|
12
|
+
* 작업 디렉토리 (ai-dev-team) 경로 반환
|
|
13
|
+
*/
|
|
14
|
+
export declare function getWorkspaceDir(): string;
|
|
15
|
+
/**
|
|
16
|
+
* 세션 디렉토리 경로 반환
|
|
17
|
+
*/
|
|
18
|
+
export declare function getSessionsDir(): string;
|
|
19
|
+
/**
|
|
20
|
+
* 로그 디렉토리 경로 반환
|
|
21
|
+
*/
|
|
22
|
+
export declare function getLogsDir(): string;
|
|
23
|
+
/**
|
|
24
|
+
* 현재 템플릿 파일 경로 반환
|
|
25
|
+
*/
|
|
26
|
+
export declare function getCurrentTemplateFile(): string;
|
|
27
|
+
/**
|
|
28
|
+
* 현재 세팅된 템플릿 반환
|
|
29
|
+
*/
|
|
30
|
+
export declare function getCurrentTemplate(): string | null;
|
|
31
|
+
/**
|
|
32
|
+
* 세션 ID 생성
|
|
33
|
+
*/
|
|
34
|
+
export declare function generateSessionId(): string;
|
|
35
|
+
/**
|
|
36
|
+
* 타임스탬프 생성
|
|
37
|
+
*/
|
|
38
|
+
export declare function getTimestamp(): string;
|
|
39
|
+
/**
|
|
40
|
+
* 사용 가능한 템플릿 목록
|
|
41
|
+
*/
|
|
42
|
+
export declare function getAvailableTemplates(): string[];
|
|
43
|
+
/**
|
|
44
|
+
* 사용 가능한 역할 목록
|
|
45
|
+
*/
|
|
46
|
+
export declare function getAvailableRoles(): string[];
|
|
47
|
+
/**
|
|
48
|
+
* 사용 가능한 도구 목록
|
|
49
|
+
*/
|
|
50
|
+
export declare function getAvailableTools(): string[];
|
|
51
|
+
/**
|
|
52
|
+
* 워크스페이스가 세팅되어 있는지 확인
|
|
53
|
+
*/
|
|
54
|
+
export declare function isWorkspaceSetup(): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* 디렉토리 복사 (머지)
|
|
57
|
+
* 텍스트 파일(.md, .json)은 줄바꿈을 LF로 통일
|
|
58
|
+
*/
|
|
59
|
+
export declare function copyDirMerge(src: string, dest: string): void;
|
|
60
|
+
/**
|
|
61
|
+
* 버전 파일 경로 반환
|
|
62
|
+
*/
|
|
63
|
+
export declare function getVersionFile(): string;
|
|
64
|
+
/**
|
|
65
|
+
* 백업 디렉토리 경로 반환
|
|
66
|
+
*/
|
|
67
|
+
export declare function getBackupDir(): string;
|
|
68
|
+
/**
|
|
69
|
+
* 패키지 버전 반환
|
|
70
|
+
*/
|
|
71
|
+
export declare function getPackageVersion(): string;
|
|
72
|
+
/**
|
|
73
|
+
* 작업공간 버전 정보 읽기
|
|
74
|
+
*/
|
|
75
|
+
export declare function readVersion(): VersionInfo | null;
|
|
76
|
+
/**
|
|
77
|
+
* 작업공간 버전 정보 쓰기
|
|
78
|
+
*/
|
|
79
|
+
export declare function writeVersion(versionInfo: VersionInfo): void;
|
|
80
|
+
/**
|
|
81
|
+
* 버전 비교 (semver 형식)
|
|
82
|
+
* @returns a > b이면 1, a < b이면 -1, 같으면 0
|
|
83
|
+
*/
|
|
84
|
+
export declare function compareVersions(a: string, b: string): number;
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import fs from 'fs-extra';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
import { createRequire } from 'node:module';
|
|
5
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = path.dirname(__filename);
|
|
7
|
+
const require = createRequire(import.meta.url);
|
|
8
|
+
/**
|
|
9
|
+
* 줄바꿈 문자를 LF로 통일
|
|
10
|
+
* Windows CRLF(\r\n) → LF(\n)
|
|
11
|
+
*/
|
|
12
|
+
export function normalizeLineEndings(content) {
|
|
13
|
+
return content.replace(/\r\n/g, '\n');
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* 패키지 루트 디렉토리 반환
|
|
17
|
+
*/
|
|
18
|
+
export function getPackageRoot() {
|
|
19
|
+
return path.resolve(__dirname, '../../..');
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 작업 디렉토리 (ai-dev-team) 경로 반환
|
|
23
|
+
*/
|
|
24
|
+
export function getWorkspaceDir() {
|
|
25
|
+
return path.join(process.cwd(), 'ai-dev-team');
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 세션 디렉토리 경로 반환
|
|
29
|
+
*/
|
|
30
|
+
export function getSessionsDir() {
|
|
31
|
+
return path.join(getWorkspaceDir(), '.sessions');
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 로그 디렉토리 경로 반환
|
|
35
|
+
*/
|
|
36
|
+
export function getLogsDir() {
|
|
37
|
+
return path.join(getWorkspaceDir(), '.sessions', 'logs');
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* 현재 템플릿 파일 경로 반환
|
|
41
|
+
*/
|
|
42
|
+
export function getCurrentTemplateFile() {
|
|
43
|
+
return path.join(getWorkspaceDir(), '.current-template');
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* 현재 세팅된 템플릿 반환
|
|
47
|
+
*/
|
|
48
|
+
export function getCurrentTemplate() {
|
|
49
|
+
const templateFile = getCurrentTemplateFile();
|
|
50
|
+
if (fs.existsSync(templateFile)) {
|
|
51
|
+
return fs.readFileSync(templateFile, 'utf-8').trim();
|
|
52
|
+
}
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* 세션 ID 생성
|
|
57
|
+
*/
|
|
58
|
+
export function generateSessionId() {
|
|
59
|
+
const now = new Date();
|
|
60
|
+
const date = now.toISOString().slice(0, 10).replace(/-/g, '');
|
|
61
|
+
const time = now.toTimeString().slice(0, 8).replace(/:/g, '');
|
|
62
|
+
const random = Math.random().toString(16).slice(2, 10);
|
|
63
|
+
return `${date}-${time}-${random}`;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* 타임스탬프 생성
|
|
67
|
+
*/
|
|
68
|
+
export function getTimestamp() {
|
|
69
|
+
return new Date().toISOString().replace('T', ' ').slice(0, 19);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* 사용 가능한 템플릿 목록
|
|
73
|
+
*/
|
|
74
|
+
export function getAvailableTemplates() {
|
|
75
|
+
const templatesDir = path.join(getPackageRoot(), 'templates');
|
|
76
|
+
if (!fs.existsSync(templatesDir)) {
|
|
77
|
+
return [];
|
|
78
|
+
}
|
|
79
|
+
return fs.readdirSync(templatesDir).filter((f) => {
|
|
80
|
+
return fs.statSync(path.join(templatesDir, f)).isDirectory();
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* 사용 가능한 역할 목록
|
|
85
|
+
*/
|
|
86
|
+
export function getAvailableRoles() {
|
|
87
|
+
const workspaceRoles = path.join(getWorkspaceDir(), 'roles');
|
|
88
|
+
if (!fs.existsSync(workspaceRoles)) {
|
|
89
|
+
return [];
|
|
90
|
+
}
|
|
91
|
+
return fs
|
|
92
|
+
.readdirSync(workspaceRoles)
|
|
93
|
+
.filter((f) => f.endsWith('.md'))
|
|
94
|
+
.map((f) => f.replace('.md', ''));
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* 사용 가능한 도구 목록
|
|
98
|
+
*/
|
|
99
|
+
export function getAvailableTools() {
|
|
100
|
+
return ['claude', 'codex', 'gemini', 'copilot'];
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* 워크스페이스가 세팅되어 있는지 확인
|
|
104
|
+
*/
|
|
105
|
+
export function isWorkspaceSetup() {
|
|
106
|
+
const workspace = getWorkspaceDir();
|
|
107
|
+
const rolesDir = path.join(workspace, 'roles');
|
|
108
|
+
return (fs.existsSync(rolesDir) &&
|
|
109
|
+
fs.readdirSync(rolesDir).filter((f) => f.endsWith('.md')).length > 0);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* 디렉토리 복사 (머지)
|
|
113
|
+
* 텍스트 파일(.md, .json)은 줄바꿈을 LF로 통일
|
|
114
|
+
*/
|
|
115
|
+
export function copyDirMerge(src, dest) {
|
|
116
|
+
if (!fs.existsSync(src))
|
|
117
|
+
return;
|
|
118
|
+
fs.ensureDirSync(dest);
|
|
119
|
+
const items = fs.readdirSync(src);
|
|
120
|
+
// 줄바꿈 정규화가 필요한 확장자
|
|
121
|
+
const textExtensions = ['.md', '.json', '.txt'];
|
|
122
|
+
for (const item of items) {
|
|
123
|
+
const srcPath = path.join(src, item);
|
|
124
|
+
const destPath = path.join(dest, item);
|
|
125
|
+
const stat = fs.statSync(srcPath);
|
|
126
|
+
if (stat.isDirectory()) {
|
|
127
|
+
copyDirMerge(srcPath, destPath);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
const ext = path.extname(item).toLowerCase();
|
|
131
|
+
if (textExtensions.includes(ext)) {
|
|
132
|
+
// 텍스트 파일: 줄바꿈 정규화 후 복사
|
|
133
|
+
const content = fs.readFileSync(srcPath, 'utf-8');
|
|
134
|
+
fs.writeFileSync(destPath, normalizeLineEndings(content), 'utf-8');
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
// 바이너리 파일: 그대로 복사
|
|
138
|
+
fs.copyFileSync(srcPath, destPath);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* 버전 파일 경로 반환
|
|
145
|
+
*/
|
|
146
|
+
export function getVersionFile() {
|
|
147
|
+
return path.join(getWorkspaceDir(), '.ada-version');
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* 백업 디렉토리 경로 반환
|
|
151
|
+
*/
|
|
152
|
+
export function getBackupDir() {
|
|
153
|
+
return path.join(getWorkspaceDir(), '.backups');
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* 패키지 버전 반환
|
|
157
|
+
*/
|
|
158
|
+
export function getPackageVersion() {
|
|
159
|
+
const packageJson = require(path.join(getPackageRoot(), 'package.json'));
|
|
160
|
+
return packageJson.version;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* 작업공간 버전 정보 읽기
|
|
164
|
+
*/
|
|
165
|
+
export function readVersion() {
|
|
166
|
+
const versionFile = getVersionFile();
|
|
167
|
+
if (!fs.existsSync(versionFile)) {
|
|
168
|
+
return null;
|
|
169
|
+
}
|
|
170
|
+
try {
|
|
171
|
+
const content = fs.readFileSync(versionFile, 'utf-8');
|
|
172
|
+
return JSON.parse(content);
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* 작업공간 버전 정보 쓰기
|
|
180
|
+
*/
|
|
181
|
+
export function writeVersion(versionInfo) {
|
|
182
|
+
const versionFile = getVersionFile();
|
|
183
|
+
fs.writeFileSync(versionFile, JSON.stringify(versionInfo, null, 2));
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* 버전 비교 (semver 형식)
|
|
187
|
+
* @returns a > b이면 1, a < b이면 -1, 같으면 0
|
|
188
|
+
*/
|
|
189
|
+
export function compareVersions(a, b) {
|
|
190
|
+
const aParts = a.split('.').map(Number);
|
|
191
|
+
const bParts = b.split('.').map(Number);
|
|
192
|
+
for (let i = 0; i < 3; i++) {
|
|
193
|
+
const aVal = aParts[i] || 0;
|
|
194
|
+
const bVal = bParts[i] || 0;
|
|
195
|
+
if (aVal > bVal)
|
|
196
|
+
return 1;
|
|
197
|
+
if (aVal < bVal)
|
|
198
|
+
return -1;
|
|
199
|
+
}
|
|
200
|
+
return 0;
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/utils/files.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 콘텐츠 포함 레벨
|
|
3
|
+
* - full: 전체 내용 포함
|
|
4
|
+
* - summary: 핵심 섹션만 포함
|
|
5
|
+
* - list: 파일명/제목만 나열
|
|
6
|
+
* - none: 포함하지 않음
|
|
7
|
+
*/
|
|
8
|
+
type ContentLevel = 'full' | 'summary' | 'list' | 'none';
|
|
9
|
+
/**
|
|
10
|
+
* Task 상태별 콘텐츠 레벨
|
|
11
|
+
*/
|
|
12
|
+
interface TaskContentLevels {
|
|
13
|
+
inDev: ContentLevel;
|
|
14
|
+
backlog: ContentLevel;
|
|
15
|
+
done: ContentLevel;
|
|
16
|
+
reject: ContentLevel;
|
|
17
|
+
inReview: ContentLevel;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 역할별 콘텐츠 설정
|
|
21
|
+
*/
|
|
22
|
+
interface RoleContentConfig {
|
|
23
|
+
plan: ContentLevel;
|
|
24
|
+
project: ContentLevel;
|
|
25
|
+
decision: ContentLevel;
|
|
26
|
+
tasks: TaskContentLevels;
|
|
27
|
+
interface: ContentLevel;
|
|
28
|
+
rules: ContentLevel;
|
|
29
|
+
skills: ContentLevel;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* 최적화된 시스템 프롬프트 생성
|
|
33
|
+
*/
|
|
34
|
+
export declare function buildOptimizedSystemPrompt(workspace: string, role: string, roleContent: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* 콘텐츠 레벨 가져오기 (외부 사용)
|
|
37
|
+
*/
|
|
38
|
+
export declare function getRoleContentConfig(role: string): RoleContentConfig;
|
|
39
|
+
export {};
|