vibe-commander 0.1.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 +21 -0
- package/dist/adapters/cli/commands/context-resolver.d.ts +29 -0
- package/dist/adapters/cli/commands/context-resolver.js +93 -0
- package/dist/adapters/cli/commands/context.d.ts +26 -0
- package/dist/adapters/cli/commands/context.js +39 -0
- package/dist/adapters/cli/commands/git-helpers.d.ts +43 -0
- package/dist/adapters/cli/commands/git-helpers.js +99 -0
- package/dist/adapters/cli/commands/init-helpers.d.ts +30 -0
- package/dist/adapters/cli/commands/init-helpers.js +112 -0
- package/dist/adapters/cli/commands/init-interactive.d.ts +25 -0
- package/dist/adapters/cli/commands/init-interactive.js +143 -0
- package/dist/adapters/cli/commands/init.d.ts +25 -0
- package/dist/adapters/cli/commands/init.js +73 -0
- package/dist/adapters/cli/commands/io-helpers.d.ts +45 -0
- package/dist/adapters/cli/commands/io-helpers.js +144 -0
- package/dist/adapters/cli/commands/list-units.d.ts +39 -0
- package/dist/adapters/cli/commands/list-units.js +92 -0
- package/dist/adapters/cli/commands/prompt-helpers.d.ts +36 -0
- package/dist/adapters/cli/commands/prompt-helpers.js +113 -0
- package/dist/adapters/cli/commands/set-unit.d.ts +44 -0
- package/dist/adapters/cli/commands/set-unit.js +90 -0
- package/dist/adapters/cli/commands/skill-install.d.ts +31 -0
- package/dist/adapters/cli/commands/skill-install.js +85 -0
- package/dist/adapters/cli/commands/state-helpers.d.ts +28 -0
- package/dist/adapters/cli/commands/state-helpers.js +55 -0
- package/dist/adapters/cli/commands/update-commit.d.ts +42 -0
- package/dist/adapters/cli/commands/update-commit.js +180 -0
- package/dist/adapters/cli/commands/validate.d.ts +40 -0
- package/dist/adapters/cli/commands/validate.js +219 -0
- package/dist/adapters/cli/formatters-list.d.ts +36 -0
- package/dist/adapters/cli/formatters-list.js +106 -0
- package/dist/adapters/cli/formatters-unit.d.ts +44 -0
- package/dist/adapters/cli/formatters-unit.js +287 -0
- package/dist/adapters/cli/formatters.d.ts +2 -0
- package/dist/adapters/cli/formatters.js +3 -0
- package/dist/adapters/cli/index.d.ts +17 -0
- package/dist/adapters/cli/index.js +60 -0
- package/dist/adapters/cli/output.d.ts +58 -0
- package/dist/adapters/cli/output.js +159 -0
- package/dist/adapters/cli/router.d.ts +99 -0
- package/dist/adapters/cli/router.js +419 -0
- package/dist/adapters/cli/scanner.d.ts +19 -0
- package/dist/adapters/cli/scanner.js +227 -0
- package/dist/adapters/pipe/stdin-reader.d.ts +23 -0
- package/dist/adapters/pipe/stdin-reader.js +56 -0
- package/dist/config/loader.d.ts +27 -0
- package/dist/config/loader.js +84 -0
- package/dist/config/resolver.d.ts +71 -0
- package/dist/config/resolver.js +124 -0
- package/dist/config/schema.d.ts +205 -0
- package/dist/config/schema.js +186 -0
- package/dist/core/parsers/backlog-parser.d.ts +25 -0
- package/dist/core/parsers/backlog-parser.js +255 -0
- package/dist/core/parsers/dep-line-parser.d.ts +36 -0
- package/dist/core/parsers/dep-line-parser.js +176 -0
- package/dist/core/parsers/dependency-extractor.d.ts +64 -0
- package/dist/core/parsers/dependency-extractor.js +193 -0
- package/dist/core/parsers/index.d.ts +20 -0
- package/dist/core/parsers/index.js +20 -0
- package/dist/core/parsers/md-utils.d.ts +81 -0
- package/dist/core/parsers/md-utils.js +144 -0
- package/dist/core/parsers/metadata-parser.d.ts +49 -0
- package/dist/core/parsers/metadata-parser.js +133 -0
- package/dist/core/parsers/pairing-question-extractor.d.ts +42 -0
- package/dist/core/parsers/pairing-question-extractor.js +146 -0
- package/dist/core/parsers/plan-parser-helpers.d.ts +61 -0
- package/dist/core/parsers/plan-parser-helpers.js +90 -0
- package/dist/core/parsers/plan-parser.d.ts +55 -0
- package/dist/core/parsers/plan-parser.js +69 -0
- package/dist/core/parsers/title-extractor.d.ts +36 -0
- package/dist/core/parsers/title-extractor.js +101 -0
- package/dist/core/renderers/index.d.ts +15 -0
- package/dist/core/renderers/index.js +18 -0
- package/dist/core/renderers/interpolate.d.ts +92 -0
- package/dist/core/renderers/interpolate.js +117 -0
- package/dist/core/renderers/marker-utils.d.ts +60 -0
- package/dist/core/renderers/marker-utils.js +85 -0
- package/dist/core/renderers/section-renderer.d.ts +31 -0
- package/dist/core/renderers/section-renderer.js +171 -0
- package/dist/core/renderers/section-updater.d.ts +72 -0
- package/dist/core/renderers/section-updater.js +175 -0
- package/dist/core/renderers/template-engine.d.ts +69 -0
- package/dist/core/renderers/template-engine.js +92 -0
- package/dist/core/renderers/updater-helpers.d.ts +45 -0
- package/dist/core/renderers/updater-helpers.js +83 -0
- package/dist/core/resolvers/commit-filter.d.ts +84 -0
- package/dist/core/resolvers/commit-filter.js +95 -0
- package/dist/core/resolvers/config-generator.d.ts +32 -0
- package/dist/core/resolvers/config-generator.js +112 -0
- package/dist/core/resolvers/config-merger.d.ts +26 -0
- package/dist/core/resolvers/config-merger.js +89 -0
- package/dist/core/resolvers/config-validator.d.ts +42 -0
- package/dist/core/resolvers/config-validator.js +61 -0
- package/dist/core/resolvers/dep-commit-resolver.d.ts +63 -0
- package/dist/core/resolvers/dep-commit-resolver.js +158 -0
- package/dist/core/resolvers/dep-doc-resolver.d.ts +70 -0
- package/dist/core/resolvers/dep-doc-resolver.js +84 -0
- package/dist/core/resolvers/index.d.ts +15 -0
- package/dist/core/resolvers/index.js +12 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +8 -0
- package/dist/types/config.d.ts +10 -0
- package/dist/types/config.js +10 -0
- package/dist/types/context.d.ts +55 -0
- package/dist/types/context.js +10 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/index.js +10 -0
- package/dist/types/init.d.ts +56 -0
- package/dist/types/init.js +10 -0
- package/dist/types/tool-result.d.ts +75 -0
- package/dist/types/tool-result.js +40 -0
- package/dist/types/unit.d.ts +118 -0
- package/dist/types/unit.js +10 -0
- package/package.json +71 -0
- package/skills/claude/SKILL.md +375 -0
- package/skills/common/cli-reference.md +251 -0
- package/skills/cursor/SKILL.md +353 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 의존성 문서 경로 해석기 — Layer 1 순수 함수
|
|
3
|
+
*
|
|
4
|
+
* 의존 유닛 ID 목록과 문서 탐색 설정을 받아,
|
|
5
|
+
* 각 유닛별·역할별 **문서 경로 패턴**을 생성한다.
|
|
6
|
+
*
|
|
7
|
+
* 실제 파일 존재 확인은 수행하지 않음 — Adapter(Layer 3)에서 처리.
|
|
8
|
+
* glob 패턴이면 와일드카드 포함된 패턴 문자열을 반환하고,
|
|
9
|
+
* 비-glob이면 정확한 상대 경로를 반환한다.
|
|
10
|
+
*
|
|
11
|
+
* PRD §8.2 문서 탐색 (docDiscovery):
|
|
12
|
+
* pattern에서 사용 가능한 변수: {{unitId}}, {{shortId}}, {{bareId}}, {{slug}}
|
|
13
|
+
* glob: true이면 와일드카드(*) 포함 패턴
|
|
14
|
+
*
|
|
15
|
+
* @module
|
|
16
|
+
*/
|
|
17
|
+
import type { DocLocationEntry, ToolResult } from '../../types/index.js';
|
|
18
|
+
/**
|
|
19
|
+
* 의존 유닛별 문서 위치 패턴 모음
|
|
20
|
+
*
|
|
21
|
+
* resolveDepDocs의 출력 단위. 한 의존 유닛에 대한
|
|
22
|
+
* 모든 역할(plan, result, runbook 등)의 경로 패턴을 포함.
|
|
23
|
+
*/
|
|
24
|
+
export interface DepDocPattern {
|
|
25
|
+
/** 의존 유닛 ID */
|
|
26
|
+
unitId: string;
|
|
27
|
+
/** 역할별 문서 위치 패턴 목록 */
|
|
28
|
+
locations: DocLocationEntry[];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 의존 유닛별 문서 경로 패턴을 생성한다
|
|
32
|
+
*
|
|
33
|
+
* 각 depId에 대해 docRoots의 모든 역할을 순회하고,
|
|
34
|
+
* docDiscovery 패턴에 템플릿 변수를 보간하여 경로 패턴을 생성한다.
|
|
35
|
+
*
|
|
36
|
+
* **순수 함수**: 파일시스템 접근 없이 문자열 연산만 수행.
|
|
37
|
+
* 실제 파일 존재 확인은 Adapter(Layer 3)의 책임.
|
|
38
|
+
*
|
|
39
|
+
* docDiscovery에 정의되지 않은 역할(docRoots에만 있는 역할)은
|
|
40
|
+
* 기본 패턴 `{{unitId}}.md`로 처리한다.
|
|
41
|
+
*
|
|
42
|
+
* @param depIds - 의존 유닛 ID 목록
|
|
43
|
+
* @param docRoots - 역할별 문서 루트 디렉토리 (예: { plan: "vibe/unit-plans" })
|
|
44
|
+
* @param docDiscovery - 역할별 파일 탐색 규칙 (예: { plan: { pattern: "{{unitId}}.md" } })
|
|
45
|
+
* @returns 의존 유닛별 문서 위치 패턴 목록을 포함한 ToolResult
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* const depIds = ['U-005[Mvp]'];
|
|
50
|
+
* const docRoots = { plan: 'vibe/unit-plans', result: 'vibe/unit-results' };
|
|
51
|
+
* const docDiscovery = {
|
|
52
|
+
* plan: { pattern: '{{unitId}}.md', glob: false },
|
|
53
|
+
* result: { pattern: '{{unitId}}.md', glob: false },
|
|
54
|
+
* };
|
|
55
|
+
* const result = resolveDepDocs(depIds, docRoots, docDiscovery);
|
|
56
|
+
* if (result.success) {
|
|
57
|
+
* // result.data[0].locations →
|
|
58
|
+
* // [{ role: 'plan', dir: 'vibe/unit-plans', filePattern: 'U-005[Mvp].md',
|
|
59
|
+
* // fullPattern: 'vibe/unit-plans/U-005[Mvp].md', glob: false },
|
|
60
|
+
* // { role: 'result', dir: 'vibe/unit-results', filePattern: 'U-005[Mvp].md',
|
|
61
|
+
* // fullPattern: 'vibe/unit-results/U-005[Mvp].md', glob: false }]
|
|
62
|
+
* // }
|
|
63
|
+
* }
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export declare function resolveDepDocs(depIds: string[], docRoots: Record<string, string>, docDiscovery: Record<string, {
|
|
67
|
+
pattern: string;
|
|
68
|
+
glob?: boolean;
|
|
69
|
+
}>): ToolResult<DepDocPattern[]>;
|
|
70
|
+
//# sourceMappingURL=dep-doc-resolver.d.ts.map
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 의존성 문서 경로 해석기 — Layer 1 순수 함수
|
|
3
|
+
*
|
|
4
|
+
* 의존 유닛 ID 목록과 문서 탐색 설정을 받아,
|
|
5
|
+
* 각 유닛별·역할별 **문서 경로 패턴**을 생성한다.
|
|
6
|
+
*
|
|
7
|
+
* 실제 파일 존재 확인은 수행하지 않음 — Adapter(Layer 3)에서 처리.
|
|
8
|
+
* glob 패턴이면 와일드카드 포함된 패턴 문자열을 반환하고,
|
|
9
|
+
* 비-glob이면 정확한 상대 경로를 반환한다.
|
|
10
|
+
*
|
|
11
|
+
* PRD §8.2 문서 탐색 (docDiscovery):
|
|
12
|
+
* pattern에서 사용 가능한 변수: {{unitId}}, {{shortId}}, {{bareId}}, {{slug}}
|
|
13
|
+
* glob: true이면 와일드카드(*) 포함 패턴
|
|
14
|
+
*
|
|
15
|
+
* @module
|
|
16
|
+
*/
|
|
17
|
+
import { ok } from '../../types/index.js';
|
|
18
|
+
import { buildTemplateVars, interpolatePattern } from '../renderers/interpolate.js';
|
|
19
|
+
/**
|
|
20
|
+
* 의존 유닛별 문서 경로 패턴을 생성한다
|
|
21
|
+
*
|
|
22
|
+
* 각 depId에 대해 docRoots의 모든 역할을 순회하고,
|
|
23
|
+
* docDiscovery 패턴에 템플릿 변수를 보간하여 경로 패턴을 생성한다.
|
|
24
|
+
*
|
|
25
|
+
* **순수 함수**: 파일시스템 접근 없이 문자열 연산만 수행.
|
|
26
|
+
* 실제 파일 존재 확인은 Adapter(Layer 3)의 책임.
|
|
27
|
+
*
|
|
28
|
+
* docDiscovery에 정의되지 않은 역할(docRoots에만 있는 역할)은
|
|
29
|
+
* 기본 패턴 `{{unitId}}.md`로 처리한다.
|
|
30
|
+
*
|
|
31
|
+
* @param depIds - 의존 유닛 ID 목록
|
|
32
|
+
* @param docRoots - 역할별 문서 루트 디렉토리 (예: { plan: "vibe/unit-plans" })
|
|
33
|
+
* @param docDiscovery - 역할별 파일 탐색 규칙 (예: { plan: { pattern: "{{unitId}}.md" } })
|
|
34
|
+
* @returns 의존 유닛별 문서 위치 패턴 목록을 포함한 ToolResult
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* const depIds = ['U-005[Mvp]'];
|
|
39
|
+
* const docRoots = { plan: 'vibe/unit-plans', result: 'vibe/unit-results' };
|
|
40
|
+
* const docDiscovery = {
|
|
41
|
+
* plan: { pattern: '{{unitId}}.md', glob: false },
|
|
42
|
+
* result: { pattern: '{{unitId}}.md', glob: false },
|
|
43
|
+
* };
|
|
44
|
+
* const result = resolveDepDocs(depIds, docRoots, docDiscovery);
|
|
45
|
+
* if (result.success) {
|
|
46
|
+
* // result.data[0].locations →
|
|
47
|
+
* // [{ role: 'plan', dir: 'vibe/unit-plans', filePattern: 'U-005[Mvp].md',
|
|
48
|
+
* // fullPattern: 'vibe/unit-plans/U-005[Mvp].md', glob: false },
|
|
49
|
+
* // { role: 'result', dir: 'vibe/unit-results', filePattern: 'U-005[Mvp].md',
|
|
50
|
+
* // fullPattern: 'vibe/unit-results/U-005[Mvp].md', glob: false }]
|
|
51
|
+
* // }
|
|
52
|
+
* }
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export function resolveDepDocs(depIds, docRoots, docDiscovery) {
|
|
56
|
+
const results = [];
|
|
57
|
+
for (const depId of depIds) {
|
|
58
|
+
const vars = buildTemplateVars(depId);
|
|
59
|
+
const locations = [];
|
|
60
|
+
// docRoots의 모든 역할을 순회
|
|
61
|
+
for (const role of Object.keys(docRoots)) {
|
|
62
|
+
const dir = docRoots[role];
|
|
63
|
+
if (dir === undefined)
|
|
64
|
+
continue;
|
|
65
|
+
// docDiscovery에서 해당 역할의 규칙 조회 (없으면 기본 패턴)
|
|
66
|
+
const rule = docDiscovery[role];
|
|
67
|
+
const pattern = rule?.pattern ?? '{{unitId}}.md';
|
|
68
|
+
const isGlob = rule?.glob ?? false;
|
|
69
|
+
// 템플릿 변수 보간
|
|
70
|
+
const filePattern = interpolatePattern(pattern, vars);
|
|
71
|
+
const fullPattern = `${dir}/${filePattern}`;
|
|
72
|
+
locations.push({
|
|
73
|
+
role,
|
|
74
|
+
dir,
|
|
75
|
+
filePattern,
|
|
76
|
+
fullPattern,
|
|
77
|
+
glob: isGlob,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
results.push({ unitId: depId, locations });
|
|
81
|
+
}
|
|
82
|
+
return ok(results);
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=dep-doc-resolver.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core 해석기 — 공개 API barrel export
|
|
3
|
+
*
|
|
4
|
+
* 의존 유닛 문서/커밋 해석 함수의 진입점.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
export { resolveDepDocs } from './dep-doc-resolver.js';
|
|
9
|
+
export type { DepDocPattern } from './dep-doc-resolver.js';
|
|
10
|
+
export { findDepCommits } from './dep-commit-resolver.js';
|
|
11
|
+
export type { CommitEntry } from './dep-commit-resolver.js';
|
|
12
|
+
export { filterCommitsByChangedFiles, matchesGlobPattern } from './commit-filter.js';
|
|
13
|
+
export type { CommitWithFiles, CommitFilterOptions } from './commit-filter.js';
|
|
14
|
+
export { mergeConfigs, isPlainObject } from './config-merger.js';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core 해석기 — 공개 API barrel export
|
|
3
|
+
*
|
|
4
|
+
* 의존 유닛 문서/커밋 해석 함수의 진입점.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
export { resolveDepDocs } from './dep-doc-resolver.js';
|
|
9
|
+
export { findDepCommits } from './dep-commit-resolver.js';
|
|
10
|
+
export { filterCommitsByChangedFiles, matchesGlobPattern } from './commit-filter.js';
|
|
11
|
+
export { mergeConfigs, isPlainObject } from './config-merger.js';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 설정 관련 타입 정의
|
|
3
|
+
*
|
|
4
|
+
* Zod 4 스키마(src/config/schema.ts)에서 추론된 타입의 re-export 허브.
|
|
5
|
+
* 런타임 검증과 컴파일 타임 타입이 단일 소스(Zod 스키마)에서 도출됩니다.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
export type { InferredPathsConfig as PathsConfig, InferredUnitTypeConfig as UnitTypeConfig, InferredDocDiscoveryRule as DocDiscoveryRule, InferredDocDiscoveryConfig as DocDiscoveryConfig, InferredMetadataTableConfig as MetadataTableConfig, InferredPlanParsingConfig as PlanParsingConfig, InferredStatusMapConfig as StatusMapConfig, InferredBacklogParsingConfig as BacklogParsingConfig, InferredCommitSearchConfig as CommitSearchConfig, InferredCommandSectionsConfig as CommandSectionsConfig, InferredProjectConfig as ProjectConfig, } from '../config/schema.js';
|
|
10
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 컨텍스트 관련 타입 정의
|
|
3
|
+
*
|
|
4
|
+
* 유닛 실행 컨텍스트 및 백로그 항목을 표현하는 타입.
|
|
5
|
+
* CLI의 set-unit, list-units 등 커맨드 출력에 사용.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import type { DepDocs, PairingAnswer, PairingQuestion, UnitMeta } from './unit.js';
|
|
10
|
+
/**
|
|
11
|
+
* 커맨드 컨텍스트
|
|
12
|
+
*
|
|
13
|
+
* 하나의 유닛에 대한 전체 컨텍스트 정보.
|
|
14
|
+
* set-unit 실행 시 수집된 모든 정보를 담는 최상위 구조체.
|
|
15
|
+
* 이 데이터를 기반으로 커맨드 파일 섹션이 렌더링됨.
|
|
16
|
+
*/
|
|
17
|
+
export interface CommandContext {
|
|
18
|
+
/** 유닛 메타데이터 (계획서에서 추출) */
|
|
19
|
+
unit: UnitMeta;
|
|
20
|
+
/** 의존 유닛별 문서 탐색 결과 */
|
|
21
|
+
depDocs: DepDocs[];
|
|
22
|
+
/** 의존 유닛 관련 커밋 SHA 목록 */
|
|
23
|
+
depCommits: string[];
|
|
24
|
+
/** 페어링 질문 목록 (미결정 항목 포함) */
|
|
25
|
+
pairingQuestions: PairingQuestion[];
|
|
26
|
+
/** 특별 요청사항 목록 (기본 + 유닛 유형별) */
|
|
27
|
+
specialRequests: string[];
|
|
28
|
+
/** CLI 프롬프트를 통해 수집된 페어링 질문 답변 (파싱 결과와 분리) */
|
|
29
|
+
pairingAnswers?: PairingAnswer[];
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* 백로그 항목 상태
|
|
33
|
+
*
|
|
34
|
+
* 로드맵 백로그에서 유닛의 진행 상태.
|
|
35
|
+
*/
|
|
36
|
+
export type BacklogStatus = 'ready' | 'inProgress' | 'completed' | 'blocked';
|
|
37
|
+
/**
|
|
38
|
+
* 백로그 항목
|
|
39
|
+
*
|
|
40
|
+
* 로드맵/백로그에서 파싱한 개별 유닛 항목.
|
|
41
|
+
* list-units 커맨드의 출력 데이터 구성에 사용.
|
|
42
|
+
*/
|
|
43
|
+
export interface BacklogEntry {
|
|
44
|
+
/** 유닛 ID (예: "U-002[Mvp]") */
|
|
45
|
+
unitId: string;
|
|
46
|
+
/** 유닛 제목 */
|
|
47
|
+
title: string;
|
|
48
|
+
/** 의존 유닛 ID 목록 (예: ["U-001"]) */
|
|
49
|
+
depends: string[];
|
|
50
|
+
/** 현재 상태 */
|
|
51
|
+
status: BacklogStatus;
|
|
52
|
+
/** 계획서 상대 경로 */
|
|
53
|
+
path: string;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vibe-commander 공유 타입 정의
|
|
3
|
+
*
|
|
4
|
+
* 모든 레이어(Core, Config, Adapter)가 참조하는 핵심 타입을 제공합니다.
|
|
5
|
+
* 이 모듈을 통해 프로젝트 전체에서 일관된 타입 시스템을 사용합니다.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
export type { ToolResult, ToolError } from './tool-result.js';
|
|
10
|
+
export { ok, fail } from './tool-result.js';
|
|
11
|
+
export type { UnitMeta, DepInfo, DocEntry, DepDocs, PairingQuestion, PairingAnswer, DocLocationEntry, } from './unit.js';
|
|
12
|
+
export type { ProjectConfig, PathsConfig, UnitTypeConfig, DocDiscoveryRule, DocDiscoveryConfig, MetadataTableConfig, PlanParsingConfig, StatusMapConfig, BacklogParsingConfig, CommitSearchConfig, CommandSectionsConfig, } from './config.js';
|
|
13
|
+
export type { CommandContext, BacklogEntry, BacklogStatus } from './context.js';
|
|
14
|
+
export type { ScanResult, InitAnswers, InitResult, DetectedPattern, DetectedDocRoot, DetectedCommandFile, } from './init.js';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 초기화(init) 관련 타입 정의
|
|
3
|
+
*
|
|
4
|
+
* 프로젝트 스캔 결과(ScanResult) 및 사용자 답변(InitAnswers) 타입을 정의합니다.
|
|
5
|
+
* 이 타입들은 Adapter(Scanner)와 Core(Config Generator) 사이의 인터페이스 역할을 합니다.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
/** 프로젝트 루트 스캔 결과 전체 */
|
|
10
|
+
export interface ScanResult {
|
|
11
|
+
totalMdFiles: number;
|
|
12
|
+
idPatterns: DetectedPattern[];
|
|
13
|
+
docRoots: DetectedDocRoot[];
|
|
14
|
+
commandFiles: DetectedCommandFile[];
|
|
15
|
+
roadmapCandidates: string[];
|
|
16
|
+
suggestedIdPattern: string | null;
|
|
17
|
+
}
|
|
18
|
+
/** 감지된 ID 패턴 정보 */
|
|
19
|
+
export interface DetectedPattern {
|
|
20
|
+
prefix: string;
|
|
21
|
+
regex: string;
|
|
22
|
+
displayLabel: string;
|
|
23
|
+
matchCount: number;
|
|
24
|
+
examples: string[];
|
|
25
|
+
}
|
|
26
|
+
/** 감지된 문서 루트 디렉토리 */
|
|
27
|
+
export interface DetectedDocRoot {
|
|
28
|
+
role: string;
|
|
29
|
+
dirPath: string;
|
|
30
|
+
fileCount: number;
|
|
31
|
+
}
|
|
32
|
+
/** 감지된 커맨드 파일 후보 */
|
|
33
|
+
export interface DetectedCommandFile {
|
|
34
|
+
filePath: string;
|
|
35
|
+
sections: string[];
|
|
36
|
+
hasSeparator: boolean;
|
|
37
|
+
separatorSample: string | null;
|
|
38
|
+
}
|
|
39
|
+
/** 설정 생성을 위한 답변 데이터 */
|
|
40
|
+
export interface InitAnswers {
|
|
41
|
+
commandsPath: string;
|
|
42
|
+
roadmapPath: string | null;
|
|
43
|
+
planDir: string;
|
|
44
|
+
resultDir: string;
|
|
45
|
+
runbookDir: string | null;
|
|
46
|
+
idPattern: string;
|
|
47
|
+
commandSection: string;
|
|
48
|
+
}
|
|
49
|
+
/** 초기화 실행 결과 */
|
|
50
|
+
export interface InitResult {
|
|
51
|
+
configPath: string;
|
|
52
|
+
overwritten: boolean;
|
|
53
|
+
merged: boolean;
|
|
54
|
+
scanResult?: ScanResult;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ToolResult<T> — 도구 실행 결과 타입 및 헬퍼 함수
|
|
3
|
+
*
|
|
4
|
+
* 모든 공개 API의 표준 반환 타입.
|
|
5
|
+
* `success` 필드 기반 Discriminated Union으로 타입 가드 없이 안전한 분기 처리 가능.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* 구조화된 에러 정보
|
|
11
|
+
*
|
|
12
|
+
* 모든 실패 응답에 포함되는 에러 상세 정보.
|
|
13
|
+
* `code`는 프로그래밍적 처리, `message`는 사람 가독용.
|
|
14
|
+
*/
|
|
15
|
+
export interface ToolError {
|
|
16
|
+
/** 에러 코드 (예: "PLAN_NOT_FOUND", "CONFIG_INVALID") */
|
|
17
|
+
code: string;
|
|
18
|
+
/** 사람이 읽을 수 있는 에러 메시지 */
|
|
19
|
+
message: string;
|
|
20
|
+
/** 추가 디버깅 정보 (선택) */
|
|
21
|
+
details?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* 도구 실행 결과 (Discriminated Union)
|
|
25
|
+
*
|
|
26
|
+
* 모든 공개 API의 반환 타입. `success` 필드로 성공/실패를 구분하며,
|
|
27
|
+
* TypeScript의 제어 흐름 분석을 통해 안전한 타입 좁히기 가능.
|
|
28
|
+
*
|
|
29
|
+
* @typeParam T - 성공 시 반환 데이터 타입
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* const result = someFunction();
|
|
34
|
+
* if (result.success) {
|
|
35
|
+
* console.log(result.data); // T 타입으로 안전하게 접근
|
|
36
|
+
* } else {
|
|
37
|
+
* console.error(result.error.code); // ToolError 타입으로 접근
|
|
38
|
+
* }
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export type ToolResult<T> = {
|
|
42
|
+
success: true;
|
|
43
|
+
data: T;
|
|
44
|
+
} | {
|
|
45
|
+
success: false;
|
|
46
|
+
error: ToolError;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* 성공 결과 생성 헬퍼
|
|
50
|
+
*
|
|
51
|
+
* @typeParam T - 성공 데이터 타입
|
|
52
|
+
* @param data - 성공 데이터
|
|
53
|
+
* @returns 성공 상태의 ToolResult
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* return ok({ unitId: 'U-002', title: '공유 타입 정의' });
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export declare function ok<T>(data: T): ToolResult<T>;
|
|
61
|
+
/**
|
|
62
|
+
* 실패 결과 생성 헬퍼
|
|
63
|
+
*
|
|
64
|
+
* @param code - 에러 코드 (예: "PLAN_NOT_FOUND")
|
|
65
|
+
* @param message - 사람이 읽을 수 있는 에러 메시지
|
|
66
|
+
* @param details - 추가 디버깅 정보 (선택)
|
|
67
|
+
* @returns 실패 상태의 ToolResult
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* return fail('PLAN_NOT_FOUND', '계획서를 찾을 수 없음', `경로: ${planPath}`);
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
export declare function fail(code: string, message: string, details?: string): ToolResult<never>;
|
|
75
|
+
//# sourceMappingURL=tool-result.d.ts.map
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ToolResult<T> — 도구 실행 결과 타입 및 헬퍼 함수
|
|
3
|
+
*
|
|
4
|
+
* 모든 공개 API의 표준 반환 타입.
|
|
5
|
+
* `success` 필드 기반 Discriminated Union으로 타입 가드 없이 안전한 분기 처리 가능.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* 성공 결과 생성 헬퍼
|
|
11
|
+
*
|
|
12
|
+
* @typeParam T - 성공 데이터 타입
|
|
13
|
+
* @param data - 성공 데이터
|
|
14
|
+
* @returns 성공 상태의 ToolResult
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* return ok({ unitId: 'U-002', title: '공유 타입 정의' });
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export function ok(data) {
|
|
22
|
+
return { success: true, data };
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* 실패 결과 생성 헬퍼
|
|
26
|
+
*
|
|
27
|
+
* @param code - 에러 코드 (예: "PLAN_NOT_FOUND")
|
|
28
|
+
* @param message - 사람이 읽을 수 있는 에러 메시지
|
|
29
|
+
* @param details - 추가 디버깅 정보 (선택)
|
|
30
|
+
* @returns 실패 상태의 ToolResult
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* return fail('PLAN_NOT_FOUND', '계획서를 찾을 수 없음', `경로: ${planPath}`);
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export function fail(code, message, details) {
|
|
38
|
+
return { success: false, error: { code, message, details } };
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=tool-result.js.map
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 유닛 관련 타입 정의
|
|
3
|
+
*
|
|
4
|
+
* 계획서 파싱, 의존성 수집, 문서 탐색 결과를 표현하는 핵심 타입.
|
|
5
|
+
* 프로젝트 구조에 독립적인 범용 타입으로, 모든 레이어에서 공유.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* 유닛 메타데이터
|
|
11
|
+
*
|
|
12
|
+
* 계획서에서 추출한 유닛의 핵심 정보.
|
|
13
|
+
* Core 파서(parseUnitPlan)의 출력 타입.
|
|
14
|
+
*/
|
|
15
|
+
export interface UnitMeta {
|
|
16
|
+
/** 원본 유닛 ID 문자열 (예: "U-002[Mvp]") */
|
|
17
|
+
unitId: string;
|
|
18
|
+
/** 설정의 unitTypes 키 (예: "implement", "refactor") */
|
|
19
|
+
unitType: string;
|
|
20
|
+
/** 유닛 페이즈 (예: "Mvp", "Mmp"). 없으면 undefined */
|
|
21
|
+
phase?: string;
|
|
22
|
+
/** 계획서에서 추출한 유닛 제목 */
|
|
23
|
+
title: string;
|
|
24
|
+
/** 계획서 상대 경로 (프로젝트 루트 기준) */
|
|
25
|
+
planPath: string;
|
|
26
|
+
/** 의존 유닛 목록 */
|
|
27
|
+
depends: DepInfo[];
|
|
28
|
+
/** 비유닛 컨텍스트 항목 (SKILL 참조, 기존 코드 패턴 등) */
|
|
29
|
+
contextNotes?: string[];
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* 의존 유닛 정보
|
|
33
|
+
*
|
|
34
|
+
* 계획서의 의존성 섹션에서 추출한 개별 의존 유닛 정보.
|
|
35
|
+
*/
|
|
36
|
+
export interface DepInfo {
|
|
37
|
+
/** 의존 유닛 ID (예: "U-001[Mvp]") */
|
|
38
|
+
unitId: string;
|
|
39
|
+
/** 의존 내용 설명 */
|
|
40
|
+
description: string;
|
|
41
|
+
/** 결과물 설명 (있으면) */
|
|
42
|
+
artifacts?: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 문서 탐색 결과 항목
|
|
46
|
+
*
|
|
47
|
+
* 파일시스템에서 발견된 개별 문서의 역할과 경로.
|
|
48
|
+
*/
|
|
49
|
+
export interface DocEntry {
|
|
50
|
+
/** 문서 역할 (예: "plan", "result", "runbook", 또는 커스텀) */
|
|
51
|
+
role: string;
|
|
52
|
+
/** 문서 파일 경로 (프로젝트 루트 기준 상대 경로) */
|
|
53
|
+
path: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* 의존 유닛의 문서 탐색 결과
|
|
57
|
+
*
|
|
58
|
+
* 하나의 의존 유닛에 대해 발견된 모든 관련 문서 모음.
|
|
59
|
+
* Core 리졸버(resolveDepDocs)의 출력 타입.
|
|
60
|
+
*/
|
|
61
|
+
export interface DepDocs {
|
|
62
|
+
/** 의존 유닛 ID */
|
|
63
|
+
unitId: string;
|
|
64
|
+
/** 발견된 문서 목록 */
|
|
65
|
+
found: DocEntry[];
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* 페어링 질문
|
|
69
|
+
*
|
|
70
|
+
* 계획서에서 추출한 의사결정 필요 항목.
|
|
71
|
+
* 에이전트가 아닌 사람이 답변해야 하는 질문.
|
|
72
|
+
* resolved가 true이면 selectedOption에 선택된 옵션 정보가 포함됨.
|
|
73
|
+
*/
|
|
74
|
+
export interface PairingQuestion {
|
|
75
|
+
/** 질문 식별자 (예: "Q1") */
|
|
76
|
+
id: string;
|
|
77
|
+
/** 질문 본문 */
|
|
78
|
+
text: string;
|
|
79
|
+
/** 해결 여부 ([x] 체크박스 기반) */
|
|
80
|
+
resolved: boolean;
|
|
81
|
+
/** 선택된 옵션 텍스트 (해결된 경우) */
|
|
82
|
+
selectedOption?: string;
|
|
83
|
+
/** 사용 가능한 옵션 목록 (하위 리스트 항목에서 추출) */
|
|
84
|
+
options?: string[];
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* 페어링 질문 답변
|
|
88
|
+
*
|
|
89
|
+
* CLI 인터랙티브 프롬프트를 통해 사용자가 입력한 답변.
|
|
90
|
+
* 파싱 결과(PairingQuestion)와 사용자 입력을 분리하여 관리.
|
|
91
|
+
*/
|
|
92
|
+
export interface PairingAnswer {
|
|
93
|
+
/** 답변 대상 질문 ID (PairingQuestion.id와 매칭) */
|
|
94
|
+
questionId: string;
|
|
95
|
+
/** 옵션 선택 질문의 경우 선택된 옵션 텍스트 */
|
|
96
|
+
selectedOption?: string;
|
|
97
|
+
/** 자유 텍스트 입력의 경우 입력된 텍스트 */
|
|
98
|
+
freeText?: string;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* 문서 위치 해석 결과
|
|
102
|
+
*
|
|
103
|
+
* 특정 역할(plan, result, runbook 등)의 문서가 위치할 경로 정보.
|
|
104
|
+
* Resolver(Layer 2)에서 생성하고 Adapter(Layer 3)에서 소비.
|
|
105
|
+
*/
|
|
106
|
+
export interface DocLocationEntry {
|
|
107
|
+
/** 문서 역할 (예: "plan", "result", "runbook") */
|
|
108
|
+
role: string;
|
|
109
|
+
/** 역할별 루트 디렉토리 (예: "vibe/unit-plans") */
|
|
110
|
+
dir: string;
|
|
111
|
+
/** 보간된 파일 패턴 (예: "U-118[Mmp].md") */
|
|
112
|
+
filePattern: string;
|
|
113
|
+
/** 전체 경로 패턴 (dir + "/" + filePattern) */
|
|
114
|
+
fullPattern: string;
|
|
115
|
+
/** glob 패턴 사용 여부. true이면 와일드카드 매칭 필요 */
|
|
116
|
+
glob: boolean;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=unit.d.ts.map
|