codesyncer 1.0.0
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/LICENSE +31 -0
- package/README.ko.md +417 -0
- package/README.md +417 -0
- package/bin/codesyncer.js +3 -0
- package/dist/commands/add-repo.d.ts +3 -0
- package/dist/commands/add-repo.d.ts.map +1 -0
- package/dist/commands/add-repo.js +145 -0
- package/dist/commands/add-repo.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +489 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/update.d.ts +3 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +123 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/constants/keywords.d.ts +23 -0
- package/dist/constants/keywords.d.ts.map +1 -0
- package/dist/constants/keywords.js +133 -0
- package/dist/constants/keywords.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +52 -0
- package/dist/index.js.map +1 -0
- package/dist/templates/en/architecture.md +147 -0
- package/dist/templates/en/claude.md +267 -0
- package/dist/templates/en/comment_guide.md +324 -0
- package/dist/templates/en/decisions.md +227 -0
- package/dist/templates/en/master.md +179 -0
- package/dist/templates/ko/architecture.md +147 -0
- package/dist/templates/ko/claude.md +267 -0
- package/dist/templates/ko/comment_guide.md +324 -0
- package/dist/templates/ko/decisions.md +227 -0
- package/dist/templates/ko/master.md +179 -0
- package/dist/types.d.ts +78 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +16 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/messages.d.ts +129 -0
- package/dist/utils/messages.d.ts.map +1 -0
- package/dist/utils/messages.js +168 -0
- package/dist/utils/messages.js.map +1 -0
- package/dist/utils/scanner.d.ts +11 -0
- package/dist/utils/scanner.d.ts.map +1 -0
- package/dist/utils/scanner.js +311 -0
- package/dist/utils/scanner.js.map +1 -0
- package/dist/utils/template-loader.d.ts +18 -0
- package/dist/utils/template-loader.d.ts.map +1 -0
- package/dist/utils/template-loader.js +496 -0
- package/dist/utils/template-loader.js.map +1 -0
- package/package.json +70 -0
- package/src/templates/en/architecture.md +147 -0
- package/src/templates/en/claude.md +267 -0
- package/src/templates/en/comment_guide.md +324 -0
- package/src/templates/en/decisions.md +227 -0
- package/src/templates/en/master.md +179 -0
- package/src/templates/ko/architecture.md +147 -0
- package/src/templates/ko/claude.md +267 -0
- package/src/templates/ko/comment_guide.md +324 -0
- package/src/templates/ko/decisions.md +227 -0
- package/src/templates/ko/master.md +179 -0
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
export type Language = 'en' | 'ko';
|
|
2
|
+
export type AITool = 'claude';
|
|
3
|
+
export type ProjectType = 'frontend' | 'backend' | 'mobile' | 'fullstack';
|
|
4
|
+
export type SetupMode = 'quick' | 'expert';
|
|
5
|
+
export type KeywordSeverity = 'CRITICAL' | 'IMPORTANT' | 'MINOR';
|
|
6
|
+
export interface InitOptions {
|
|
7
|
+
lang: Language;
|
|
8
|
+
ai: AITool;
|
|
9
|
+
mode?: SetupMode;
|
|
10
|
+
}
|
|
11
|
+
export interface UpdateOptions {
|
|
12
|
+
ai: AITool;
|
|
13
|
+
}
|
|
14
|
+
export interface AddRepoOptions {
|
|
15
|
+
lang: Language;
|
|
16
|
+
ai: AITool;
|
|
17
|
+
}
|
|
18
|
+
export interface ProjectConfig {
|
|
19
|
+
projectName: string;
|
|
20
|
+
githubUsername: string;
|
|
21
|
+
language: Language;
|
|
22
|
+
aiTool: AITool;
|
|
23
|
+
setupMode: SetupMode;
|
|
24
|
+
repositories: RepositoryInfo[];
|
|
25
|
+
keywordConfig?: KeywordConfig;
|
|
26
|
+
}
|
|
27
|
+
export interface RepositoryInfo {
|
|
28
|
+
name: string;
|
|
29
|
+
path: string;
|
|
30
|
+
type: ProjectType;
|
|
31
|
+
description: string;
|
|
32
|
+
techStack?: string[];
|
|
33
|
+
hasCodeSyncer: boolean;
|
|
34
|
+
}
|
|
35
|
+
export interface KeywordCategory {
|
|
36
|
+
name: string;
|
|
37
|
+
nameKo: string;
|
|
38
|
+
severity: KeywordSeverity;
|
|
39
|
+
keywords: string[];
|
|
40
|
+
description: string;
|
|
41
|
+
descriptionKo: string;
|
|
42
|
+
applicableTo: ProjectType[];
|
|
43
|
+
enabled: boolean;
|
|
44
|
+
}
|
|
45
|
+
export interface KeywordConfig {
|
|
46
|
+
categories: KeywordCategory[];
|
|
47
|
+
customKeywords?: {
|
|
48
|
+
keywords: string[];
|
|
49
|
+
severity: KeywordSeverity;
|
|
50
|
+
description: string;
|
|
51
|
+
}[];
|
|
52
|
+
}
|
|
53
|
+
export interface MasterDocConfig {
|
|
54
|
+
projectName: string;
|
|
55
|
+
githubUsername: string;
|
|
56
|
+
language: Language;
|
|
57
|
+
repositories: {
|
|
58
|
+
name: string;
|
|
59
|
+
folder: string;
|
|
60
|
+
role: string;
|
|
61
|
+
vibeSyncPath: string;
|
|
62
|
+
type: ProjectType;
|
|
63
|
+
}[];
|
|
64
|
+
}
|
|
65
|
+
export interface RepoSetupConfig {
|
|
66
|
+
projectName: string;
|
|
67
|
+
type: ProjectType;
|
|
68
|
+
techStack: string[];
|
|
69
|
+
language: Language;
|
|
70
|
+
keywordCategories: KeywordCategory[];
|
|
71
|
+
}
|
|
72
|
+
export declare const TAG_PREFIXES: {
|
|
73
|
+
readonly primary: "codesyncer";
|
|
74
|
+
readonly legacy: "claude";
|
|
75
|
+
};
|
|
76
|
+
export declare const AVAILABLE_TAGS: readonly ["rule", "inference", "decision", "todo", "context"];
|
|
77
|
+
export type TagType = typeof AVAILABLE_TAGS[number];
|
|
78
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;AAEnC,MAAM,MAAM,MAAM,GAAG,QAAQ,CAAC;AAE9B,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE1E,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE3C,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC;AAEjE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE;QACf,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,QAAQ,EAAE,eAAe,CAAC;QAC1B,WAAW,EAAE,MAAM,CAAC;KACrB,EAAE,CAAC;CACL;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,WAAW,CAAC;KACnB,EAAE,CAAC;CACL;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,iBAAiB,EAAE,eAAe,EAAE,CAAC;CACtC;AAGD,eAAO,MAAM,YAAY;;;CAGf,CAAC;AAEX,eAAO,MAAM,cAAc,+DAMjB,CAAC;AAEX,MAAM,MAAM,OAAO,GAAG,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AVAILABLE_TAGS = exports.TAG_PREFIXES = void 0;
|
|
4
|
+
// Tag compatibility: @codesyncer-* is primary, @claude-* for backward compatibility
|
|
5
|
+
exports.TAG_PREFIXES = {
|
|
6
|
+
primary: 'codesyncer',
|
|
7
|
+
legacy: 'claude', // For backward compatibility with existing codebases
|
|
8
|
+
};
|
|
9
|
+
exports.AVAILABLE_TAGS = [
|
|
10
|
+
'rule',
|
|
11
|
+
'inference',
|
|
12
|
+
'decision',
|
|
13
|
+
'todo',
|
|
14
|
+
'context',
|
|
15
|
+
];
|
|
16
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAqFA,oFAAoF;AACvE,QAAA,YAAY,GAAG;IAC1B,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,QAAQ,EAAG,qDAAqD;CAChE,CAAC;AAEE,QAAA,cAAc,GAAG;IAC5B,MAAM;IACN,WAAW;IACX,UAAU;IACV,MAAM;IACN,SAAS;CACD,CAAC"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { Language } from '../types';
|
|
2
|
+
export declare const messages: {
|
|
3
|
+
ko: {
|
|
4
|
+
title: string;
|
|
5
|
+
currentSupport: string;
|
|
6
|
+
selectMode: string;
|
|
7
|
+
quickMode: string;
|
|
8
|
+
quickModeDesc: string;
|
|
9
|
+
expertMode: string;
|
|
10
|
+
expertModeDesc: string;
|
|
11
|
+
quickTitle: string;
|
|
12
|
+
quickDesc: string;
|
|
13
|
+
expertTitle: string;
|
|
14
|
+
expertDesc: string;
|
|
15
|
+
scanning: string;
|
|
16
|
+
foundRepos: (count: number) => string;
|
|
17
|
+
noRepos: string;
|
|
18
|
+
noReposHint: string;
|
|
19
|
+
foundReposTitle: string;
|
|
20
|
+
setupComplete: string;
|
|
21
|
+
setupNew: string;
|
|
22
|
+
selectRepos: string;
|
|
23
|
+
alreadySetup: string;
|
|
24
|
+
selectAtLeastOne: string;
|
|
25
|
+
projectName: string;
|
|
26
|
+
projectNameRequired: string;
|
|
27
|
+
githubUsername: string;
|
|
28
|
+
githubUsernameRequired: string;
|
|
29
|
+
basicSetupComplete: string;
|
|
30
|
+
autoConfiguring: string;
|
|
31
|
+
autoProjectType: string;
|
|
32
|
+
autoTechStack: string;
|
|
33
|
+
autoKeywords: string;
|
|
34
|
+
repoDetailConfig: (name: string) => string;
|
|
35
|
+
description: string;
|
|
36
|
+
projectType: string;
|
|
37
|
+
techStack: string;
|
|
38
|
+
keywordConfigTitle: string;
|
|
39
|
+
keywordConfigDesc: string;
|
|
40
|
+
selectKeywordCategories: string;
|
|
41
|
+
addCustomKeywords: string;
|
|
42
|
+
customKeywords: string;
|
|
43
|
+
customSeverity: string;
|
|
44
|
+
customDescription: string;
|
|
45
|
+
generating: string;
|
|
46
|
+
settingUp: (name: string) => string;
|
|
47
|
+
setupCompleted: (name: string) => string;
|
|
48
|
+
success: string;
|
|
49
|
+
createdStructure: string;
|
|
50
|
+
masterSwitching: string;
|
|
51
|
+
workspaceOverview: string;
|
|
52
|
+
codingRules: string;
|
|
53
|
+
commentGuide: string;
|
|
54
|
+
projectStructure: string;
|
|
55
|
+
decisionLog: string;
|
|
56
|
+
nextSteps: string;
|
|
57
|
+
step1: string;
|
|
58
|
+
step2: (name: string) => string;
|
|
59
|
+
step3: string;
|
|
60
|
+
quickTip: string;
|
|
61
|
+
tagCompatibility: string;
|
|
62
|
+
overwriteWarning: string;
|
|
63
|
+
setupCancelled: string;
|
|
64
|
+
};
|
|
65
|
+
en: {
|
|
66
|
+
title: string;
|
|
67
|
+
currentSupport: string;
|
|
68
|
+
selectMode: string;
|
|
69
|
+
quickMode: string;
|
|
70
|
+
quickModeDesc: string;
|
|
71
|
+
expertMode: string;
|
|
72
|
+
expertModeDesc: string;
|
|
73
|
+
quickTitle: string;
|
|
74
|
+
quickDesc: string;
|
|
75
|
+
expertTitle: string;
|
|
76
|
+
expertDesc: string;
|
|
77
|
+
scanning: string;
|
|
78
|
+
foundRepos: (count: number) => string;
|
|
79
|
+
noRepos: string;
|
|
80
|
+
noReposHint: string;
|
|
81
|
+
foundReposTitle: string;
|
|
82
|
+
setupComplete: string;
|
|
83
|
+
setupNew: string;
|
|
84
|
+
selectRepos: string;
|
|
85
|
+
alreadySetup: string;
|
|
86
|
+
selectAtLeastOne: string;
|
|
87
|
+
projectName: string;
|
|
88
|
+
projectNameRequired: string;
|
|
89
|
+
githubUsername: string;
|
|
90
|
+
githubUsernameRequired: string;
|
|
91
|
+
basicSetupComplete: string;
|
|
92
|
+
autoConfiguring: string;
|
|
93
|
+
autoProjectType: string;
|
|
94
|
+
autoTechStack: string;
|
|
95
|
+
autoKeywords: string;
|
|
96
|
+
repoDetailConfig: (name: string) => string;
|
|
97
|
+
description: string;
|
|
98
|
+
projectType: string;
|
|
99
|
+
techStack: string;
|
|
100
|
+
keywordConfigTitle: string;
|
|
101
|
+
keywordConfigDesc: string;
|
|
102
|
+
selectKeywordCategories: string;
|
|
103
|
+
addCustomKeywords: string;
|
|
104
|
+
customKeywords: string;
|
|
105
|
+
customSeverity: string;
|
|
106
|
+
customDescription: string;
|
|
107
|
+
generating: string;
|
|
108
|
+
settingUp: (name: string) => string;
|
|
109
|
+
setupCompleted: (name: string) => string;
|
|
110
|
+
success: string;
|
|
111
|
+
createdStructure: string;
|
|
112
|
+
masterSwitching: string;
|
|
113
|
+
workspaceOverview: string;
|
|
114
|
+
codingRules: string;
|
|
115
|
+
commentGuide: string;
|
|
116
|
+
projectStructure: string;
|
|
117
|
+
decisionLog: string;
|
|
118
|
+
nextSteps: string;
|
|
119
|
+
step1: string;
|
|
120
|
+
step2: (name: string) => string;
|
|
121
|
+
step3: string;
|
|
122
|
+
quickTip: string;
|
|
123
|
+
tagCompatibility: string;
|
|
124
|
+
overwriteWarning: string;
|
|
125
|
+
setupCancelled: string;
|
|
126
|
+
};
|
|
127
|
+
};
|
|
128
|
+
export declare function msg(lang: Language, key: string, ...args: string[]): string;
|
|
129
|
+
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/utils/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;4BAuBG,MAAM;;;;;;;;;;;;;;;;;;iCA0BD,MAAM;;;;;;;;;;;;0BAgBb,MAAM;+BACD,MAAM;;;;;;;;;;;sBAef,MAAM;;;;;;;;;;;;;;;;;;;;4BAkCA,MAAM;;;;;;;;;;;;;;;;;;iCA0BD,MAAM;;;;;;;;;;;;0BAgBb,MAAM;+BACD,MAAM;;;;;;;;;;;sBAef,MAAM;;;;;;;CAWvB,CAAC;AAEF,wBAAgB,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAQ1E"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.messages = void 0;
|
|
4
|
+
exports.msg = msg;
|
|
5
|
+
exports.messages = {
|
|
6
|
+
ko: {
|
|
7
|
+
// Header
|
|
8
|
+
title: '🎵 CodeSyncer - AI 협업 시스템 설치',
|
|
9
|
+
currentSupport: 'Claude Code만 지원',
|
|
10
|
+
// Setup mode
|
|
11
|
+
selectMode: '설치 모드를 선택하세요:',
|
|
12
|
+
quickMode: '⚡ 퀵 설치',
|
|
13
|
+
quickModeDesc: '레포 선택 + 기본 정보만 (빠른 시작, 나머지 자동 설정)',
|
|
14
|
+
expertMode: '🔧 전문가 설치',
|
|
15
|
+
expertModeDesc: '모든 옵션 세부 설정 (키워드, 기술스택 등)',
|
|
16
|
+
// Quick setup
|
|
17
|
+
quickTitle: '⚡ 퀵 설치 모드',
|
|
18
|
+
quickDesc: '레포 선택과 기본 정보만 입력하세요. 나머지는 자동 설정됩니다.',
|
|
19
|
+
// Expert setup
|
|
20
|
+
expertTitle: '🔧 전문가 설치 모드',
|
|
21
|
+
expertDesc: '모든 옵션을 세부적으로 설정할 수 있습니다.',
|
|
22
|
+
// Common
|
|
23
|
+
scanning: '레포지토리 스캔 중...',
|
|
24
|
+
foundRepos: (count) => `${count}개의 레포지토리 발견`,
|
|
25
|
+
noRepos: '현재 디렉토리에서 레포지토리를 찾을 수 없습니다.',
|
|
26
|
+
noReposHint: '여러 레포지토리가 있는 워크스페이스에서 실행하세요.',
|
|
27
|
+
foundReposTitle: '📁 발견된 레포지토리:',
|
|
28
|
+
setupComplete: '(설정됨)',
|
|
29
|
+
setupNew: '(신규)',
|
|
30
|
+
// Repository selection
|
|
31
|
+
selectRepos: 'CodeSyncer를 설정할 레포지토리 선택:',
|
|
32
|
+
alreadySetup: '이미 설정됨',
|
|
33
|
+
selectAtLeastOne: '최소 하나의 레포지토리를 선택하세요.',
|
|
34
|
+
// Project info
|
|
35
|
+
projectName: '프로젝트명:',
|
|
36
|
+
projectNameRequired: '프로젝트명은 필수입니다',
|
|
37
|
+
githubUsername: 'GitHub 사용자명:',
|
|
38
|
+
githubUsernameRequired: 'GitHub 사용자명은 필수입니다',
|
|
39
|
+
// Quick setup auto messages
|
|
40
|
+
basicSetupComplete: '✓ 기본 설정 완료!',
|
|
41
|
+
autoConfiguring: '🤖 나머지는 자동으로 설정 중...',
|
|
42
|
+
autoProjectType: ' - 프로젝트 타입: 자동 감지',
|
|
43
|
+
autoTechStack: ' - 기술 스택: 타입별 기본값',
|
|
44
|
+
autoKeywords: ' - 의논 키워드: CRITICAL 등급만 활성화',
|
|
45
|
+
// Expert setup
|
|
46
|
+
repoDetailConfig: (name) => `📦 ${name} 상세 설정:`,
|
|
47
|
+
description: '설명/역할:',
|
|
48
|
+
projectType: '프로젝트 타입:',
|
|
49
|
+
techStack: '기술 스택 (쉼표로 구분):',
|
|
50
|
+
// Keywords
|
|
51
|
+
keywordConfigTitle: '🔑 의논 필수 키워드 설정',
|
|
52
|
+
keywordConfigDesc: '특정 키워드 감지 시 AI가 자동으로 작업을 중단하고 사용자와 의논합니다.',
|
|
53
|
+
selectKeywordCategories: '활성화할 키워드 카테고리 선택:',
|
|
54
|
+
addCustomKeywords: '커스텀 키워드를 추가하시겠습니까?',
|
|
55
|
+
customKeywords: '커스텀 키워드 (쉼표로 구분):',
|
|
56
|
+
customSeverity: '중요도:',
|
|
57
|
+
customDescription: '설명:',
|
|
58
|
+
// Generation
|
|
59
|
+
generating: '📝 문서 생성 중...',
|
|
60
|
+
settingUp: (name) => `${name} 설정 중...`,
|
|
61
|
+
setupCompleted: (name) => `${name} 설정 완료`,
|
|
62
|
+
// Success
|
|
63
|
+
success: '✅ CodeSyncer 설정 완료!',
|
|
64
|
+
createdStructure: '📁 생성된 구조:',
|
|
65
|
+
masterSwitching: '(멀티 레포 전환 로직)',
|
|
66
|
+
workspaceOverview: '(워크스페이스 개요)',
|
|
67
|
+
codingRules: '(코딩 규칙)',
|
|
68
|
+
commentGuide: '(주석 가이드)',
|
|
69
|
+
projectStructure: '(프로젝트 구조)',
|
|
70
|
+
decisionLog: '(의논 기록)',
|
|
71
|
+
// Next steps
|
|
72
|
+
nextSteps: '🚀 다음 단계:',
|
|
73
|
+
step1: '이 워크스페이스에서 Claude Code 열기',
|
|
74
|
+
step2: (name) => `Claude에게 말하기: "${name} 멀티 레포 모드 시작"`,
|
|
75
|
+
step3: 'Claude가 자동으로 레포 간 전환합니다',
|
|
76
|
+
// Tips
|
|
77
|
+
quickTip: '💡 팁: 나중에 세부 설정을 변경하려면 각 레포의 .claude/CLAUDE.md를 수정하세요',
|
|
78
|
+
tagCompatibility: '태그 호환성: @codesyncer-* 와 @claude-* 모두 사용 가능',
|
|
79
|
+
// Overwrite
|
|
80
|
+
overwriteWarning: 'CodeSyncer 마스터 설정이 이미 존재합니다. 덮어쓰시겠습니까?',
|
|
81
|
+
setupCancelled: '설정이 취소되었습니다.',
|
|
82
|
+
},
|
|
83
|
+
en: {
|
|
84
|
+
// Header
|
|
85
|
+
title: '🎵 CodeSyncer - AI Collaboration System Setup',
|
|
86
|
+
currentSupport: 'Currently supports: Claude Code only',
|
|
87
|
+
// Setup mode
|
|
88
|
+
selectMode: 'Select installation mode:',
|
|
89
|
+
quickMode: '⚡ Quick Setup',
|
|
90
|
+
quickModeDesc: 'Repository selection + basic info only (fast start, auto-configure the rest)',
|
|
91
|
+
expertMode: '🔧 Expert Setup',
|
|
92
|
+
expertModeDesc: 'Configure all options in detail (keywords, tech stack, etc.)',
|
|
93
|
+
// Quick setup
|
|
94
|
+
quickTitle: '⚡ Quick Setup Mode',
|
|
95
|
+
quickDesc: 'Select repositories and enter basic info. Everything else will be configured automatically.',
|
|
96
|
+
// Expert setup
|
|
97
|
+
expertTitle: '🔧 Expert Setup Mode',
|
|
98
|
+
expertDesc: 'Configure all options in detail.',
|
|
99
|
+
// Common
|
|
100
|
+
scanning: 'Scanning repositories...',
|
|
101
|
+
foundRepos: (count) => `Found ${count} ${count === 1 ? 'repository' : 'repositories'}`,
|
|
102
|
+
noRepos: 'No repositories found in current directory.',
|
|
103
|
+
noReposHint: 'Make sure you run this command in a workspace with multiple repositories.',
|
|
104
|
+
foundReposTitle: '📁 Found repositories:',
|
|
105
|
+
setupComplete: '(configured)',
|
|
106
|
+
setupNew: '(new)',
|
|
107
|
+
// Repository selection
|
|
108
|
+
selectRepos: 'Select repositories to set up CodeSyncer:',
|
|
109
|
+
alreadySetup: 'Already configured',
|
|
110
|
+
selectAtLeastOne: 'Please select at least one repository.',
|
|
111
|
+
// Project info
|
|
112
|
+
projectName: 'Project name:',
|
|
113
|
+
projectNameRequired: 'Project name is required',
|
|
114
|
+
githubUsername: 'GitHub username:',
|
|
115
|
+
githubUsernameRequired: 'GitHub username is required',
|
|
116
|
+
// Quick setup auto messages
|
|
117
|
+
basicSetupComplete: '✓ Basic setup complete!',
|
|
118
|
+
autoConfiguring: '🤖 Auto-configuring the rest...',
|
|
119
|
+
autoProjectType: ' - Project type: Auto-detected',
|
|
120
|
+
autoTechStack: ' - Tech stack: Default for each type',
|
|
121
|
+
autoKeywords: ' - Discussion keywords: CRITICAL level only',
|
|
122
|
+
// Expert setup
|
|
123
|
+
repoDetailConfig: (name) => `📦 Configure ${name} in detail:`,
|
|
124
|
+
description: 'Description/Role:',
|
|
125
|
+
projectType: 'Project type:',
|
|
126
|
+
techStack: 'Tech stack (comma-separated):',
|
|
127
|
+
// Keywords
|
|
128
|
+
keywordConfigTitle: '🔑 Discussion Keyword Configuration',
|
|
129
|
+
keywordConfigDesc: 'When specific keywords are detected, AI will automatically pause and discuss with the user.',
|
|
130
|
+
selectKeywordCategories: 'Select keyword categories to enable:',
|
|
131
|
+
addCustomKeywords: 'Add custom keywords?',
|
|
132
|
+
customKeywords: 'Custom keywords (comma-separated):',
|
|
133
|
+
customSeverity: 'Severity:',
|
|
134
|
+
customDescription: 'Description:',
|
|
135
|
+
// Generation
|
|
136
|
+
generating: '📝 Generating documentation...',
|
|
137
|
+
settingUp: (name) => `Setting up ${name}...`,
|
|
138
|
+
setupCompleted: (name) => `${name} setup completed`,
|
|
139
|
+
// Success
|
|
140
|
+
success: '✅ CodeSyncer setup complete!',
|
|
141
|
+
createdStructure: '📁 Created structure:',
|
|
142
|
+
masterSwitching: '(Multi-repo switching logic)',
|
|
143
|
+
workspaceOverview: '(Workspace overview)',
|
|
144
|
+
codingRules: '(Coding rules)',
|
|
145
|
+
commentGuide: '(Comment guide)',
|
|
146
|
+
projectStructure: '(Project structure)',
|
|
147
|
+
decisionLog: '(Decision log)',
|
|
148
|
+
// Next steps
|
|
149
|
+
nextSteps: '🚀 Next steps:',
|
|
150
|
+
step1: 'Open Claude Code in this workspace',
|
|
151
|
+
step2: (name) => `Tell Claude: "${name} multi-repo mode start"`,
|
|
152
|
+
step3: 'Start coding! Claude will automatically switch between repos',
|
|
153
|
+
// Tips
|
|
154
|
+
quickTip: '💡 Tip: To change detailed settings later, edit .claude/CLAUDE.md in each repository',
|
|
155
|
+
tagCompatibility: 'Tag compatibility: Both @codesyncer-* and @claude-* tags are supported',
|
|
156
|
+
// Overwrite
|
|
157
|
+
overwriteWarning: 'CodeSyncer master setup already exists. Overwrite?',
|
|
158
|
+
setupCancelled: 'Setup cancelled.',
|
|
159
|
+
},
|
|
160
|
+
};
|
|
161
|
+
function msg(lang, key, ...args) {
|
|
162
|
+
const message = exports.messages[lang][key];
|
|
163
|
+
if (typeof message === 'function') {
|
|
164
|
+
return message(...args);
|
|
165
|
+
}
|
|
166
|
+
return message;
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/utils/messages.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { RepositoryInfo } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Scan current directory for potential repository folders
|
|
4
|
+
* Looks for folders that contain package.json, git repos, or common project structures
|
|
5
|
+
*/
|
|
6
|
+
export declare function scanForRepositories(rootPath: string): Promise<RepositoryInfo[]>;
|
|
7
|
+
/**
|
|
8
|
+
* Check if master CodeSyncer setup exists in root
|
|
9
|
+
*/
|
|
10
|
+
export declare function hasMasterSetup(rootPath: string): Promise<boolean>;
|
|
11
|
+
//# sourceMappingURL=scanner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/utils/scanner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAqCrF;AAsOD;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAKvE"}
|