@su-record/vibe 2.4.2 → 2.4.4
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/dist/orchestrator/parallelResearch.d.ts.map +1 -1
- package/dist/orchestrator/parallelResearch.js +31 -3
- package/dist/orchestrator/parallelResearch.js.map +1 -1
- 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/index.d.ts +10 -0
- package/dist/tools/convention/index.d.ts.map +1 -0
- package/dist/tools/convention/index.js +10 -0
- package/dist/tools/convention/index.js.map +1 -0
- package/dist/tools/memory/index.d.ts +19 -0
- package/dist/tools/memory/index.d.ts.map +1 -0
- package/dist/tools/memory/index.js +19 -0
- package/dist/tools/memory/index.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/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/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/semantic/index.d.ts +7 -0
- package/dist/tools/semantic/index.d.ts.map +1 -0
- package/dist/tools/semantic/index.js +7 -0
- package/dist/tools/semantic/index.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/time/index.d.ts +5 -0
- package/dist/tools/time/index.d.ts.map +1 -0
- package/dist/tools/time/index.js +5 -0
- package/dist/tools/time/index.js.map +1 -0
- package/dist/tools/ui/index.d.ts +5 -0
- package/dist/tools/ui/index.d.ts.map +1 -0
- package/dist/tools/ui/index.js +5 -0
- package/dist/tools/ui/index.js.map +1 -0
- package/hooks/hooks.json +14 -9
- package/package.json +11 -1
- package/skills/tool-fallback.md +70 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parallelResearch.d.ts","sourceRoot":"","sources":["../../src/orchestrator/parallelResearch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,oBAAoB,EAEpB,YAAY,EAGb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAiB9C;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,GAAE,MAAM,EAAO,GAAG,YAAY,EAAE,CAiD7F;
|
|
1
|
+
{"version":3,"file":"parallelResearch.d.ts","sourceRoot":"","sources":["../../src/orchestrator/parallelResearch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,oBAAoB,EAEpB,YAAY,EAGb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAiB9C;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,GAAE,MAAM,EAAO,GAAG,YAAY,EAAE,CAiD7F;AA4HD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,CAwEtF;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAAM,EAAO,EACxB,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC,UAAU,CAAC,CAGrB"}
|
|
@@ -68,6 +68,30 @@ Provide security recommendations.`
|
|
|
68
68
|
}
|
|
69
69
|
];
|
|
70
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* 에이전트 파일 로드
|
|
73
|
+
*/
|
|
74
|
+
async function loadAgentFile(agentName, projectPath) {
|
|
75
|
+
const { promises: fs } = await import('fs');
|
|
76
|
+
const path = await import('path');
|
|
77
|
+
// 에이전트 파일 경로 우선순위
|
|
78
|
+
const possiblePaths = [
|
|
79
|
+
path.join(projectPath, '.claude', 'agents', 'research', `${agentName}.md`),
|
|
80
|
+
path.join(projectPath, 'agents', 'research', `${agentName}.md`),
|
|
81
|
+
// 패키지 내장 에이전트 (fallback)
|
|
82
|
+
path.join(process.cwd(), 'agents', 'research', `${agentName}.md`)
|
|
83
|
+
];
|
|
84
|
+
for (const filePath of possiblePaths) {
|
|
85
|
+
try {
|
|
86
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
87
|
+
return content;
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
// 다음 경로 시도
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
71
95
|
/**
|
|
72
96
|
* 단일 리서치 태스크 실행
|
|
73
97
|
*/
|
|
@@ -87,14 +111,18 @@ async function executeResearchTask(task, projectPath, timeout) {
|
|
|
87
111
|
try {
|
|
88
112
|
let sessionId = '';
|
|
89
113
|
let result = '';
|
|
114
|
+
// 에이전트 파일 로드 (systemPrompt로 사용)
|
|
115
|
+
const agentContent = await loadAgentFile(task.name, projectPath);
|
|
90
116
|
// Agent SDK query 실행
|
|
91
117
|
const response = query({
|
|
92
118
|
prompt: task.prompt,
|
|
93
119
|
options: {
|
|
94
|
-
model: 'claude-haiku-
|
|
120
|
+
model: 'claude-haiku-4-5-20251001', // 리서치는 빠른 모델 사용 (Haiku 4.5)
|
|
95
121
|
maxTurns: 3,
|
|
96
122
|
allowedTools: ['Read', 'Glob', 'Grep', 'WebFetch', 'WebSearch'],
|
|
97
|
-
cwd: projectPath
|
|
123
|
+
cwd: projectPath,
|
|
124
|
+
// 에이전트 파일을 systemPrompt로 전달
|
|
125
|
+
systemPrompt: agentContent || undefined
|
|
98
126
|
}
|
|
99
127
|
});
|
|
100
128
|
// 타임아웃 처리
|
|
@@ -146,7 +174,7 @@ async function executeResearchTask(task, projectPath, timeout) {
|
|
|
146
174
|
* 병렬 리서치 실행
|
|
147
175
|
*/
|
|
148
176
|
export async function parallelResearch(args) {
|
|
149
|
-
const { tasks, projectPath = process.cwd(), maxConcurrency = 4, timeout =
|
|
177
|
+
const { tasks, projectPath = process.cwd(), maxConcurrency = 4, timeout = 180000 // 3분 기본 타임아웃 (WebSearch 포함)
|
|
150
178
|
} = args;
|
|
151
179
|
const startTime = Date.now();
|
|
152
180
|
const results = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parallelResearch.js","sourceRoot":"","sources":["../../src/orchestrator/parallelResearch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,uCAAuC;AACvC,IAAI,aAAa,GAAiE,IAAI,CAAC;AAEvF,KAAK,UAAU,gBAAgB;IAC7B,IAAI,aAAa;QAAE,OAAO,aAAa,CAAC;IAExC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;QAC3D,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC;QAC1B,OAAO,aAAa,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe,EAAE,YAAsB,EAAE;IAC3E,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;IAE7E,OAAO;QACL;YACE,IAAI,EAAE,sBAAsB;YAC5B,QAAQ,EAAE,gBAAgB;YAC1B,MAAM,EAAE,6CAA6C,OAAO,UAAU,QAAQ;;;;;;oCAMhD;SAC/B;QACD;YACE,IAAI,EAAE,sBAAsB;YAC5B,QAAQ,EAAE,gBAAgB;YAC1B,MAAM,EAAE,qCAAqC,QAAQ,gBAAgB,OAAO;;;;;;4DAMtB;SACvD;QACD;YACE,IAAI,EAAE,yBAAyB;YAC/B,QAAQ,EAAE,mBAAmB;YAC7B,MAAM,EAAE,yDAAyD,OAAO;;;;;;0CAMpC;SACrC;QACD;YACE,IAAI,EAAE,yBAAyB;YAC/B,QAAQ,EAAE,mBAAmB;YAC7B,MAAM,EAAE,uCAAuC,OAAO,UAAU,QAAQ;;;;;;kCAM5C;SAC7B;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAChC,IAAkB,EAClB,WAAmB,EACnB,OAAe;IAEf,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,MAAM,KAAK,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAEvC,6BAA6B;IAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,IAAI;YACpB,SAAS,EAAE,aAAa,IAAI,CAAC,GAAG,EAAE,EAAE;YACpC,MAAM,EAAE,mCAAmC,IAAI,CAAC,IAAI,oBAAoB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK;YACtG,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACjC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,qBAAqB;QACrB,MAAM,QAAQ,GAAG,KAAK,CAAC;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE;gBACP,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"parallelResearch.js","sourceRoot":"","sources":["../../src/orchestrator/parallelResearch.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"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [],
|
|
4
|
+
"deny": [],
|
|
5
|
+
"ask": []
|
|
6
|
+
},
|
|
2
7
|
"hooks": {
|
|
3
8
|
"SessionStart": [
|
|
4
9
|
{
|
|
5
10
|
"hooks": [
|
|
6
11
|
{
|
|
7
12
|
"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))\""
|
|
13
|
+
"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
14
|
}
|
|
10
15
|
]
|
|
11
16
|
}
|
|
@@ -27,7 +32,7 @@
|
|
|
27
32
|
"hooks": [
|
|
28
33
|
{
|
|
29
34
|
"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.'))\""
|
|
35
|
+
"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
36
|
}
|
|
32
37
|
]
|
|
33
38
|
}
|
|
@@ -56,7 +61,7 @@
|
|
|
56
61
|
"hooks": [
|
|
57
62
|
{
|
|
58
63
|
"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'))\""
|
|
64
|
+
"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
65
|
}
|
|
61
66
|
]
|
|
62
67
|
},
|
|
@@ -65,7 +70,7 @@
|
|
|
65
70
|
"hooks": [
|
|
66
71
|
{
|
|
67
72
|
"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'))\""
|
|
73
|
+
"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
74
|
}
|
|
70
75
|
]
|
|
71
76
|
},
|
|
@@ -83,7 +88,7 @@
|
|
|
83
88
|
"hooks": [
|
|
84
89
|
{
|
|
85
90
|
"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'))\""
|
|
91
|
+
"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
92
|
}
|
|
88
93
|
]
|
|
89
94
|
},
|
|
@@ -92,7 +97,7 @@
|
|
|
92
97
|
"hooks": [
|
|
93
98
|
{
|
|
94
99
|
"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'))\""
|
|
100
|
+
"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
101
|
}
|
|
97
102
|
]
|
|
98
103
|
},
|
|
@@ -157,7 +162,7 @@
|
|
|
157
162
|
"hooks": [
|
|
158
163
|
{
|
|
159
164
|
"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)))\""
|
|
165
|
+
"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
166
|
}
|
|
162
167
|
]
|
|
163
168
|
},
|
|
@@ -166,7 +171,7 @@
|
|
|
166
171
|
"hooks": [
|
|
167
172
|
{
|
|
168
173
|
"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)))\""
|
|
174
|
+
"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
175
|
}
|
|
171
176
|
]
|
|
172
177
|
},
|
|
@@ -175,7 +180,7 @@
|
|
|
175
180
|
"hooks": [
|
|
176
181
|
{
|
|
177
182
|
"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)))\""
|
|
183
|
+
"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
184
|
}
|
|
180
185
|
]
|
|
181
186
|
}
|
package/package.json
CHANGED
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@su-record/vibe",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.4",
|
|
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": {
|
package/skills/tool-fallback.md
CHANGED
|
@@ -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 | `
|
|
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
|
-
|
|
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
|
|
31
|
-
| 5xx | Server Error | Switch to alternative
|
|
32
|
-
| 529 | Overloaded | Wait and retry
|
|
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
|
-
```
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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. **
|
|
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
|