@su-record/vibe 2.3.1 → 2.4.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.
Files changed (124) hide show
  1. package/.claude/settings.json +35 -35
  2. package/.claude/settings.local.json +30 -24
  3. package/.claude/vibe/constitution.md +184 -184
  4. package/.claude/vibe/rules/core/communication-guide.md +104 -104
  5. package/.claude/vibe/rules/core/development-philosophy.md +52 -52
  6. package/.claude/vibe/rules/core/quick-start.md +120 -120
  7. package/.claude/vibe/rules/languages/dart-flutter.md +509 -509
  8. package/.claude/vibe/rules/languages/go.md +396 -396
  9. package/.claude/vibe/rules/languages/java-spring.md +586 -586
  10. package/.claude/vibe/rules/languages/kotlin-android.md +491 -491
  11. package/.claude/vibe/rules/languages/python-django.md +371 -371
  12. package/.claude/vibe/rules/languages/python-fastapi.md +386 -386
  13. package/.claude/vibe/rules/languages/rust.md +425 -425
  14. package/.claude/vibe/rules/languages/swift-ios.md +516 -516
  15. package/.claude/vibe/rules/languages/typescript-nextjs.md +441 -441
  16. package/.claude/vibe/rules/languages/typescript-node.md +375 -375
  17. package/.claude/vibe/rules/languages/typescript-nuxt.md +521 -521
  18. package/.claude/vibe/rules/languages/typescript-react-native.md +446 -446
  19. package/.claude/vibe/rules/languages/typescript-react.md +525 -525
  20. package/.claude/vibe/rules/languages/typescript-vue.md +353 -353
  21. package/.claude/vibe/rules/quality/bdd-contract-testing.md +388 -388
  22. package/.claude/vibe/rules/quality/checklist.md +276 -276
  23. package/.claude/vibe/rules/quality/testing-strategy.md +437 -437
  24. package/.claude/vibe/rules/standards/anti-patterns.md +369 -369
  25. package/.claude/vibe/rules/standards/code-structure.md +291 -291
  26. package/.claude/vibe/rules/standards/complexity-metrics.md +312 -312
  27. package/.claude/vibe/rules/standards/naming-conventions.md +198 -198
  28. package/.claude/vibe/setup.sh +31 -31
  29. package/.claude/vibe/templates/constitution-template.md +184 -184
  30. package/.claude/vibe/templates/contract-backend-template.md +517 -517
  31. package/.claude/vibe/templates/contract-frontend-template.md +594 -594
  32. package/.claude/vibe/templates/feature-template.md +96 -96
  33. package/.claude/vibe/templates/spec-template.md +199 -199
  34. package/CLAUDE.md +345 -345
  35. package/LICENSE +21 -21
  36. package/README.md +817 -744
  37. package/agents/compounder.md +261 -261
  38. package/agents/diagrammer.md +178 -178
  39. package/agents/e2e-tester.md +266 -266
  40. package/agents/explorer.md +48 -48
  41. package/agents/implementer.md +53 -53
  42. package/agents/research/best-practices-agent.md +139 -139
  43. package/agents/research/codebase-patterns-agent.md +147 -147
  44. package/agents/research/framework-docs-agent.md +181 -181
  45. package/agents/research/security-advisory-agent.md +167 -167
  46. package/agents/review/architecture-reviewer.md +107 -107
  47. package/agents/review/complexity-reviewer.md +116 -116
  48. package/agents/review/data-integrity-reviewer.md +88 -88
  49. package/agents/review/git-history-reviewer.md +103 -103
  50. package/agents/review/performance-reviewer.md +86 -86
  51. package/agents/review/python-reviewer.md +152 -152
  52. package/agents/review/rails-reviewer.md +139 -139
  53. package/agents/review/react-reviewer.md +144 -144
  54. package/agents/review/security-reviewer.md +80 -80
  55. package/agents/review/simplicity-reviewer.md +140 -140
  56. package/agents/review/test-coverage-reviewer.md +116 -116
  57. package/agents/review/typescript-reviewer.md +127 -127
  58. package/agents/searcher.md +54 -54
  59. package/agents/simplifier.md +119 -119
  60. package/agents/tester.md +49 -49
  61. package/agents/ui-previewer.md +137 -137
  62. package/commands/vibe.analyze.md +260 -199
  63. package/commands/vibe.reason.md +223 -183
  64. package/commands/vibe.review.md +213 -160
  65. package/commands/vibe.run.md +842 -836
  66. package/commands/vibe.spec.md +405 -383
  67. package/commands/vibe.utils.md +101 -101
  68. package/commands/vibe.verify.md +282 -241
  69. package/dist/cli/index.d.ts.map +1 -1
  70. package/dist/cli/index.js +422 -385
  71. package/dist/cli/index.js.map +1 -1
  72. package/dist/lib/MemoryManager.d.ts.map +1 -1
  73. package/dist/lib/MemoryManager.js +119 -114
  74. package/dist/lib/MemoryManager.js.map +1 -1
  75. package/dist/lib/PythonParser.js +108 -108
  76. package/dist/lib/gemini-mcp.js +15 -15
  77. package/dist/lib/gemini-oauth.js +35 -35
  78. package/dist/lib/gpt-mcp.js +17 -17
  79. package/dist/lib/gpt-oauth.js +44 -44
  80. package/dist/orchestrator/agentDiscovery.d.ts +18 -0
  81. package/dist/orchestrator/agentDiscovery.d.ts.map +1 -0
  82. package/dist/orchestrator/agentDiscovery.js +174 -0
  83. package/dist/orchestrator/agentDiscovery.js.map +1 -0
  84. package/dist/orchestrator/backgroundAgent.d.ts +31 -0
  85. package/dist/orchestrator/backgroundAgent.d.ts.map +1 -0
  86. package/dist/orchestrator/backgroundAgent.js +325 -0
  87. package/dist/orchestrator/backgroundAgent.js.map +1 -0
  88. package/dist/orchestrator/index.d.ts +58 -0
  89. package/dist/orchestrator/index.d.ts.map +1 -0
  90. package/dist/orchestrator/index.js +115 -0
  91. package/dist/orchestrator/index.js.map +1 -0
  92. package/dist/orchestrator/orchestrator.d.ts +82 -0
  93. package/dist/orchestrator/orchestrator.d.ts.map +1 -0
  94. package/dist/orchestrator/orchestrator.js +257 -0
  95. package/dist/orchestrator/orchestrator.js.map +1 -0
  96. package/dist/orchestrator/parallelResearch.d.ts +19 -0
  97. package/dist/orchestrator/parallelResearch.d.ts.map +1 -0
  98. package/dist/orchestrator/parallelResearch.js +214 -0
  99. package/dist/orchestrator/parallelResearch.js.map +1 -0
  100. package/dist/orchestrator/types.d.ts +109 -0
  101. package/dist/orchestrator/types.d.ts.map +1 -0
  102. package/dist/orchestrator/types.js +5 -0
  103. package/dist/orchestrator/types.js.map +1 -0
  104. package/dist/tools/analytics/getUsageAnalytics.js +12 -12
  105. package/dist/tools/index.d.ts +50 -0
  106. package/dist/tools/index.d.ts.map +1 -0
  107. package/dist/tools/index.js +61 -0
  108. package/dist/tools/index.js.map +1 -0
  109. package/dist/tools/memory/createMemoryTimeline.js +10 -10
  110. package/dist/tools/memory/getMemoryGraph.js +12 -12
  111. package/dist/tools/memory/getSessionContext.js +9 -9
  112. package/dist/tools/memory/linkMemories.js +14 -14
  113. package/dist/tools/memory/listMemories.js +4 -4
  114. package/dist/tools/memory/recallMemory.js +4 -4
  115. package/dist/tools/memory/saveMemory.js +4 -4
  116. package/dist/tools/memory/searchMemoriesAdvanced.js +22 -22
  117. package/dist/tools/planning/generatePrd.js +46 -46
  118. package/dist/tools/prompt/enhancePromptGemini.js +160 -160
  119. package/dist/tools/reasoning/applyReasoningFramework.js +56 -56
  120. package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
  121. package/hooks/hooks.json +121 -103
  122. package/package.json +75 -69
  123. package/skills/git-worktree.md +178 -178
  124. package/skills/priority-todos.md +236 -236
@@ -0,0 +1,214 @@
1
+ /**
2
+ * Parallel Research - 병렬 리서치 에이전트 실행
3
+ * Agent SDK의 query() 함수를 사용하여 여러 에이전트를 동시에 실행
4
+ */
5
+ // Agent SDK 동적 import (설치되지 않았을 경우 폴백)
6
+ let agentSdkQuery = null;
7
+ async function getQueryFunction() {
8
+ if (agentSdkQuery)
9
+ return agentSdkQuery;
10
+ try {
11
+ const sdk = await import('@anthropic-ai/claude-agent-sdk');
12
+ agentSdkQuery = sdk.query;
13
+ return agentSdkQuery;
14
+ }
15
+ catch {
16
+ return null;
17
+ }
18
+ }
19
+ /**
20
+ * 기본 리서치 태스크 템플릿
21
+ */
22
+ export function createResearchTasks(feature, techStack = []) {
23
+ const stackStr = techStack.length > 0 ? techStack.join(', ') : 'the project';
24
+ return [
25
+ {
26
+ name: 'best-practices-agent',
27
+ category: 'best-practices',
28
+ prompt: `Research best practices for implementing "${feature}" with ${stackStr}. Focus on:
29
+ 1. Industry-standard patterns
30
+ 2. Common pitfalls to avoid
31
+ 3. Recommended libraries/tools
32
+ 4. Testing strategies
33
+
34
+ Provide actionable recommendations.`
35
+ },
36
+ {
37
+ name: 'framework-docs-agent',
38
+ category: 'framework-docs',
39
+ prompt: `Find the latest documentation for ${stackStr} related to "${feature}". Include:
40
+ 1. Official API references
41
+ 2. Configuration options
42
+ 3. Migration guides if applicable
43
+ 4. Code examples from official docs
44
+
45
+ Use context7 MCP if available for up-to-date documentation.`
46
+ },
47
+ {
48
+ name: 'codebase-patterns-agent',
49
+ category: 'codebase-patterns',
50
+ prompt: `Analyze the current codebase for patterns related to "${feature}". Look for:
51
+ 1. Similar existing implementations
52
+ 2. Established conventions
53
+ 3. Reusable utilities
54
+ 4. Potential conflicts or dependencies
55
+
56
+ Use Glob and Grep to search the codebase.`
57
+ },
58
+ {
59
+ name: 'security-advisory-agent',
60
+ category: 'security-advisory',
61
+ prompt: `Review security considerations for "${feature}" with ${stackStr}. Check:
62
+ 1. OWASP Top 10 relevance
63
+ 2. Authentication/authorization requirements
64
+ 3. Data validation needs
65
+ 4. Known vulnerabilities in dependencies
66
+
67
+ Provide security recommendations.`
68
+ }
69
+ ];
70
+ }
71
+ /**
72
+ * 단일 리서치 태스크 실행
73
+ */
74
+ async function executeResearchTask(task, projectPath, timeout) {
75
+ const startTime = Date.now();
76
+ const query = await getQueryFunction();
77
+ // Agent SDK가 없으면 시뮬레이션 결과 반환
78
+ if (!query) {
79
+ return {
80
+ agentName: task.name,
81
+ sessionId: `simulated-${Date.now()}`,
82
+ result: `[Agent SDK not installed] Task "${task.name}" would execute: ${task.prompt.slice(0, 100)}...`,
83
+ success: true,
84
+ duration: Date.now() - startTime
85
+ };
86
+ }
87
+ try {
88
+ let sessionId = '';
89
+ let result = '';
90
+ // Agent SDK query 실행
91
+ const response = query({
92
+ prompt: task.prompt,
93
+ options: {
94
+ model: 'claude-haiku-3-5', // 리서치는 빠른 모델 사용
95
+ maxTurns: 3,
96
+ allowedTools: ['Read', 'Glob', 'Grep', 'WebFetch', 'WebSearch'],
97
+ cwd: projectPath
98
+ }
99
+ });
100
+ // 타임아웃 처리
101
+ const timeoutPromise = new Promise((_, reject) => {
102
+ setTimeout(() => reject(new Error('Research task timeout')), timeout);
103
+ });
104
+ // 스트리밍 결과 수집
105
+ const collectResult = async () => {
106
+ for await (const message of response) {
107
+ const msg = message;
108
+ if (msg.type === 'system' && msg.subtype === 'init' && msg.session_id) {
109
+ sessionId = msg.session_id;
110
+ }
111
+ if (msg.type === 'result' && msg.result) {
112
+ result = msg.result;
113
+ }
114
+ if (msg.type === 'assistant' && msg.message?.content) {
115
+ const textContent = msg.message.content
116
+ .filter(block => block.type === 'text' && block.text)
117
+ .map(block => block.text)
118
+ .join('\n');
119
+ if (textContent) {
120
+ result += textContent;
121
+ }
122
+ }
123
+ }
124
+ };
125
+ await Promise.race([collectResult(), timeoutPromise]);
126
+ return {
127
+ agentName: task.name,
128
+ sessionId,
129
+ result: result || 'No result collected',
130
+ success: true,
131
+ duration: Date.now() - startTime
132
+ };
133
+ }
134
+ catch (error) {
135
+ return {
136
+ agentName: task.name,
137
+ sessionId: '',
138
+ result: '',
139
+ success: false,
140
+ error: error instanceof Error ? error.message : String(error),
141
+ duration: Date.now() - startTime
142
+ };
143
+ }
144
+ }
145
+ /**
146
+ * 병렬 리서치 실행
147
+ */
148
+ export async function parallelResearch(args) {
149
+ const { tasks, projectPath = process.cwd(), maxConcurrency = 4, timeout = 60000 // 1분 기본 타임아웃
150
+ } = args;
151
+ const startTime = Date.now();
152
+ const results = [];
153
+ try {
154
+ // 동시성 제어를 위한 청크 분할
155
+ const chunks = [];
156
+ for (let i = 0; i < tasks.length; i += maxConcurrency) {
157
+ chunks.push(tasks.slice(i, i + maxConcurrency));
158
+ }
159
+ // 청크별 병렬 실행
160
+ for (const chunk of chunks) {
161
+ const chunkResults = await Promise.all(chunk.map(task => executeResearchTask(task, projectPath, timeout)));
162
+ results.push(...chunkResults);
163
+ }
164
+ const totalDuration = Date.now() - startTime;
165
+ const successCount = results.filter(r => r.success).length;
166
+ const failureCount = results.length - successCount;
167
+ // 결과 포맷팅
168
+ let summary = `## Parallel Research Results\n\n`;
169
+ summary += `**Duration**: ${(totalDuration / 1000).toFixed(1)}s\n`;
170
+ summary += `**Success**: ${successCount}/${results.length}\n\n`;
171
+ for (const result of results) {
172
+ const status = result.success ? '✅' : '❌';
173
+ summary += `### ${status} ${result.agentName}\n`;
174
+ summary += `Duration: ${(result.duration / 1000).toFixed(1)}s\n`;
175
+ if (result.success) {
176
+ // 결과 요약 (첫 500자)
177
+ const preview = result.result.length > 500
178
+ ? result.result.slice(0, 500) + '...'
179
+ : result.result;
180
+ summary += `\n${preview}\n`;
181
+ }
182
+ else {
183
+ summary += `Error: ${result.error}\n`;
184
+ }
185
+ summary += '\n---\n\n';
186
+ }
187
+ const fullResult = {
188
+ results,
189
+ totalDuration,
190
+ successCount,
191
+ failureCount
192
+ };
193
+ return {
194
+ content: [{ type: 'text', text: summary }],
195
+ ...fullResult
196
+ };
197
+ }
198
+ catch (error) {
199
+ return {
200
+ content: [{
201
+ type: 'text',
202
+ text: `Parallel research failed: ${error instanceof Error ? error.message : String(error)}`
203
+ }]
204
+ };
205
+ }
206
+ }
207
+ /**
208
+ * 기능 기반 병렬 리서치 (간편 API)
209
+ */
210
+ export async function researchFeature(feature, techStack = [], projectPath = process.cwd()) {
211
+ const tasks = createResearchTasks(feature, techStack);
212
+ return parallelResearch({ tasks, projectPath });
213
+ }
214
+ //# sourceMappingURL=parallelResearch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallelResearch.js","sourceRoot":"","sources":["../../src/orchestrator/parallelResearch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Orchestrator Types - Agent SDK 기반 오케스트레이션 타입 정의
3
+ */
4
+ import { ToolResult } from '../types/tool.js';
5
+ export interface AgentConfig {
6
+ name: string;
7
+ description: string;
8
+ prompt: string;
9
+ model?: 'claude-sonnet-4-5' | 'claude-opus-4' | 'claude-haiku-3-5';
10
+ maxTurns?: number;
11
+ allowedTools?: string[];
12
+ systemPrompt?: string;
13
+ }
14
+ export interface AgentResult {
15
+ agentName: string;
16
+ sessionId: string;
17
+ result: string;
18
+ success: boolean;
19
+ error?: string;
20
+ duration: number;
21
+ }
22
+ export interface ResearchTask {
23
+ name: string;
24
+ prompt: string;
25
+ category: 'best-practices' | 'framework-docs' | 'codebase-patterns' | 'security-advisory' | 'custom';
26
+ }
27
+ export interface ParallelResearchArgs {
28
+ tasks: ResearchTask[];
29
+ projectPath?: string;
30
+ maxConcurrency?: number;
31
+ timeout?: number;
32
+ }
33
+ export interface ParallelResearchResult {
34
+ results: AgentResult[];
35
+ totalDuration: number;
36
+ successCount: number;
37
+ failureCount: number;
38
+ }
39
+ export interface BackgroundAgentArgs {
40
+ prompt: string;
41
+ agentName?: string;
42
+ model?: 'claude-sonnet-4-5' | 'claude-opus-4' | 'claude-haiku-3-5';
43
+ maxTurns?: number;
44
+ allowedTools?: string[];
45
+ projectPath?: string;
46
+ onProgress?: (message: string) => void;
47
+ }
48
+ export interface BackgroundAgentHandle {
49
+ sessionId: string;
50
+ agentName: string;
51
+ status: 'running' | 'completed' | 'failed' | 'cancelled';
52
+ startTime: number;
53
+ getResult: () => Promise<AgentResult>;
54
+ cancel: () => void;
55
+ }
56
+ export interface DiscoveredAgent {
57
+ name: string;
58
+ path: string;
59
+ category: string;
60
+ description: string;
61
+ content: string;
62
+ }
63
+ export interface AgentDiscoveryArgs {
64
+ projectPath?: string;
65
+ category?: string;
66
+ pattern?: string;
67
+ }
68
+ export interface SessionInfo {
69
+ sessionId: string;
70
+ agentName: string;
71
+ status: 'active' | 'completed' | 'failed';
72
+ startTime: number;
73
+ endTime?: number;
74
+ prompt: string;
75
+ }
76
+ export interface SessionStore {
77
+ sessions: Map<string, SessionInfo>;
78
+ add: (session: SessionInfo) => void;
79
+ get: (sessionId: string) => SessionInfo | undefined;
80
+ list: () => SessionInfo[];
81
+ cleanup: (maxAge: number) => void;
82
+ }
83
+ export interface OrchestratorOptions {
84
+ projectPath?: string;
85
+ verbose?: boolean;
86
+ saveResults?: boolean;
87
+ resultsPath?: string;
88
+ }
89
+ export interface AgentMessage {
90
+ type: 'system' | 'assistant' | 'user' | 'result';
91
+ subtype?: 'init' | 'progress' | 'tool_use' | 'tool_result';
92
+ session_id?: string;
93
+ content?: string;
94
+ result?: string;
95
+ message?: {
96
+ content: Array<{
97
+ type: string;
98
+ text?: string;
99
+ }>;
100
+ };
101
+ }
102
+ export interface OrchestratorToolResult extends ToolResult {
103
+ metadata?: {
104
+ sessionId?: string;
105
+ duration?: number;
106
+ agentName?: string;
107
+ };
108
+ }
109
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/orchestrator/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Orchestrator Types - Agent SDK 기반 오케스트레이션 타입 정의
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/orchestrator/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -2,18 +2,18 @@
2
2
  import { MemoryManager } from '../../lib/MemoryManager.js';
3
3
  export const getUsageAnalyticsDefinition = {
4
4
  name: 'get_usage_analytics',
5
- description: `도구 사용 분석 및 통계를 조회합니다.
6
-
7
- 키워드: 분석, 통계, 사용량, analytics, statistics, usage
8
-
9
- **제공 정보:**
10
- - 메모리 사용 통계
11
- - 카테고리별 분포
12
- - 시간별 사용 패턴
13
- - 그래프 관계 통계
14
-
15
- 사용 예시:
16
- - "사용 통계 보여줘"
5
+ description: `도구 사용 분석 및 통계를 조회합니다.
6
+
7
+ 키워드: 분석, 통계, 사용량, analytics, statistics, usage
8
+
9
+ **제공 정보:**
10
+ - 메모리 사용 통계
11
+ - 카테고리별 분포
12
+ - 시간별 사용 패턴
13
+ - 그래프 관계 통계
14
+
15
+ 사용 예시:
16
+ - "사용 통계 보여줘"
17
17
  - "메모리 분석"`,
18
18
  inputSchema: {
19
19
  type: 'object',
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Vibe Tools - CLI 없이 도구만 export
3
+ *
4
+ * 사용법:
5
+ * node -e "require('@su-record/vibe/tools').startSession({}).then(console.log)"
6
+ */
7
+ export { startSession } from './memory/startSession.js';
8
+ export { autoSaveContext } from './memory/autoSaveContext.js';
9
+ export { saveMemory } from './memory/saveMemory.js';
10
+ export { recallMemory } from './memory/recallMemory.js';
11
+ export { listMemories } from './memory/listMemories.js';
12
+ export { deleteMemory } from './memory/deleteMemory.js';
13
+ export { updateMemory } from './memory/updateMemory.js';
14
+ export { searchMemoriesHandler as searchMemories } from './memory/searchMemories.js';
15
+ export { searchMemoriesAdvanced } from './memory/searchMemoriesAdvanced.js';
16
+ export { linkMemories } from './memory/linkMemories.js';
17
+ export { getMemoryGraph } from './memory/getMemoryGraph.js';
18
+ export { createMemoryTimeline } from './memory/createMemoryTimeline.js';
19
+ export { restoreSessionContext } from './memory/restoreSessionContext.js';
20
+ export { prioritizeMemory } from './memory/prioritizeMemory.js';
21
+ export { getSessionContext } from './memory/getSessionContext.js';
22
+ export { findSymbol } from './semantic/findSymbol.js';
23
+ export { findReferences } from './semantic/findReferences.js';
24
+ export { analyzeDependencyGraph } from './semantic/analyzeDependencyGraph.js';
25
+ export { analyzeComplexity } from './convention/analyzeComplexity.js';
26
+ export { validateCodeQuality } from './convention/validateCodeQuality.js';
27
+ export { checkCouplingCohesion } from './convention/checkCouplingCohesion.js';
28
+ export { suggestImprovements } from './convention/suggestImprovements.js';
29
+ export { applyQualityRules } from './convention/applyQualityRules.js';
30
+ export { getCodingGuide } from './convention/getCodingGuide.js';
31
+ export { createThinkingChain } from './thinking/createThinkingChain.js';
32
+ export { analyzeProblem } from './thinking/analyzeProblem.js';
33
+ export { stepByStepAnalysis } from './thinking/stepByStepAnalysis.js';
34
+ export { formatAsPlan } from './thinking/formatAsPlan.js';
35
+ export { breakDownProblem } from './thinking/breakDownProblem.js';
36
+ export { thinkAloudProcess } from './thinking/thinkAloudProcess.js';
37
+ export { generatePrd } from './planning/generatePrd.js';
38
+ export { createUserStories } from './planning/createUserStories.js';
39
+ export { analyzeRequirements } from './planning/analyzeRequirements.js';
40
+ export { featureRoadmap } from './planning/featureRoadmap.js';
41
+ export { enhancePrompt } from './prompt/enhancePrompt.js';
42
+ export { analyzePrompt } from './prompt/analyzePrompt.js';
43
+ export { previewUiAscii } from './ui/previewUiAscii.js';
44
+ export { getCurrentTime } from './time/getCurrentTime.js';
45
+ export { applyReasoningFramework } from './reasoning/applyReasoningFramework.js';
46
+ export { getUsageAnalytics } from './analytics/getUsageAnalytics.js';
47
+ export { MemoryManager } from '../lib/MemoryManager.js';
48
+ export { ProjectCache } from '../lib/ProjectCache.js';
49
+ export { ContextCompressor } from '../lib/ContextCompressor.js';
50
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,qBAAqB,IAAI,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGlE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAG9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGpE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAG9D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG1D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAGjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAGrE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Vibe Tools - CLI 없이 도구만 export
3
+ *
4
+ * 사용법:
5
+ * node -e "require('@su-record/vibe/tools').startSession({}).then(console.log)"
6
+ */
7
+ // Memory tools
8
+ export { startSession } from './memory/startSession.js';
9
+ export { autoSaveContext } from './memory/autoSaveContext.js';
10
+ export { saveMemory } from './memory/saveMemory.js';
11
+ export { recallMemory } from './memory/recallMemory.js';
12
+ export { listMemories } from './memory/listMemories.js';
13
+ export { deleteMemory } from './memory/deleteMemory.js';
14
+ export { updateMemory } from './memory/updateMemory.js';
15
+ export { searchMemoriesHandler as searchMemories } from './memory/searchMemories.js';
16
+ export { searchMemoriesAdvanced } from './memory/searchMemoriesAdvanced.js';
17
+ export { linkMemories } from './memory/linkMemories.js';
18
+ export { getMemoryGraph } from './memory/getMemoryGraph.js';
19
+ export { createMemoryTimeline } from './memory/createMemoryTimeline.js';
20
+ export { restoreSessionContext } from './memory/restoreSessionContext.js';
21
+ export { prioritizeMemory } from './memory/prioritizeMemory.js';
22
+ export { getSessionContext } from './memory/getSessionContext.js';
23
+ // Semantic tools
24
+ export { findSymbol } from './semantic/findSymbol.js';
25
+ export { findReferences } from './semantic/findReferences.js';
26
+ export { analyzeDependencyGraph } from './semantic/analyzeDependencyGraph.js';
27
+ // Convention tools
28
+ export { analyzeComplexity } from './convention/analyzeComplexity.js';
29
+ export { validateCodeQuality } from './convention/validateCodeQuality.js';
30
+ export { checkCouplingCohesion } from './convention/checkCouplingCohesion.js';
31
+ export { suggestImprovements } from './convention/suggestImprovements.js';
32
+ export { applyQualityRules } from './convention/applyQualityRules.js';
33
+ export { getCodingGuide } from './convention/getCodingGuide.js';
34
+ // Thinking tools
35
+ export { createThinkingChain } from './thinking/createThinkingChain.js';
36
+ export { analyzeProblem } from './thinking/analyzeProblem.js';
37
+ export { stepByStepAnalysis } from './thinking/stepByStepAnalysis.js';
38
+ export { formatAsPlan } from './thinking/formatAsPlan.js';
39
+ export { breakDownProblem } from './thinking/breakDownProblem.js';
40
+ export { thinkAloudProcess } from './thinking/thinkAloudProcess.js';
41
+ // Planning tools
42
+ export { generatePrd } from './planning/generatePrd.js';
43
+ export { createUserStories } from './planning/createUserStories.js';
44
+ export { analyzeRequirements } from './planning/analyzeRequirements.js';
45
+ export { featureRoadmap } from './planning/featureRoadmap.js';
46
+ // Prompt tools
47
+ export { enhancePrompt } from './prompt/enhancePrompt.js';
48
+ export { analyzePrompt } from './prompt/analyzePrompt.js';
49
+ // UI tools
50
+ export { previewUiAscii } from './ui/previewUiAscii.js';
51
+ // Time tools
52
+ export { getCurrentTime } from './time/getCurrentTime.js';
53
+ // Reasoning tools
54
+ export { applyReasoningFramework } from './reasoning/applyReasoningFramework.js';
55
+ // Analytics tools
56
+ export { getUsageAnalytics } from './analytics/getUsageAnalytics.js';
57
+ // Lib exports (for advanced usage)
58
+ export { MemoryManager } from '../lib/MemoryManager.js';
59
+ export { ProjectCache } from '../lib/ProjectCache.js';
60
+ export { ContextCompressor } from '../lib/ContextCompressor.js';
61
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -2,12 +2,12 @@
2
2
  import { MemoryManager } from '../../lib/MemoryManager.js';
3
3
  export const createMemoryTimelineDefinition = {
4
4
  name: 'create_memory_timeline',
5
- description: `메모리 타임라인을 생성합니다.
6
-
7
- 키워드: 타임라인, 시간순, 히스토리, timeline, history, chronological
8
-
9
- 사용 예시:
10
- - "최근 메모리 타임라인 보여줘"
5
+ description: `메모리 타임라인을 생성합니다.
6
+
7
+ 키워드: 타임라인, 시간순, 히스토리, timeline, history, chronological
8
+
9
+ 사용 예시:
10
+ - "최근 메모리 타임라인 보여줘"
11
11
  - "지난 7일간 메모리 히스토리"`,
12
12
  inputSchema: {
13
13
  type: 'object',
@@ -61,10 +61,10 @@ export async function createMemoryTimeline(args) {
61
61
  return {
62
62
  content: [{
63
63
  type: 'text',
64
- text: `✗ 지정된 기간에 메모리가 없습니다.
65
-
66
- ${startDate ? `**시작일**: ${startDate}` : ''}
67
- ${endDate ? `**종료일**: ${endDate}` : ''}
64
+ text: `✗ 지정된 기간에 메모리가 없습니다.
65
+
66
+ ${startDate ? `**시작일**: ${startDate}` : ''}
67
+ ${endDate ? `**종료일**: ${endDate}` : ''}
68
68
  ${category ? `**카테고리**: ${category}` : ''}`
69
69
  }]
70
70
  };
@@ -2,12 +2,12 @@
2
2
  import { MemoryManager } from '../../lib/MemoryManager.js';
3
3
  export const getMemoryGraphDefinition = {
4
4
  name: 'get_memory_graph',
5
- description: `메모리 지식 그래프를 조회합니다.
6
-
7
- 키워드: 그래프, 관계도, 연결 보기, memory graph, relations, connections
8
-
9
- 사용 예시:
10
- - "project-architecture의 관계 그래프 보여줘"
5
+ description: `메모리 지식 그래프를 조회합니다.
6
+
7
+ 키워드: 그래프, 관계도, 연결 보기, memory graph, relations, connections
8
+
9
+ 사용 예시:
10
+ - "project-architecture의 관계 그래프 보여줘"
11
11
  - "전체 메모리 그래프 조회"`,
12
12
  inputSchema: {
13
13
  type: 'object',
@@ -79,12 +79,12 @@ export async function getMemoryGraph(args) {
79
79
  output = generateTreeFormat(key, graph.nodes, filteredEdges);
80
80
  }
81
81
  // Add statistics
82
- const stats = `
83
- ---
84
- **통계**
85
- - 노드 수: ${graph.nodes.length}
86
- - 관계 수: ${filteredEdges.length}
87
- - 클러스터 수: ${graph.clusters.length}
82
+ const stats = `
83
+ ---
84
+ **통계**
85
+ - 노드 수: ${graph.nodes.length}
86
+ - 관계 수: ${filteredEdges.length}
87
+ - 클러스터 수: ${graph.clusters.length}
88
88
  ${graph.clusters.length > 0 ? `- 클러스터: ${graph.clusters.map(c => `[${c.join(', ')}]`).join(', ')}` : ''}`;
89
89
  return {
90
90
  content: [{
@@ -3,15 +3,15 @@
3
3
  import { MemoryManager } from '../../lib/MemoryManager.js';
4
4
  export const getSessionContextDefinition = {
5
5
  name: 'get_session_context',
6
- description: `🚀 [새 대화/세션 시작 시 자동 실행 권장] 이전 세션의 메모리, 지식 그래프, 최근 작업 내역을 한 번에 조회합니다.
7
-
8
- 이 도구는 새로운 대화를 시작할 때 가장 먼저 실행하면 좋습니다. 프로젝트의 컨텍스트를 빠르게 파악할 수 있습니다.
9
-
10
- 키워드: 세션 시작, 컨텍스트, 이전 작업, session start, context, previous work, what did we do
11
-
12
- 사용 예시:
13
- - "이전에 무슨 작업 했었지?"
14
- - "프로젝트 컨텍스트 알려줘"
6
+ description: `🚀 [새 대화/세션 시작 시 자동 실행 권장] 이전 세션의 메모리, 지식 그래프, 최근 작업 내역을 한 번에 조회합니다.
7
+
8
+ 이 도구는 새로운 대화를 시작할 때 가장 먼저 실행하면 좋습니다. 프로젝트의 컨텍스트를 빠르게 파악할 수 있습니다.
9
+
10
+ 키워드: 세션 시작, 컨텍스트, 이전 작업, session start, context, previous work, what did we do
11
+
12
+ 사용 예시:
13
+ - "이전에 무슨 작업 했었지?"
14
+ - "프로젝트 컨텍스트 알려줘"
15
15
  - "세션 컨텍스트 조회"`,
16
16
  inputSchema: {
17
17
  type: 'object',
@@ -2,12 +2,12 @@
2
2
  import { MemoryManager } from '../../lib/MemoryManager.js';
3
3
  export const linkMemoriesDefinition = {
4
4
  name: 'link_memories',
5
- description: `메모리 간 관계를 연결합니다 (지식 그래프).
6
-
7
- 키워드: 연결해, 관계 설정, 링크, connect memories, link, relate
8
-
9
- 사용 예시:
10
- - "project-architecture와 design-patterns를 연결해"
5
+ description: `메모리 간 관계를 연결합니다 (지식 그래프).
6
+
7
+ 키워드: 연결해, 관계 설정, 링크, connect memories, link, relate
8
+
9
+ 사용 예시:
10
+ - "project-architecture와 design-patterns를 연결해"
11
11
  - "이 두 메모리를 related_to로 링크해"`,
12
12
  inputSchema: {
13
13
  type: 'object',
@@ -88,14 +88,14 @@ export async function linkMemories(args) {
88
88
  if (bidirectional) {
89
89
  memoryManager.linkMemories(targetKey, sourceKey, relationType, strength);
90
90
  }
91
- const result = `✓ 메모리 관계가 연결되었습니다
92
-
93
- **소스**: ${sourceKey}
94
- **타겟**: ${targetKey}
95
- **관계 유형**: ${relationType}
96
- **강도**: ${strength}
97
- **양방향**: ${bidirectional ? '예' : '아니오'}
98
-
91
+ const result = `✓ 메모리 관계가 연결되었습니다
92
+
93
+ **소스**: ${sourceKey}
94
+ **타겟**: ${targetKey}
95
+ **관계 유형**: ${relationType}
96
+ **강도**: ${strength}
97
+ **양방향**: ${bidirectional ? '예' : '아니오'}
98
+
99
99
  이제 get_memory_graph로 관계를 시각화할 수 있습니다.`;
100
100
  return {
101
101
  content: [{