@su-record/vibe 2.6.27 → 2.6.28
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/CLAUDE.md +202 -202
- package/LICENSE +21 -21
- package/README.md +267 -267
- package/agents/architect-low.md +41 -41
- package/agents/architect-medium.md +59 -59
- package/agents/architect.md +80 -80
- package/agents/build-error-resolver.md +115 -115
- package/agents/compounder.md +261 -261
- package/agents/diagrammer.md +178 -178
- package/agents/docs/api-documenter.md +99 -99
- package/agents/docs/changelog-writer.md +93 -93
- package/agents/e2e-tester.md +266 -266
- package/agents/explorer-low.md +42 -42
- package/agents/explorer-medium.md +59 -59
- package/agents/explorer.md +48 -48
- package/agents/implementer-low.md +43 -43
- package/agents/implementer-medium.md +52 -52
- package/agents/implementer.md +54 -54
- package/agents/planning/requirements-analyst.md +84 -84
- package/agents/planning/ux-advisor.md +83 -83
- package/agents/qa/acceptance-tester.md +86 -86
- package/agents/qa/edge-case-finder.md +93 -93
- package/agents/refactor-cleaner.md +143 -143
- package/agents/research/best-practices-agent.md +199 -199
- package/agents/research/codebase-patterns-agent.md +157 -157
- package/agents/research/framework-docs-agent.md +188 -188
- package/agents/research/security-advisory-agent.md +213 -213
- package/agents/review/architecture-reviewer.md +107 -107
- package/agents/review/complexity-reviewer.md +116 -116
- package/agents/review/data-integrity-reviewer.md +88 -88
- package/agents/review/git-history-reviewer.md +103 -103
- package/agents/review/performance-reviewer.md +86 -86
- package/agents/review/python-reviewer.md +150 -150
- package/agents/review/rails-reviewer.md +139 -139
- package/agents/review/react-reviewer.md +144 -144
- package/agents/review/security-reviewer.md +80 -80
- package/agents/review/simplicity-reviewer.md +140 -140
- package/agents/review/test-coverage-reviewer.md +116 -116
- package/agents/review/typescript-reviewer.md +127 -127
- package/agents/searcher.md +54 -54
- package/agents/simplifier.md +120 -120
- package/agents/tester.md +49 -49
- package/agents/ui-previewer.md +268 -268
- package/commands/vibe.analyze.md +356 -356
- package/commands/vibe.reason.md +329 -329
- package/commands/vibe.review.md +423 -423
- package/commands/vibe.run.md +1313 -1313
- package/commands/vibe.spec.md +1054 -1054
- package/commands/vibe.spec.review.md +412 -412
- package/commands/vibe.trace.md +161 -161
- package/commands/vibe.utils.md +376 -376
- package/commands/vibe.verify.md +375 -375
- package/dist/cli/collaborator.js +52 -52
- package/dist/cli/detect.js +32 -32
- package/dist/cli/hud.js +20 -20
- package/dist/cli/index.js +112 -112
- package/dist/cli/llm.js +144 -144
- package/dist/cli/mcp.d.ts +49 -0
- package/dist/cli/mcp.d.ts.map +1 -0
- package/dist/cli/mcp.js +169 -0
- package/dist/cli/mcp.js.map +1 -0
- package/dist/cli/postinstall.d.ts.map +1 -1
- package/dist/cli/postinstall.js +886 -858
- package/dist/cli/postinstall.js.map +1 -1
- package/dist/cli/setup/GlobalInstaller.d.ts +6 -0
- package/dist/cli/setup/GlobalInstaller.d.ts.map +1 -1
- package/dist/cli/setup/GlobalInstaller.js +26 -0
- package/dist/cli/setup/GlobalInstaller.js.map +1 -1
- package/dist/lib/DeepInit.js +24 -24
- package/dist/lib/IterationTracker.js +11 -11
- package/dist/lib/PythonParser.js +108 -108
- package/dist/lib/ReviewRace.js +96 -96
- package/dist/lib/SkillFrontmatter.js +28 -28
- package/dist/lib/SkillQualityGate.js +9 -9
- package/dist/lib/SkillRepository.js +159 -159
- package/dist/lib/UltraQA.js +77 -77
- package/dist/lib/gemini-api.js +5 -5
- package/dist/lib/gemini-mcp.d.ts +10 -0
- package/dist/lib/gemini-mcp.d.ts.map +1 -0
- package/dist/lib/gemini-mcp.js +353 -0
- package/dist/lib/gemini-mcp.js.map +1 -0
- package/dist/lib/gpt-api.js +4 -4
- package/dist/lib/gpt-mcp.d.ts +10 -0
- package/dist/lib/gpt-mcp.d.ts.map +1 -0
- package/dist/lib/gpt-mcp.js +352 -0
- package/dist/lib/gpt-mcp.js.map +1 -0
- package/dist/lib/memory/KnowledgeGraph.js +4 -4
- package/dist/lib/memory/MemorySearch.js +43 -43
- package/dist/lib/memory/MemoryStorage.js +130 -130
- package/dist/lib/memory/ObservationStore.js +28 -28
- package/dist/lib/memory/SessionRAGRetriever.js +7 -7
- package/dist/lib/memory/SessionRAGStore.js +216 -216
- package/dist/lib/memory/SessionSummarizer.js +9 -9
- package/dist/orchestrator/AgentManager.js +12 -12
- package/dist/orchestrator/MultiLlmResearch.js +8 -8
- package/dist/orchestrator/SmartRouter.js +11 -11
- package/dist/orchestrator/SwarmOrchestrator.test.js +16 -16
- package/dist/orchestrator/parallelResearch.js +24 -24
- package/dist/tools/analytics/getUsageAnalytics.d.ts +10 -0
- package/dist/tools/analytics/getUsageAnalytics.d.ts.map +1 -0
- package/dist/tools/analytics/getUsageAnalytics.js +246 -0
- package/dist/tools/analytics/getUsageAnalytics.js.map +1 -0
- package/dist/tools/analytics/index.d.ts +5 -0
- package/dist/tools/analytics/index.d.ts.map +1 -0
- package/dist/tools/analytics/index.js +5 -0
- package/dist/tools/analytics/index.js.map +1 -0
- package/dist/tools/convention/analyzeComplexity.test.js +115 -115
- package/dist/tools/convention/getCodingGuide.d.ts +7 -0
- package/dist/tools/convention/getCodingGuide.d.ts.map +1 -0
- package/dist/tools/convention/getCodingGuide.js +69 -0
- package/dist/tools/convention/getCodingGuide.js.map +1 -0
- package/dist/tools/convention/validateCodeQuality.test.js +104 -104
- package/dist/tools/planning/analyzeRequirements.d.ts +9 -0
- package/dist/tools/planning/analyzeRequirements.d.ts.map +1 -0
- package/dist/tools/planning/analyzeRequirements.js +171 -0
- package/dist/tools/planning/analyzeRequirements.js.map +1 -0
- package/dist/tools/planning/createUserStories.d.ts +9 -0
- package/dist/tools/planning/createUserStories.d.ts.map +1 -0
- package/dist/tools/planning/createUserStories.js +124 -0
- package/dist/tools/planning/createUserStories.js.map +1 -0
- package/dist/tools/planning/featureRoadmap.d.ts +10 -0
- package/dist/tools/planning/featureRoadmap.d.ts.map +1 -0
- package/dist/tools/planning/featureRoadmap.js +207 -0
- package/dist/tools/planning/featureRoadmap.js.map +1 -0
- package/dist/tools/planning/generatePrd.d.ts +11 -0
- package/dist/tools/planning/generatePrd.d.ts.map +1 -0
- package/dist/tools/planning/generatePrd.js +161 -0
- package/dist/tools/planning/generatePrd.js.map +1 -0
- package/dist/tools/planning/index.d.ts +8 -0
- package/dist/tools/planning/index.d.ts.map +1 -0
- package/dist/tools/planning/index.js +8 -0
- package/dist/tools/planning/index.js.map +1 -0
- package/dist/tools/prompt/analyzePrompt.d.ts +7 -0
- package/dist/tools/prompt/analyzePrompt.d.ts.map +1 -0
- package/dist/tools/prompt/analyzePrompt.js +150 -0
- package/dist/tools/prompt/analyzePrompt.js.map +1 -0
- package/dist/tools/prompt/enhancePrompt.d.ts +8 -0
- package/dist/tools/prompt/enhancePrompt.d.ts.map +1 -0
- package/dist/tools/prompt/enhancePrompt.js +110 -0
- package/dist/tools/prompt/enhancePrompt.js.map +1 -0
- package/dist/tools/prompt/enhancePromptGemini.d.ts +8 -0
- package/dist/tools/prompt/enhancePromptGemini.d.ts.map +1 -0
- package/dist/tools/prompt/enhancePromptGemini.js +332 -0
- package/dist/tools/prompt/enhancePromptGemini.js.map +1 -0
- package/dist/tools/prompt/index.d.ts +7 -0
- package/dist/tools/prompt/index.d.ts.map +1 -0
- package/dist/tools/prompt/index.js +7 -0
- package/dist/tools/prompt/index.js.map +1 -0
- package/dist/tools/reasoning/applyReasoningFramework.d.ts +8 -0
- package/dist/tools/reasoning/applyReasoningFramework.d.ts.map +1 -0
- package/dist/tools/reasoning/applyReasoningFramework.js +266 -0
- package/dist/tools/reasoning/applyReasoningFramework.js.map +1 -0
- package/dist/tools/reasoning/index.d.ts +5 -0
- package/dist/tools/reasoning/index.d.ts.map +1 -0
- package/dist/tools/reasoning/index.js +5 -0
- package/dist/tools/reasoning/index.js.map +1 -0
- package/dist/tools/spec/prdParser.test.js +171 -171
- package/dist/tools/spec/specGenerator.js +169 -169
- package/dist/tools/spec/traceabilityMatrix.js +64 -64
- package/dist/tools/spec/traceabilityMatrix.test.js +28 -28
- package/dist/tools/thinking/analyzeProblem.d.ts +7 -0
- package/dist/tools/thinking/analyzeProblem.d.ts.map +1 -0
- package/dist/tools/thinking/analyzeProblem.js +55 -0
- package/dist/tools/thinking/analyzeProblem.js.map +1 -0
- package/dist/tools/thinking/breakDownProblem.d.ts +8 -0
- package/dist/tools/thinking/breakDownProblem.d.ts.map +1 -0
- package/dist/tools/thinking/breakDownProblem.js +145 -0
- package/dist/tools/thinking/breakDownProblem.js.map +1 -0
- package/dist/tools/thinking/createThinkingChain.d.ts +7 -0
- package/dist/tools/thinking/createThinkingChain.d.ts.map +1 -0
- package/dist/tools/thinking/createThinkingChain.js +44 -0
- package/dist/tools/thinking/createThinkingChain.js.map +1 -0
- package/dist/tools/thinking/formatAsPlan.d.ts +9 -0
- package/dist/tools/thinking/formatAsPlan.d.ts.map +1 -0
- package/dist/tools/thinking/formatAsPlan.js +78 -0
- package/dist/tools/thinking/formatAsPlan.js.map +1 -0
- package/dist/tools/thinking/index.d.ts +10 -0
- package/dist/tools/thinking/index.d.ts.map +1 -0
- package/dist/tools/thinking/index.js +10 -0
- package/dist/tools/thinking/index.js.map +1 -0
- package/dist/tools/thinking/stepByStepAnalysis.d.ts +8 -0
- package/dist/tools/thinking/stepByStepAnalysis.d.ts.map +1 -0
- package/dist/tools/thinking/stepByStepAnalysis.js +63 -0
- package/dist/tools/thinking/stepByStepAnalysis.js.map +1 -0
- package/dist/tools/thinking/thinkAloudProcess.d.ts +8 -0
- package/dist/tools/thinking/thinkAloudProcess.d.ts.map +1 -0
- package/dist/tools/thinking/thinkAloudProcess.js +80 -0
- package/dist/tools/thinking/thinkAloudProcess.js.map +1 -0
- package/hooks/hooks.json +115 -115
- package/hooks/scripts/code-check.js +70 -70
- package/hooks/scripts/code-review.js +22 -22
- package/hooks/scripts/complexity.js +22 -22
- package/hooks/scripts/compound.js +23 -23
- package/hooks/scripts/context-save.js +53 -53
- package/hooks/scripts/gemini-ui-gen.js +281 -281
- package/hooks/scripts/generate-brand-assets.js +474 -474
- package/hooks/scripts/hud-multiline.js +262 -262
- package/hooks/scripts/hud-status.js +291 -291
- package/hooks/scripts/keyword-detector.js +214 -214
- package/hooks/scripts/llm-orchestrate.js +171 -171
- package/hooks/scripts/post-edit.js +97 -97
- package/hooks/scripts/post-tool-verify.js +210 -210
- package/hooks/scripts/pre-tool-guard.js +125 -125
- package/hooks/scripts/prompt-dispatcher.js +161 -161
- package/hooks/scripts/recall.js +22 -22
- package/hooks/scripts/session-start.js +30 -30
- package/hooks/scripts/skill-injector.js +191 -191
- package/hooks/scripts/utils.js +97 -97
- package/languages/csharp-unity.md +515 -515
- package/languages/gdscript-godot.md +470 -470
- package/languages/ruby-rails.md +489 -489
- package/languages/typescript-angular.md +433 -433
- package/languages/typescript-astro.md +416 -416
- package/languages/typescript-electron.md +406 -406
- package/languages/typescript-nestjs.md +524 -524
- package/languages/typescript-svelte.md +407 -407
- package/languages/typescript-tauri.md +365 -365
- package/package.json +84 -84
- package/skills/brand-assets.md +141 -141
- package/skills/commerce-patterns.md +361 -361
- package/skills/context7-usage.md +102 -102
- package/skills/e2e-commerce.md +304 -304
- package/skills/frontend-design.md +92 -92
- package/skills/git-worktree.md +181 -181
- package/skills/parallel-research.md +77 -77
- package/skills/priority-todos.md +239 -239
- package/skills/seo-checklist.md +244 -244
- package/skills/tool-fallback.md +190 -190
- package/skills/vibe-capabilities.md +161 -161
- package/vibe/constitution.md +227 -227
- package/vibe/rules/core/communication-guide.md +98 -98
- package/vibe/rules/core/development-philosophy.md +52 -52
- package/vibe/rules/core/quick-start.md +102 -102
- package/vibe/rules/quality/bdd-contract-testing.md +393 -393
- package/vibe/rules/quality/checklist.md +276 -276
- package/vibe/rules/quality/testing-strategy.md +440 -440
- package/vibe/rules/standards/anti-patterns.md +541 -541
- package/vibe/rules/standards/code-structure.md +291 -291
- package/vibe/rules/standards/complexity-metrics.md +313 -313
- package/vibe/rules/standards/naming-conventions.md +198 -198
- package/vibe/setup.sh +31 -31
- package/vibe/templates/constitution-template.md +252 -252
- package/vibe/templates/contract-backend-template.md +526 -526
- package/vibe/templates/contract-frontend-template.md +599 -599
- package/vibe/templates/feature-template.md +96 -96
- package/vibe/templates/spec-template.md +221 -221
|
@@ -167,17 +167,17 @@ export class SmartRouter {
|
|
|
167
167
|
const errorSummary = Object.entries(errors)
|
|
168
168
|
.map(([provider, msg]) => `- ${provider}: ${msg}`)
|
|
169
169
|
.join('\n');
|
|
170
|
-
return `[External LLM Unavailable - Claude Direct Handling]
|
|
171
|
-
|
|
172
|
-
All external LLMs failed. Claude should handle this ${type} task directly.
|
|
173
|
-
|
|
174
|
-
**Original Request:**
|
|
175
|
-
${prompt}
|
|
176
|
-
|
|
177
|
-
**Failed Providers:**
|
|
178
|
-
${errorSummary}
|
|
179
|
-
|
|
180
|
-
**Action Required:**
|
|
170
|
+
return `[External LLM Unavailable - Claude Direct Handling]
|
|
171
|
+
|
|
172
|
+
All external LLMs failed. Claude should handle this ${type} task directly.
|
|
173
|
+
|
|
174
|
+
**Original Request:**
|
|
175
|
+
${prompt}
|
|
176
|
+
|
|
177
|
+
**Failed Providers:**
|
|
178
|
+
${errorSummary}
|
|
179
|
+
|
|
180
|
+
**Action Required:**
|
|
181
181
|
Claude, please handle this task using your own capabilities. Do NOT retry external LLMs.`;
|
|
182
182
|
}
|
|
183
183
|
delay(ms) {
|
|
@@ -10,14 +10,14 @@ describe('SwarmOrchestrator', () => {
|
|
|
10
10
|
expect(analysis.score).toBeLessThan(10);
|
|
11
11
|
});
|
|
12
12
|
it('복잡한 프롬프트는 높은 복잡도', async () => {
|
|
13
|
-
const complexPrompt = `
|
|
14
|
-
Implement a complete login feature:
|
|
15
|
-
1. Create the login form UI with React
|
|
16
|
-
2. Add form validation with Zod
|
|
17
|
-
3. Implement the API endpoint with authentication
|
|
18
|
-
4. Add error handling and loading states
|
|
19
|
-
5. Write unit tests for all components
|
|
20
|
-
6. Add security measures against CSRF
|
|
13
|
+
const complexPrompt = `
|
|
14
|
+
Implement a complete login feature:
|
|
15
|
+
1. Create the login form UI with React
|
|
16
|
+
2. Add form validation with Zod
|
|
17
|
+
3. Implement the API endpoint with authentication
|
|
18
|
+
4. Add error handling and loading states
|
|
19
|
+
5. Write unit tests for all components
|
|
20
|
+
6. Add security measures against CSRF
|
|
21
21
|
`;
|
|
22
22
|
const analysis = await analyzeTaskComplexity(complexPrompt);
|
|
23
23
|
expect(analysis.score).toBeGreaterThan(15);
|
|
@@ -29,10 +29,10 @@ describe('SwarmOrchestrator', () => {
|
|
|
29
29
|
expect(analysis.factors).toContain('5-files');
|
|
30
30
|
});
|
|
31
31
|
it('숫자 목록은 분할 제안 생성', async () => {
|
|
32
|
-
const prompt = `
|
|
33
|
-
1. First do this task
|
|
34
|
-
2. Then do second task
|
|
35
|
-
3. Finally do third task
|
|
32
|
+
const prompt = `
|
|
33
|
+
1. First do this task
|
|
34
|
+
2. Then do second task
|
|
35
|
+
3. Finally do third task
|
|
36
36
|
`;
|
|
37
37
|
const analysis = await analyzeTaskComplexity(prompt);
|
|
38
38
|
expect(analysis.suggestedSplits?.length).toBeGreaterThanOrEqual(2);
|
|
@@ -65,10 +65,10 @@ describe('SwarmOrchestrator', () => {
|
|
|
65
65
|
it('maxDepth 도달 시 분할 안함', async () => {
|
|
66
66
|
// maxDepth: 0으로 설정하면 분할하지 않음
|
|
67
67
|
const orchestrator = new SwarmOrchestrator({
|
|
68
|
-
prompt: `
|
|
69
|
-
1. Task one
|
|
70
|
-
2. Task two
|
|
71
|
-
3. Task three
|
|
68
|
+
prompt: `
|
|
69
|
+
1. Task one
|
|
70
|
+
2. Task two
|
|
71
|
+
3. Task three
|
|
72
72
|
`,
|
|
73
73
|
maxDepth: 0
|
|
74
74
|
});
|
|
@@ -19,45 +19,45 @@ export function createResearchTasks(feature, techStack = []) {
|
|
|
19
19
|
{
|
|
20
20
|
name: 'best-practices-agent',
|
|
21
21
|
category: 'best-practices',
|
|
22
|
-
prompt: `Research best practices for implementing "${feature}" with ${stackStr}. Focus on:
|
|
23
|
-
1. Industry-standard patterns
|
|
24
|
-
2. Common pitfalls to avoid
|
|
25
|
-
3. Recommended libraries/tools
|
|
26
|
-
4. Testing strategies
|
|
27
|
-
|
|
22
|
+
prompt: `Research best practices for implementing "${feature}" with ${stackStr}. Focus on:
|
|
23
|
+
1. Industry-standard patterns
|
|
24
|
+
2. Common pitfalls to avoid
|
|
25
|
+
3. Recommended libraries/tools
|
|
26
|
+
4. Testing strategies
|
|
27
|
+
|
|
28
28
|
Provide actionable recommendations.`
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
name: 'framework-docs-agent',
|
|
32
32
|
category: 'framework-docs',
|
|
33
|
-
prompt: `Find the latest documentation for ${stackStr} related to "${feature}". Include:
|
|
34
|
-
1. Official API references
|
|
35
|
-
2. Configuration options
|
|
36
|
-
3. Migration guides if applicable
|
|
37
|
-
4. Code examples from official docs
|
|
38
|
-
|
|
33
|
+
prompt: `Find the latest documentation for ${stackStr} related to "${feature}". Include:
|
|
34
|
+
1. Official API references
|
|
35
|
+
2. Configuration options
|
|
36
|
+
3. Migration guides if applicable
|
|
37
|
+
4. Code examples from official docs
|
|
38
|
+
|
|
39
39
|
Use context7 MCP if available for up-to-date documentation.`
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
42
|
name: 'codebase-patterns-agent',
|
|
43
43
|
category: 'codebase-patterns',
|
|
44
|
-
prompt: `Analyze the current codebase for patterns related to "${feature}". Look for:
|
|
45
|
-
1. Similar existing implementations
|
|
46
|
-
2. Established conventions
|
|
47
|
-
3. Reusable utilities
|
|
48
|
-
4. Potential conflicts or dependencies
|
|
49
|
-
|
|
44
|
+
prompt: `Analyze the current codebase for patterns related to "${feature}". Look for:
|
|
45
|
+
1. Similar existing implementations
|
|
46
|
+
2. Established conventions
|
|
47
|
+
3. Reusable utilities
|
|
48
|
+
4. Potential conflicts or dependencies
|
|
49
|
+
|
|
50
50
|
Use Glob and Grep to search the codebase.`
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
53
|
name: 'security-advisory-agent',
|
|
54
54
|
category: 'security-advisory',
|
|
55
|
-
prompt: `Review security considerations for "${feature}" with ${stackStr}. Check:
|
|
56
|
-
1. OWASP Top 10 relevance
|
|
57
|
-
2. Authentication/authorization requirements
|
|
58
|
-
3. Data validation needs
|
|
59
|
-
4. Known vulnerabilities in dependencies
|
|
60
|
-
|
|
55
|
+
prompt: `Review security considerations for "${feature}" with ${stackStr}. Check:
|
|
56
|
+
1. OWASP Top 10 relevance
|
|
57
|
+
2. Authentication/authorization requirements
|
|
58
|
+
3. Data validation needs
|
|
59
|
+
4. Known vulnerabilities in dependencies
|
|
60
|
+
|
|
61
61
|
Provide security recommendations.`
|
|
62
62
|
}
|
|
63
63
|
];
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ToolResult, ToolDefinition } from '../../types/tool.js';
|
|
2
|
+
export declare const getUsageAnalyticsDefinition: ToolDefinition;
|
|
3
|
+
interface GetUsageAnalyticsArgs {
|
|
4
|
+
type?: 'memory' | 'graph' | 'all';
|
|
5
|
+
timeRange?: '1d' | '7d' | '30d' | 'all';
|
|
6
|
+
detailed?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function getUsageAnalytics(args: GetUsageAnalyticsArgs): Promise<ToolResult>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=getUsageAnalytics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getUsageAnalytics.d.ts","sourceRoot":"","sources":["../../../src/tools/analytics/getUsageAnalytics.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAc,MAAM,qBAAqB,CAAC;AAG7E,eAAO,MAAM,2BAA2B,EAAE,cA0CzC,CAAC;AAEF,UAAU,qBAAqB;IAC7B,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;IAClC,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,CAqCxF"}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
// v2.0 - Get usage analytics and telemetry
|
|
2
|
+
import { MemoryManager } from '../../lib/MemoryManager.js';
|
|
3
|
+
export const getUsageAnalyticsDefinition = {
|
|
4
|
+
name: 'get_usage_analytics',
|
|
5
|
+
description: `도구 사용 분석 및 통계를 조회합니다.
|
|
6
|
+
|
|
7
|
+
키워드: 분석, 통계, 사용량, analytics, statistics, usage
|
|
8
|
+
|
|
9
|
+
**제공 정보:**
|
|
10
|
+
- 메모리 사용 통계
|
|
11
|
+
- 카테고리별 분포
|
|
12
|
+
- 시간별 사용 패턴
|
|
13
|
+
- 그래프 관계 통계
|
|
14
|
+
|
|
15
|
+
사용 예시:
|
|
16
|
+
- "사용 통계 보여줘"
|
|
17
|
+
- "메모리 분석"`,
|
|
18
|
+
inputSchema: {
|
|
19
|
+
type: 'object',
|
|
20
|
+
properties: {
|
|
21
|
+
type: {
|
|
22
|
+
type: 'string',
|
|
23
|
+
description: '분석 유형',
|
|
24
|
+
enum: ['memory', 'graph', 'all']
|
|
25
|
+
},
|
|
26
|
+
timeRange: {
|
|
27
|
+
type: 'string',
|
|
28
|
+
description: '시간 범위',
|
|
29
|
+
enum: ['1d', '7d', '30d', 'all']
|
|
30
|
+
},
|
|
31
|
+
detailed: {
|
|
32
|
+
type: 'boolean',
|
|
33
|
+
description: '상세 정보 포함 여부 (기본값: false)'
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
annotations: {
|
|
38
|
+
title: 'Get Usage Analytics',
|
|
39
|
+
audience: ['user', 'assistant'],
|
|
40
|
+
readOnlyHint: true,
|
|
41
|
+
destructiveHint: false,
|
|
42
|
+
idempotentHint: true,
|
|
43
|
+
openWorldHint: false
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
export async function getUsageAnalytics(args) {
|
|
47
|
+
try {
|
|
48
|
+
const { type = 'all', timeRange = 'all', detailed = false } = args;
|
|
49
|
+
const memoryManager = MemoryManager.getInstance();
|
|
50
|
+
let output = '## Hi-AI 사용 분석\n\n';
|
|
51
|
+
// Memory statistics
|
|
52
|
+
if (type === 'memory' || type === 'all') {
|
|
53
|
+
output += await generateMemoryStats(memoryManager, timeRange, detailed);
|
|
54
|
+
}
|
|
55
|
+
// Graph statistics
|
|
56
|
+
if (type === 'graph' || type === 'all') {
|
|
57
|
+
output += await generateGraphStats(memoryManager, detailed);
|
|
58
|
+
}
|
|
59
|
+
// System info
|
|
60
|
+
output += `---\n### 시스템 정보\n\n`;
|
|
61
|
+
output += `- **Hi-AI 버전**: 2.0.0\n`;
|
|
62
|
+
output += `- **분석 시간**: ${new Date().toLocaleString('ko-KR')}\n`;
|
|
63
|
+
output += `- **시간 범위**: ${getTimeRangeLabel(timeRange)}\n`;
|
|
64
|
+
return {
|
|
65
|
+
content: [{
|
|
66
|
+
type: 'text',
|
|
67
|
+
text: output
|
|
68
|
+
}]
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
return {
|
|
73
|
+
content: [{
|
|
74
|
+
type: 'text',
|
|
75
|
+
text: `✗ 분석 오류: ${error instanceof Error ? error.message : '알 수 없는 오류'}`
|
|
76
|
+
}]
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async function generateMemoryStats(memoryManager, timeRange, detailed) {
|
|
81
|
+
const stats = memoryManager.getStats();
|
|
82
|
+
const allMemories = memoryManager.list();
|
|
83
|
+
let output = '### 메모리 통계\n\n';
|
|
84
|
+
output += `- **총 메모리 수**: ${stats.total}개\n`;
|
|
85
|
+
output += `- **카테고리 수**: ${Object.keys(stats.byCategory).length}개\n\n`;
|
|
86
|
+
// Category distribution
|
|
87
|
+
output += `#### 카테고리별 분포\n\n`;
|
|
88
|
+
const sortedCategories = Object.entries(stats.byCategory)
|
|
89
|
+
.sort((a, b) => b[1] - a[1]);
|
|
90
|
+
for (const [category, count] of sortedCategories) {
|
|
91
|
+
const percentage = ((count / stats.total) * 100).toFixed(1);
|
|
92
|
+
const bar = '█'.repeat(Math.round(count / stats.total * 20));
|
|
93
|
+
output += `- **${category}**: ${count}개 (${percentage}%) ${bar}\n`;
|
|
94
|
+
}
|
|
95
|
+
output += '\n';
|
|
96
|
+
// Time analysis
|
|
97
|
+
if (allMemories.length > 0) {
|
|
98
|
+
output += `#### 시간 분석\n\n`;
|
|
99
|
+
const now = new Date();
|
|
100
|
+
const filterDate = getFilterDate(timeRange);
|
|
101
|
+
const recentMemories = filterDate
|
|
102
|
+
? allMemories.filter(m => new Date(m.timestamp) >= filterDate)
|
|
103
|
+
: allMemories;
|
|
104
|
+
// Group by day
|
|
105
|
+
const byDay = {};
|
|
106
|
+
for (const memory of recentMemories) {
|
|
107
|
+
const day = memory.timestamp.substring(0, 10);
|
|
108
|
+
byDay[day] = (byDay[day] || 0) + 1;
|
|
109
|
+
}
|
|
110
|
+
const sortedDays = Object.entries(byDay)
|
|
111
|
+
.sort((a, b) => b[0].localeCompare(a[0]))
|
|
112
|
+
.slice(0, 7);
|
|
113
|
+
if (sortedDays.length > 0) {
|
|
114
|
+
output += `**최근 일별 활동**:\n`;
|
|
115
|
+
for (const [day, count] of sortedDays) {
|
|
116
|
+
const bar = '▓'.repeat(Math.min(count, 20));
|
|
117
|
+
output += `- ${day}: ${count}개 ${bar}\n`;
|
|
118
|
+
}
|
|
119
|
+
output += '\n';
|
|
120
|
+
}
|
|
121
|
+
// Priority distribution
|
|
122
|
+
const priorityCounts = {};
|
|
123
|
+
for (const memory of allMemories) {
|
|
124
|
+
const priority = memory.priority || 0;
|
|
125
|
+
priorityCounts[priority] = (priorityCounts[priority] || 0) + 1;
|
|
126
|
+
}
|
|
127
|
+
if (Object.keys(priorityCounts).length > 1) {
|
|
128
|
+
output += `**우선순위 분포**:\n`;
|
|
129
|
+
for (const [priority, count] of Object.entries(priorityCounts).sort((a, b) => Number(b[0]) - Number(a[0]))) {
|
|
130
|
+
output += `- 우선순위 ${priority}: ${count}개\n`;
|
|
131
|
+
}
|
|
132
|
+
output += '\n';
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// Detailed info
|
|
136
|
+
if (detailed && allMemories.length > 0) {
|
|
137
|
+
output += `#### 상세 정보\n\n`;
|
|
138
|
+
// Most recently accessed
|
|
139
|
+
const byAccess = [...allMemories]
|
|
140
|
+
.sort((a, b) => new Date(b.lastAccessed).getTime() - new Date(a.lastAccessed).getTime())
|
|
141
|
+
.slice(0, 5);
|
|
142
|
+
output += `**최근 접근한 메모리**:\n`;
|
|
143
|
+
for (const memory of byAccess) {
|
|
144
|
+
output += `- \`${memory.key}\` (${formatDate(memory.lastAccessed)})\n`;
|
|
145
|
+
}
|
|
146
|
+
output += '\n';
|
|
147
|
+
// Oldest memories
|
|
148
|
+
const oldest = [...allMemories]
|
|
149
|
+
.sort((a, b) => new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime())
|
|
150
|
+
.slice(0, 5);
|
|
151
|
+
output += `**가장 오래된 메모리**:\n`;
|
|
152
|
+
for (const memory of oldest) {
|
|
153
|
+
output += `- \`${memory.key}\` (${formatDate(memory.timestamp)})\n`;
|
|
154
|
+
}
|
|
155
|
+
output += '\n';
|
|
156
|
+
}
|
|
157
|
+
return output;
|
|
158
|
+
}
|
|
159
|
+
async function generateGraphStats(memoryManager, detailed) {
|
|
160
|
+
const graph = memoryManager.getMemoryGraph();
|
|
161
|
+
let output = '### 지식 그래프 통계\n\n';
|
|
162
|
+
output += `- **노드 수**: ${graph.nodes.length}개\n`;
|
|
163
|
+
output += `- **관계 수**: ${graph.edges.length}개\n`;
|
|
164
|
+
output += `- **클러스터 수**: ${graph.clusters.length}개\n\n`;
|
|
165
|
+
if (graph.edges.length > 0) {
|
|
166
|
+
// Relation type distribution
|
|
167
|
+
const relationTypes = {};
|
|
168
|
+
for (const edge of graph.edges) {
|
|
169
|
+
relationTypes[edge.relationType] = (relationTypes[edge.relationType] || 0) + 1;
|
|
170
|
+
}
|
|
171
|
+
output += `#### 관계 유형 분포\n\n`;
|
|
172
|
+
for (const [type, count] of Object.entries(relationTypes).sort((a, b) => b[1] - a[1])) {
|
|
173
|
+
output += `- **${type}**: ${count}개\n`;
|
|
174
|
+
}
|
|
175
|
+
output += '\n';
|
|
176
|
+
// Average connections per node
|
|
177
|
+
const avgConnections = (graph.edges.length * 2 / graph.nodes.length).toFixed(2);
|
|
178
|
+
output += `- **평균 연결 수**: ${avgConnections}개/노드\n`;
|
|
179
|
+
// Most connected nodes
|
|
180
|
+
const connectionCount = {};
|
|
181
|
+
for (const edge of graph.edges) {
|
|
182
|
+
connectionCount[edge.sourceKey] = (connectionCount[edge.sourceKey] || 0) + 1;
|
|
183
|
+
connectionCount[edge.targetKey] = (connectionCount[edge.targetKey] || 0) + 1;
|
|
184
|
+
}
|
|
185
|
+
const topConnected = Object.entries(connectionCount)
|
|
186
|
+
.sort((a, b) => b[1] - a[1])
|
|
187
|
+
.slice(0, 5);
|
|
188
|
+
if (topConnected.length > 0) {
|
|
189
|
+
output += `\n**가장 많이 연결된 노드**:\n`;
|
|
190
|
+
for (const [key, count] of topConnected) {
|
|
191
|
+
output += `- \`${key}\`: ${count}개 연결\n`;
|
|
192
|
+
}
|
|
193
|
+
output += '\n';
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
// Cluster info
|
|
197
|
+
if (graph.clusters.length > 0 && detailed) {
|
|
198
|
+
output += `#### 클러스터 상세\n\n`;
|
|
199
|
+
for (let i = 0; i < Math.min(graph.clusters.length, 5); i++) {
|
|
200
|
+
const cluster = graph.clusters[i];
|
|
201
|
+
output += `**클러스터 ${i + 1}** (${cluster.length}개 노드):\n`;
|
|
202
|
+
output += `- ${cluster.slice(0, 5).join(', ')}`;
|
|
203
|
+
if (cluster.length > 5) {
|
|
204
|
+
output += ` ... 외 ${cluster.length - 5}개`;
|
|
205
|
+
}
|
|
206
|
+
output += '\n';
|
|
207
|
+
}
|
|
208
|
+
output += '\n';
|
|
209
|
+
}
|
|
210
|
+
return output;
|
|
211
|
+
}
|
|
212
|
+
function getFilterDate(timeRange) {
|
|
213
|
+
const now = new Date();
|
|
214
|
+
switch (timeRange) {
|
|
215
|
+
case '1d':
|
|
216
|
+
return new Date(now.getTime() - 24 * 60 * 60 * 1000);
|
|
217
|
+
case '7d':
|
|
218
|
+
return new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);
|
|
219
|
+
case '30d':
|
|
220
|
+
return new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000);
|
|
221
|
+
default:
|
|
222
|
+
return null;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
function getTimeRangeLabel(timeRange) {
|
|
226
|
+
switch (timeRange) {
|
|
227
|
+
case '1d':
|
|
228
|
+
return '최근 24시간';
|
|
229
|
+
case '7d':
|
|
230
|
+
return '최근 7일';
|
|
231
|
+
case '30d':
|
|
232
|
+
return '최근 30일';
|
|
233
|
+
default:
|
|
234
|
+
return '전체';
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
function formatDate(dateString) {
|
|
238
|
+
try {
|
|
239
|
+
const date = new Date(dateString);
|
|
240
|
+
return date.toLocaleDateString('ko-KR');
|
|
241
|
+
}
|
|
242
|
+
catch { /* ignore: optional operation */
|
|
243
|
+
return dateString;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=getUsageAnalytics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getUsageAnalytics.js","sourceRoot":"","sources":["../../../src/tools/analytics/getUsageAnalytics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/analytics/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/analytics/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
|