@su-record/vibe 2.4.2 → 2.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/tools/analytics/index.d.ts +5 -0
  2. package/dist/tools/analytics/index.d.ts.map +1 -0
  3. package/dist/tools/analytics/index.js +5 -0
  4. package/dist/tools/analytics/index.js.map +1 -0
  5. package/dist/tools/convention/index.d.ts +10 -0
  6. package/dist/tools/convention/index.d.ts.map +1 -0
  7. package/dist/tools/convention/index.js +10 -0
  8. package/dist/tools/convention/index.js.map +1 -0
  9. package/dist/tools/memory/index.d.ts +19 -0
  10. package/dist/tools/memory/index.d.ts.map +1 -0
  11. package/dist/tools/memory/index.js +19 -0
  12. package/dist/tools/memory/index.js.map +1 -0
  13. package/dist/tools/planning/index.d.ts +8 -0
  14. package/dist/tools/planning/index.d.ts.map +1 -0
  15. package/dist/tools/planning/index.js +8 -0
  16. package/dist/tools/planning/index.js.map +1 -0
  17. package/dist/tools/prompt/index.d.ts +7 -0
  18. package/dist/tools/prompt/index.d.ts.map +1 -0
  19. package/dist/tools/prompt/index.js +7 -0
  20. package/dist/tools/prompt/index.js.map +1 -0
  21. package/dist/tools/reasoning/index.d.ts +5 -0
  22. package/dist/tools/reasoning/index.d.ts.map +1 -0
  23. package/dist/tools/reasoning/index.js +5 -0
  24. package/dist/tools/reasoning/index.js.map +1 -0
  25. package/dist/tools/semantic/index.d.ts +7 -0
  26. package/dist/tools/semantic/index.d.ts.map +1 -0
  27. package/dist/tools/semantic/index.js +7 -0
  28. package/dist/tools/semantic/index.js.map +1 -0
  29. package/dist/tools/thinking/index.d.ts +10 -0
  30. package/dist/tools/thinking/index.d.ts.map +1 -0
  31. package/dist/tools/thinking/index.js +10 -0
  32. package/dist/tools/thinking/index.js.map +1 -0
  33. package/dist/tools/time/index.d.ts +5 -0
  34. package/dist/tools/time/index.d.ts.map +1 -0
  35. package/dist/tools/time/index.js +5 -0
  36. package/dist/tools/time/index.js.map +1 -0
  37. package/dist/tools/ui/index.d.ts +5 -0
  38. package/dist/tools/ui/index.d.ts.map +1 -0
  39. package/dist/tools/ui/index.js +5 -0
  40. package/dist/tools/ui/index.js.map +1 -0
  41. package/hooks/hooks.json +9 -9
  42. package/package.json +11 -1
  43. package/skills/tool-fallback.md +70 -17
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Analytics Tools - 사용 분석
3
+ */
4
+ export { getUsageAnalytics } from './getUsageAnalytics.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -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,5 @@
1
+ /**
2
+ * Analytics Tools - 사용 분석
3
+ */
4
+ export { getUsageAnalytics } from './getUsageAnalytics.js';
5
+ //# sourceMappingURL=index.js.map
@@ -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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Convention Tools - 코드 품질 및 규칙 검증
3
+ */
4
+ export { analyzeComplexity } from './analyzeComplexity.js';
5
+ export { validateCodeQuality } from './validateCodeQuality.js';
6
+ export { checkCouplingCohesion } from './checkCouplingCohesion.js';
7
+ export { suggestImprovements } from './suggestImprovements.js';
8
+ export { applyQualityRules } from './applyQualityRules.js';
9
+ export { getCodingGuide } from './getCodingGuide.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/convention/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Convention Tools - 코드 품질 및 규칙 검증
3
+ */
4
+ export { analyzeComplexity } from './analyzeComplexity.js';
5
+ export { validateCodeQuality } from './validateCodeQuality.js';
6
+ export { checkCouplingCohesion } from './checkCouplingCohesion.js';
7
+ export { suggestImprovements } from './suggestImprovements.js';
8
+ export { applyQualityRules } from './applyQualityRules.js';
9
+ export { getCodingGuide } from './getCodingGuide.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/convention/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Memory Tools - 세션 및 메모리 관리
3
+ */
4
+ export { startSession } from './startSession.js';
5
+ export { autoSaveContext } from './autoSaveContext.js';
6
+ export { saveMemory } from './saveMemory.js';
7
+ export { recallMemory } from './recallMemory.js';
8
+ export { listMemories } from './listMemories.js';
9
+ export { deleteMemory } from './deleteMemory.js';
10
+ export { updateMemory } from './updateMemory.js';
11
+ export { searchMemoriesHandler as searchMemories } from './searchMemories.js';
12
+ export { searchMemoriesAdvanced } from './searchMemoriesAdvanced.js';
13
+ export { linkMemories } from './linkMemories.js';
14
+ export { getMemoryGraph } from './getMemoryGraph.js';
15
+ export { createMemoryTimeline } from './createMemoryTimeline.js';
16
+ export { restoreSessionContext } from './restoreSessionContext.js';
17
+ export { prioritizeMemory } from './prioritizeMemory.js';
18
+ export { getSessionContext } from './getSessionContext.js';
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/memory/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,qBAAqB,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Memory Tools - 세션 및 메모리 관리
3
+ */
4
+ export { startSession } from './startSession.js';
5
+ export { autoSaveContext } from './autoSaveContext.js';
6
+ export { saveMemory } from './saveMemory.js';
7
+ export { recallMemory } from './recallMemory.js';
8
+ export { listMemories } from './listMemories.js';
9
+ export { deleteMemory } from './deleteMemory.js';
10
+ export { updateMemory } from './updateMemory.js';
11
+ export { searchMemoriesHandler as searchMemories } from './searchMemories.js';
12
+ export { searchMemoriesAdvanced } from './searchMemoriesAdvanced.js';
13
+ export { linkMemories } from './linkMemories.js';
14
+ export { getMemoryGraph } from './getMemoryGraph.js';
15
+ export { createMemoryTimeline } from './createMemoryTimeline.js';
16
+ export { restoreSessionContext } from './restoreSessionContext.js';
17
+ export { prioritizeMemory } from './prioritizeMemory.js';
18
+ export { getSessionContext } from './getSessionContext.js';
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/memory/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,qBAAqB,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Planning Tools - 요구사항 분석 및 로드맵
3
+ */
4
+ export { generatePrd } from './generatePrd.js';
5
+ export { createUserStories } from './createUserStories.js';
6
+ export { analyzeRequirements } from './analyzeRequirements.js';
7
+ export { featureRoadmap } from './featureRoadmap.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/planning/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Planning Tools - 요구사항 분석 및 로드맵
3
+ */
4
+ export { generatePrd } from './generatePrd.js';
5
+ export { createUserStories } from './createUserStories.js';
6
+ export { analyzeRequirements } from './analyzeRequirements.js';
7
+ export { featureRoadmap } from './featureRoadmap.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/planning/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Prompt Tools - 프롬프트 분석 및 개선
3
+ */
4
+ export { enhancePrompt } from './enhancePrompt.js';
5
+ export { analyzePrompt } from './analyzePrompt.js';
6
+ export { enhancePromptGemini } from './enhancePromptGemini.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/prompt/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Prompt Tools - 프롬프트 분석 및 개선
3
+ */
4
+ export { enhancePrompt } from './enhancePrompt.js';
5
+ export { analyzePrompt } from './analyzePrompt.js';
6
+ export { enhancePromptGemini } from './enhancePromptGemini.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/prompt/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Reasoning Tools - 체계적 추론
3
+ */
4
+ export { applyReasoningFramework } from './applyReasoningFramework.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/reasoning/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Reasoning Tools - 체계적 추론
3
+ */
4
+ export { applyReasoningFramework } from './applyReasoningFramework.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/reasoning/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Semantic Tools - 코드 분석 및 심볼 탐색
3
+ */
4
+ export { findSymbol } from './findSymbol.js';
5
+ export { findReferences } from './findReferences.js';
6
+ export { analyzeDependencyGraph } from './analyzeDependencyGraph.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/semantic/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Semantic Tools - 코드 분석 및 심볼 탐색
3
+ */
4
+ export { findSymbol } from './findSymbol.js';
5
+ export { findReferences } from './findReferences.js';
6
+ export { analyzeDependencyGraph } from './analyzeDependencyGraph.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/semantic/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Thinking Tools - 사고 체인 및 문제 분석
3
+ */
4
+ export { createThinkingChain } from './createThinkingChain.js';
5
+ export { analyzeProblem } from './analyzeProblem.js';
6
+ export { stepByStepAnalysis } from './stepByStepAnalysis.js';
7
+ export { formatAsPlan } from './formatAsPlan.js';
8
+ export { breakDownProblem } from './breakDownProblem.js';
9
+ export { thinkAloudProcess } from './thinkAloudProcess.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/thinking/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Thinking Tools - 사고 체인 및 문제 분석
3
+ */
4
+ export { createThinkingChain } from './createThinkingChain.js';
5
+ export { analyzeProblem } from './analyzeProblem.js';
6
+ export { stepByStepAnalysis } from './stepByStepAnalysis.js';
7
+ export { formatAsPlan } from './formatAsPlan.js';
8
+ export { breakDownProblem } from './breakDownProblem.js';
9
+ export { thinkAloudProcess } from './thinkAloudProcess.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/thinking/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Time Tools - 시간 관련
3
+ */
4
+ export { getCurrentTime } from './getCurrentTime.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/time/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Time Tools - 시간 관련
3
+ */
4
+ export { getCurrentTime } from './getCurrentTime.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/time/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * UI Tools - UI 미리보기
3
+ */
4
+ export { previewUiAscii } from './previewUiAscii.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/ui/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * UI Tools - UI 미리보기
3
+ */
4
+ export { previewUiAscii } from './previewUiAscii.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/ui/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
package/hooks/hooks.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "hooks": [
6
6
  {
7
7
  "type": "command",
8
- "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';Promise.all([import('@su-record/vibe/tools').then(t => t.startSession({projectPath: p})), import('@su-record/vibe/tools').then(t => t.getCurrentTime({format: 'human', timezone: 'Asia/Seoul'})), import('@su-record/vibe/tools').then(t => t.listMemories({limit: 5, projectPath: p}))]).then(([session, time, memories]) => console.log(session.content[0].text + '\\n\\n' + time.content[0].text + '\\n\\n[Recent Memories]\\n' + memories.content[0].text))\""
8
+ "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';Promise.all([import('@su-record/vibe/tools/memory').then(t => t.startSession({projectPath: p})), import('@su-record/vibe/tools/time').then(t => t.getCurrentTime({format: 'human', timezone: 'Asia/Seoul'})), import('@su-record/vibe/tools/memory').then(t => t.listMemories({limit: 5, projectPath: p}))]).then(([session, time, memories]) => console.log(session.content[0].text + '\\n\\n' + time.content[0].text + '\\n\\n[Recent Memories]\\n' + memories.content[0].text))\""
9
9
  }
10
10
  ]
11
11
  }
@@ -27,7 +27,7 @@
27
27
  "hooks": [
28
28
  {
29
29
  "type": "command",
30
- "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools').then(t => t.validateCodeQuality({targetPath: '.', projectPath: p}).then(r => console.log('[CODE CHECK]', r.content[0].text.split('\\n').slice(0,3).join(' | ')))).catch(() => console.log('[AUTO-CONTINUE] Code written. Continue.'))\""
30
+ "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools/convention').then(t => t.validateCodeQuality({targetPath: '.', projectPath: p}).then(r => console.log('[CODE CHECK]', r.content[0].text.split('\\n').slice(0,3).join(' | ')))).catch(() => console.log('[AUTO-CONTINUE] Code written. Continue.'))\""
31
31
  }
32
32
  ]
33
33
  }
@@ -56,7 +56,7 @@
56
56
  "hooks": [
57
57
  {
58
58
  "type": "command",
59
- "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools').then(t => t.saveMemory({key: 'solution-' + Date.now(), value: 'Solution documented at ' + new Date().toISOString(), category: 'solution', projectPath: p}).then(r => console.log('[COMPOUND]', r.content[0].text))).catch(() => console.log('[COMPOUND TRIGGER] Consider /vibe.utils --compound'))\""
59
+ "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools/memory').then(t => t.saveMemory({key: 'solution-' + Date.now(), value: 'Solution documented at ' + new Date().toISOString(), category: 'solution', projectPath: p}).then(r => console.log('[COMPOUND]', r.content[0].text))).catch(() => console.log('[COMPOUND TRIGGER] Consider /vibe.utils --compound'))\""
60
60
  }
61
61
  ]
62
62
  },
@@ -65,7 +65,7 @@
65
65
  "hooks": [
66
66
  {
67
67
  "type": "command",
68
- "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools').then(t => t.validateCodeQuality({targetPath: '.', projectPath: p}).then(r => console.log('[REVIEW PREP]', r.content[0].text.split('\\n').slice(0,5).join(' | ')))).catch(() => console.log('[REVIEW MODE] Use /vibe.review'))\""
68
+ "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools/convention').then(t => t.validateCodeQuality({targetPath: '.', projectPath: p}).then(r => console.log('[REVIEW PREP]', r.content[0].text.split('\\n').slice(0,5).join(' | ')))).catch(() => console.log('[REVIEW MODE] Use /vibe.review'))\""
69
69
  }
70
70
  ]
71
71
  },
@@ -83,7 +83,7 @@
83
83
  "hooks": [
84
84
  {
85
85
  "type": "command",
86
- "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools').then(t => t.analyzeComplexity({targetPath: '.', projectPath: p}).then(r => console.log('[COMPLEXITY]', r.content[0].text.split('\\n').slice(0,5).join(' | ')))).catch(() => console.log('[ANALYZE] Use analyzeComplexity tool'))\""
86
+ "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools/convention').then(t => t.analyzeComplexity({targetPath: '.', projectPath: p}).then(r => console.log('[COMPLEXITY]', r.content[0].text.split('\\n').slice(0,5).join(' | ')))).catch(() => console.log('[ANALYZE] Use analyzeComplexity tool'))\""
87
87
  }
88
88
  ]
89
89
  },
@@ -92,7 +92,7 @@
92
92
  "hooks": [
93
93
  {
94
94
  "type": "command",
95
- "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools').then(t => t.listMemories({limit: 10, projectPath: p}).then(r => console.log('[RECALL]', r.content[0].text.split('\\n').slice(0,7).join(' | ')))).catch(() => console.log('[RECALL] Use recallMemory tool'))\""
95
+ "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools/memory').then(t => t.listMemories({limit: 10, projectPath: p}).then(r => console.log('[RECALL]', r.content[0].text.split('\\n').slice(0,7).join(' | ')))).catch(() => console.log('[RECALL] Use recallMemory tool'))\""
96
96
  }
97
97
  ]
98
98
  },
@@ -157,7 +157,7 @@
157
157
  "hooks": [
158
158
  {
159
159
  "type": "command",
160
- "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools').then(t => t.autoSaveContext({urgency: 'medium', contextType: 'progress', summary: 'Context at 80% - auto checkpoint', projectPath: p}).then(r => console.log('[CONTEXT 80%]', r.content[0].text)))\""
160
+ "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools/memory').then(t => t.autoSaveContext({urgency: 'medium', contextType: 'progress', summary: 'Context at 80% - auto checkpoint', projectPath: p}).then(r => console.log('[CONTEXT 80%]', r.content[0].text)))\""
161
161
  }
162
162
  ]
163
163
  },
@@ -166,7 +166,7 @@
166
166
  "hooks": [
167
167
  {
168
168
  "type": "command",
169
- "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools').then(t => t.autoSaveContext({urgency: 'high', contextType: 'progress', summary: 'Context at 90% - save before overflow', projectPath: p}).then(r => console.log('[CONTEXT 90%]', r.content[0].text)))\""
169
+ "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools/memory').then(t => t.autoSaveContext({urgency: 'high', contextType: 'progress', summary: 'Context at 90% - save before overflow', projectPath: p}).then(r => console.log('[CONTEXT 90%]', r.content[0].text)))\""
170
170
  }
171
171
  ]
172
172
  },
@@ -175,7 +175,7 @@
175
175
  "hooks": [
176
176
  {
177
177
  "type": "command",
178
- "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools').then(t => t.autoSaveContext({urgency: 'critical', contextType: 'progress', summary: 'Context at 95% - CRITICAL save before session end', projectPath: p}).then(r => console.log('[CONTEXT 95%]', r.content[0].text)))\""
178
+ "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools/memory').then(t => t.autoSaveContext({urgency: 'critical', contextType: 'progress', summary: 'Context at 95% - CRITICAL save before session end', projectPath: p}).then(r => console.log('[CONTEXT 95%]', r.content[0].text)))\""
179
179
  }
180
180
  ]
181
181
  }
package/package.json CHANGED
@@ -1,12 +1,22 @@
1
1
  {
2
2
  "name": "@su-record/vibe",
3
- "version": "2.4.2",
3
+ "version": "2.4.3",
4
4
  "description": "Vibe - Claude Code exclusive SPEC-driven AI coding framework with 35+ integrated tools",
5
5
  "type": "module",
6
6
  "main": "dist/cli/index.js",
7
7
  "exports": {
8
8
  ".": "./dist/cli/index.js",
9
9
  "./tools": "./dist/tools/index.js",
10
+ "./tools/memory": "./dist/tools/memory/index.js",
11
+ "./tools/convention": "./dist/tools/convention/index.js",
12
+ "./tools/semantic": "./dist/tools/semantic/index.js",
13
+ "./tools/thinking": "./dist/tools/thinking/index.js",
14
+ "./tools/planning": "./dist/tools/planning/index.js",
15
+ "./tools/prompt": "./dist/tools/prompt/index.js",
16
+ "./tools/ui": "./dist/tools/ui/index.js",
17
+ "./tools/time": "./dist/tools/time/index.js",
18
+ "./tools/reasoning": "./dist/tools/reasoning/index.js",
19
+ "./tools/analytics": "./dist/tools/analytics/index.js",
10
20
  "./orchestrator": "./dist/orchestrator/index.js"
11
21
  },
12
22
  "bin": {
@@ -1,22 +1,55 @@
1
1
  ---
2
- description: Tool failure fallback strategies. Auto-activates on API errors, search failures, timeouts, 429, 5xx, overloaded errors.
2
+ description: Tool failure fallback strategies with circuit breaker. Auto-activates on API errors, search failures, timeouts, 429, 5xx, overloaded errors.
3
3
  ---
4
4
  # Tool Fallback Strategies
5
5
 
6
6
  Guide for finding alternatives when tools fail to continue work.
7
7
 
8
+ ## Circuit Breaker Pattern
9
+
10
+ Track tool failures and temporarily disable unreliable tools:
11
+
12
+ ```
13
+ Tool State Machine:
14
+ ┌─────────┐ 3 failures ┌─────────┐ 30s cooldown ┌─────────────┐
15
+ │ CLOSED │ ─────────────→ │ OPEN │ ───────────────→ │ HALF-OPEN │
16
+ │ (normal)│ │ (block) │ │ (test 1 req)│
17
+ └─────────┘ └─────────┘ └─────────────┘
18
+ ↑ │
19
+ │ success │
20
+ └────────────────────────────────────────────────────────┘
21
+ ```
22
+
23
+ | State | Behavior |
24
+ |-------|----------|
25
+ | **CLOSED** | Normal operation, count failures |
26
+ | **OPEN** | Block all requests, use alternative immediately |
27
+ | **HALF-OPEN** | Allow 1 test request after cooldown |
28
+
29
+ **Per-tool tracking:**
30
+ ```
31
+ vibe-gpt: failures=2, state=CLOSED
32
+ vibe-gemini: failures=0, state=CLOSED
33
+ WebSearch: failures=3, state=OPEN (blocked until 14:32:00)
34
+ context7: failures=1, state=CLOSED
35
+ ```
36
+
8
37
  ## When Web Search Fails
9
38
 
10
39
  | Alternative | Method |
11
40
  |-------------|--------|
12
- | context7 MCP | `mcp__context7__get-library-docs` |
41
+ | context7 MCP | `mcp__context7__query-docs` |
13
42
  | vibe-gpt | `mcp__vibe-gpt__gpt_chat` |
14
43
  | Cached knowledge | Use Claude's built-in knowledge |
15
44
 
16
45
  ```
17
46
  Web Search fails (429, 529, timeout)
18
47
 
19
- Try context7 for library docs
48
+ Check circuit breaker state
49
+
50
+ If OPEN → Skip to alternative immediately
51
+
52
+ If CLOSED → Try context7 for library docs
20
53
 
21
54
  If still fails, ask GPT
22
55
 
@@ -25,12 +58,13 @@ Last resort: Claude's built-in knowledge
25
58
 
26
59
  ## API Error Responses
27
60
 
28
- | Error | Cause | Response |
29
- |-------|-------|----------|
30
- | 429 | Rate Limit | Exponential backoff retry (2-4-8s) |
31
- | 5xx | Server Error | Switch to alternative tool |
32
- | 529 | Overloaded | Wait and retry or use alternative |
33
- | Timeout | Network | Split request or retry |
61
+ | Error | Cause | Response | Circuit Breaker |
62
+ |-------|-------|----------|-----------------|
63
+ | 429 | Rate Limit | Exponential backoff | +1 failure count |
64
+ | 5xx | Server Error | Switch to alternative | +1 failure count |
65
+ | 529 | Overloaded | Wait and retry | +1 failure count |
66
+ | Timeout | Network | Split request or retry | +1 failure count |
67
+ | 401/403 | Auth Error | Re-auth or alternative | Don't count (auth issue) |
34
68
 
35
69
  ## When File/Code Not Found
36
70
 
@@ -49,6 +83,8 @@ Check git log for history
49
83
  ```
50
84
  vibe-gpt fails
51
85
 
86
+ Check circuit: If OPEN, skip to next
87
+
52
88
  Try vibe-gemini (similar capability)
53
89
 
54
90
  Try context7 (for docs)
@@ -56,18 +92,35 @@ Try context7 (for docs)
56
92
  Claude solves alone
57
93
  ```
58
94
 
59
- ## Retry Strategy
95
+ ## Retry Strategy with Circuit Breaker
60
96
 
61
- ```typescript
62
- // Exponential backoff
63
- retry(1): wait 2s
64
- retry(2): wait 4s
65
- retry(3): wait 8s
66
- retry(4): give up use alternative
97
+ ```
98
+ Request to tool
99
+
100
+ Check circuit state
101
+
102
+ ┌─ OPEN? ──→ Use alternative immediately (no retry)
103
+
104
+ └─ CLOSED/HALF-OPEN? ──→ Try request
105
+
106
+ Success? ──→ Reset failure count
107
+ ↓ No
108
+ Retry with backoff:
109
+ retry(1): wait 2s
110
+ retry(2): wait 4s
111
+ retry(3): wait 8s
112
+
113
+ All failed? ──→ +1 failure, check threshold
114
+
115
+ failures >= 3? ──→ OPEN circuit for 30s
116
+
117
+ Use alternative
67
118
  ```
68
119
 
69
120
  ## Principles
70
121
 
71
122
  1. **Never stop** - Always find an alternative
72
123
  2. **Before asking user** - Try alternatives first
73
- 3. **Log failures** - Prevent same failure later
124
+ 3. **Track failures** - Open circuit after 3 consecutive failures
125
+ 4. **Auto-recover** - Test after 30s cooldown
126
+ 5. **Fail fast** - Skip blocked tools immediately