@su-record/vibe 2.5.7 → 2.5.8
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 +338 -338
- package/LICENSE +21 -21
- package/README.md +262 -262
- package/agents/build-error-resolver.md +115 -0
- package/agents/compounder.md +261 -261
- package/agents/diagrammer.md +178 -178
- package/agents/e2e-tester.md +266 -266
- package/agents/explorer.md +48 -48
- package/agents/implementer.md +54 -54
- package/agents/refactor-cleaner.md +143 -0
- package/agents/research/best-practices-agent.md +189 -189
- package/agents/research/codebase-patterns-agent.md +147 -147
- package/agents/research/framework-docs-agent.md +178 -178
- package/agents/research/security-advisory-agent.md +203 -203
- 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 +129 -129
- package/commands/vibe.analyze.md +356 -356
- package/commands/vibe.reason.md +329 -329
- package/commands/vibe.review.md +326 -326
- package/commands/vibe.run.md +1031 -1031
- package/commands/vibe.spec.md +1022 -1022
- package/commands/vibe.utils.md +296 -202
- package/commands/vibe.verify.md +375 -375
- package/dist/cli/collaborator.js +52 -52
- package/dist/cli/detect.js +32 -32
- 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/lib/PythonParser.js +108 -108
- 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 +20 -20
- package/dist/lib/memory/MemoryStorage.js +64 -64
- 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/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 +204 -195
- package/hooks/scripts/code-check.js +22 -22
- 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 +33 -33
- package/hooks/scripts/llm-orchestrate.js +171 -171
- package/hooks/scripts/post-edit.js +97 -0
- package/hooks/scripts/recall.js +22 -22
- package/hooks/scripts/session-start.js +30 -30
- package/hooks/scripts/utils.js +97 -65
- 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 +83 -83
- package/skills/context7-usage.md +102 -102
- package/skills/git-worktree.md +181 -181
- package/skills/parallel-research.md +77 -77
- package/skills/priority-todos.md +239 -239
- 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 -369
- 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
package/skills/tool-fallback.md
CHANGED
|
@@ -1,190 +1,190 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Tool failure fallback strategies with circuit breaker. Auto-activates on API errors, search failures, timeouts, 429, 5xx, overloaded errors.
|
|
3
|
-
---
|
|
4
|
-
# Tool Fallback Strategies
|
|
5
|
-
|
|
6
|
-
Guide for finding alternatives when tools fail to continue work.
|
|
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
|
-
GPT hook: failures=2, state=CLOSED
|
|
32
|
-
Gemini hook: failures=0, state=CLOSED
|
|
33
|
-
WebSearch: failures=3, state=OPEN (blocked until 14:32:00)
|
|
34
|
-
context7: failures=1, state=CLOSED
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## When Web Search Fails
|
|
38
|
-
|
|
39
|
-
| Alternative | Method |
|
|
40
|
-
|-------------|--------|
|
|
41
|
-
| context7 plugin | `resolve-library-id` → `get-library-docs` |
|
|
42
|
-
| VibeOrchestrator | `smartWebSearch()` - auto fallback chain |
|
|
43
|
-
| Cached knowledge | Use Claude's built-in knowledge |
|
|
44
|
-
|
|
45
|
-
```
|
|
46
|
-
Web Search fails (429, 529, timeout)
|
|
47
|
-
↓
|
|
48
|
-
Check circuit breaker state
|
|
49
|
-
↓
|
|
50
|
-
If OPEN → Skip to alternative immediately
|
|
51
|
-
↓
|
|
52
|
-
If CLOSED → Try context7 for library docs
|
|
53
|
-
↓
|
|
54
|
-
If still fails: VibeOrchestrator.smartWebSearch()
|
|
55
|
-
↓
|
|
56
|
-
Last resort: Claude's built-in knowledge
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
## API Error Responses
|
|
60
|
-
|
|
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) |
|
|
68
|
-
|
|
69
|
-
## When File/Code Not Found
|
|
70
|
-
|
|
71
|
-
```
|
|
72
|
-
Glob fails
|
|
73
|
-
↓
|
|
74
|
-
Expand pattern: *.ts → **/*.ts → **/*
|
|
75
|
-
↓
|
|
76
|
-
Use Grep for content-based search
|
|
77
|
-
↓
|
|
78
|
-
Check git log for history
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
## When External LLM Fails
|
|
82
|
-
|
|
83
|
-
**Production (VibeOrchestrator):**
|
|
84
|
-
|
|
85
|
-
```
|
|
86
|
-
VibeOrchestrator.smartRoute({ type, prompt })
|
|
87
|
-
↓
|
|
88
|
-
LLM priority based on task type:
|
|
89
|
-
- architecture/debugging: GPT → Gemini → Claude
|
|
90
|
-
- uiux/code-analysis: Gemini → GPT → Claude
|
|
91
|
-
- code-gen: Claude only
|
|
92
|
-
↓
|
|
93
|
-
Auto fallback on primary LLM failure
|
|
94
|
-
↓
|
|
95
|
-
Claude handles directly when all fail
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
**Test/Debug Hooks (development only):**
|
|
99
|
-
|
|
100
|
-
```
|
|
101
|
-
gpt- or gpt. [question] fails
|
|
102
|
-
↓
|
|
103
|
-
Check circuit: If OPEN, skip to next
|
|
104
|
-
↓
|
|
105
|
-
Try gemini- or gemini. [question] (similar capability)
|
|
106
|
-
↓
|
|
107
|
-
Try context7 (for docs)
|
|
108
|
-
↓
|
|
109
|
-
Claude solves alone
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
> **Note:** `test-gpt`, `test-gemini` prefixes are for hook connectivity testing only.
|
|
113
|
-
> For actual work, use VIBE commands (`/vibe.run`, `/vibe.spec`, etc.) and
|
|
114
|
-
> VibeOrchestrator will automatically select the appropriate LLM.
|
|
115
|
-
|
|
116
|
-
## Retry Strategy with Circuit Breaker
|
|
117
|
-
|
|
118
|
-
```
|
|
119
|
-
Request to tool
|
|
120
|
-
↓
|
|
121
|
-
Check circuit state
|
|
122
|
-
↓
|
|
123
|
-
┌─ OPEN? ──→ Use alternative immediately (no retry)
|
|
124
|
-
│
|
|
125
|
-
└─ CLOSED/HALF-OPEN? ──→ Try request
|
|
126
|
-
↓
|
|
127
|
-
Success? ──→ Reset failure count
|
|
128
|
-
↓ No
|
|
129
|
-
Retry with backoff:
|
|
130
|
-
retry(1): wait 2s
|
|
131
|
-
retry(2): wait 4s
|
|
132
|
-
retry(3): wait 8s
|
|
133
|
-
↓
|
|
134
|
-
All failed? ──→ +1 failure, check threshold
|
|
135
|
-
↓
|
|
136
|
-
failures >= 3? ──→ OPEN circuit for 30s
|
|
137
|
-
↓
|
|
138
|
-
Use alternative
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
## VibeOrchestrator Smart Routing
|
|
142
|
-
|
|
143
|
-
VIBE commands (`/vibe.spec`, `/vibe.run`, etc.) use VibeOrchestrator internally.
|
|
144
|
-
|
|
145
|
-
### LLM Priority by Task Type
|
|
146
|
-
|
|
147
|
-
| Task Type | Primary | Secondary | Fallback |
|
|
148
|
-
|-----------------|---------|-----------|----------|
|
|
149
|
-
| `architecture` | GPT | Gemini | Claude |
|
|
150
|
-
| `debugging` | GPT | Gemini | Claude |
|
|
151
|
-
| `uiux` | Gemini | GPT | Claude |
|
|
152
|
-
| `code-analysis` | Gemini | GPT | Claude |
|
|
153
|
-
| `web-search` | GPT | Gemini | Claude |
|
|
154
|
-
| `code-gen` | Claude | - | - |
|
|
155
|
-
| `general` | Claude | - | - |
|
|
156
|
-
|
|
157
|
-
### Auto Fallback Logic
|
|
158
|
-
|
|
159
|
-
```
|
|
160
|
-
smartRoute({ type: 'architecture', prompt })
|
|
161
|
-
↓
|
|
162
|
-
1. Try GPT (max 2 retries)
|
|
163
|
-
↓ fails (429, 401, 5xx)
|
|
164
|
-
2. Try Gemini (max 2 retries)
|
|
165
|
-
↓ fails
|
|
166
|
-
3. Claude handles directly (fallback message)
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
### Retry vs Immediate Switch
|
|
170
|
-
|
|
171
|
-
| Error | Action |
|
|
172
|
-
|------------------|------------------------|
|
|
173
|
-
| 429 Rate Limit | Skip to next LLM |
|
|
174
|
-
| 401/403 Auth | Skip to next LLM |
|
|
175
|
-
| Network Error | Retry with backoff |
|
|
176
|
-
| 5xx Server Error | Retry then switch |
|
|
177
|
-
|
|
178
|
-
### Availability Cache
|
|
179
|
-
|
|
180
|
-
- 5-minute TTL for LLM status cache
|
|
181
|
-
- Auto-disable after 3 consecutive failures
|
|
182
|
-
- Failed LLMs are skipped in subsequent requests
|
|
183
|
-
|
|
184
|
-
## Principles
|
|
185
|
-
|
|
186
|
-
1. **Never stop** - Always find an alternative
|
|
187
|
-
2. **Before asking user** - Try alternatives first
|
|
188
|
-
3. **Track failures** - Open circuit after 3 consecutive failures
|
|
189
|
-
4. **Auto-recover** - Test after 30s cooldown
|
|
190
|
-
5. **Fail fast** - Skip blocked tools immediately
|
|
1
|
+
---
|
|
2
|
+
description: Tool failure fallback strategies with circuit breaker. Auto-activates on API errors, search failures, timeouts, 429, 5xx, overloaded errors.
|
|
3
|
+
---
|
|
4
|
+
# Tool Fallback Strategies
|
|
5
|
+
|
|
6
|
+
Guide for finding alternatives when tools fail to continue work.
|
|
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
|
+
GPT hook: failures=2, state=CLOSED
|
|
32
|
+
Gemini hook: failures=0, state=CLOSED
|
|
33
|
+
WebSearch: failures=3, state=OPEN (blocked until 14:32:00)
|
|
34
|
+
context7: failures=1, state=CLOSED
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## When Web Search Fails
|
|
38
|
+
|
|
39
|
+
| Alternative | Method |
|
|
40
|
+
|-------------|--------|
|
|
41
|
+
| context7 plugin | `resolve-library-id` → `get-library-docs` |
|
|
42
|
+
| VibeOrchestrator | `smartWebSearch()` - auto fallback chain |
|
|
43
|
+
| Cached knowledge | Use Claude's built-in knowledge |
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
Web Search fails (429, 529, timeout)
|
|
47
|
+
↓
|
|
48
|
+
Check circuit breaker state
|
|
49
|
+
↓
|
|
50
|
+
If OPEN → Skip to alternative immediately
|
|
51
|
+
↓
|
|
52
|
+
If CLOSED → Try context7 for library docs
|
|
53
|
+
↓
|
|
54
|
+
If still fails: VibeOrchestrator.smartWebSearch()
|
|
55
|
+
↓
|
|
56
|
+
Last resort: Claude's built-in knowledge
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## API Error Responses
|
|
60
|
+
|
|
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) |
|
|
68
|
+
|
|
69
|
+
## When File/Code Not Found
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
Glob fails
|
|
73
|
+
↓
|
|
74
|
+
Expand pattern: *.ts → **/*.ts → **/*
|
|
75
|
+
↓
|
|
76
|
+
Use Grep for content-based search
|
|
77
|
+
↓
|
|
78
|
+
Check git log for history
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## When External LLM Fails
|
|
82
|
+
|
|
83
|
+
**Production (VibeOrchestrator):**
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
VibeOrchestrator.smartRoute({ type, prompt })
|
|
87
|
+
↓
|
|
88
|
+
LLM priority based on task type:
|
|
89
|
+
- architecture/debugging: GPT → Gemini → Claude
|
|
90
|
+
- uiux/code-analysis: Gemini → GPT → Claude
|
|
91
|
+
- code-gen: Claude only
|
|
92
|
+
↓
|
|
93
|
+
Auto fallback on primary LLM failure
|
|
94
|
+
↓
|
|
95
|
+
Claude handles directly when all fail
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Test/Debug Hooks (development only):**
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
gpt- or gpt. [question] fails
|
|
102
|
+
↓
|
|
103
|
+
Check circuit: If OPEN, skip to next
|
|
104
|
+
↓
|
|
105
|
+
Try gemini- or gemini. [question] (similar capability)
|
|
106
|
+
↓
|
|
107
|
+
Try context7 (for docs)
|
|
108
|
+
↓
|
|
109
|
+
Claude solves alone
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
> **Note:** `test-gpt`, `test-gemini` prefixes are for hook connectivity testing only.
|
|
113
|
+
> For actual work, use VIBE commands (`/vibe.run`, `/vibe.spec`, etc.) and
|
|
114
|
+
> VibeOrchestrator will automatically select the appropriate LLM.
|
|
115
|
+
|
|
116
|
+
## Retry Strategy with Circuit Breaker
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
Request to tool
|
|
120
|
+
↓
|
|
121
|
+
Check circuit state
|
|
122
|
+
↓
|
|
123
|
+
┌─ OPEN? ──→ Use alternative immediately (no retry)
|
|
124
|
+
│
|
|
125
|
+
└─ CLOSED/HALF-OPEN? ──→ Try request
|
|
126
|
+
↓
|
|
127
|
+
Success? ──→ Reset failure count
|
|
128
|
+
↓ No
|
|
129
|
+
Retry with backoff:
|
|
130
|
+
retry(1): wait 2s
|
|
131
|
+
retry(2): wait 4s
|
|
132
|
+
retry(3): wait 8s
|
|
133
|
+
↓
|
|
134
|
+
All failed? ──→ +1 failure, check threshold
|
|
135
|
+
↓
|
|
136
|
+
failures >= 3? ──→ OPEN circuit for 30s
|
|
137
|
+
↓
|
|
138
|
+
Use alternative
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## VibeOrchestrator Smart Routing
|
|
142
|
+
|
|
143
|
+
VIBE commands (`/vibe.spec`, `/vibe.run`, etc.) use VibeOrchestrator internally.
|
|
144
|
+
|
|
145
|
+
### LLM Priority by Task Type
|
|
146
|
+
|
|
147
|
+
| Task Type | Primary | Secondary | Fallback |
|
|
148
|
+
|-----------------|---------|-----------|----------|
|
|
149
|
+
| `architecture` | GPT | Gemini | Claude |
|
|
150
|
+
| `debugging` | GPT | Gemini | Claude |
|
|
151
|
+
| `uiux` | Gemini | GPT | Claude |
|
|
152
|
+
| `code-analysis` | Gemini | GPT | Claude |
|
|
153
|
+
| `web-search` | GPT | Gemini | Claude |
|
|
154
|
+
| `code-gen` | Claude | - | - |
|
|
155
|
+
| `general` | Claude | - | - |
|
|
156
|
+
|
|
157
|
+
### Auto Fallback Logic
|
|
158
|
+
|
|
159
|
+
```
|
|
160
|
+
smartRoute({ type: 'architecture', prompt })
|
|
161
|
+
↓
|
|
162
|
+
1. Try GPT (max 2 retries)
|
|
163
|
+
↓ fails (429, 401, 5xx)
|
|
164
|
+
2. Try Gemini (max 2 retries)
|
|
165
|
+
↓ fails
|
|
166
|
+
3. Claude handles directly (fallback message)
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Retry vs Immediate Switch
|
|
170
|
+
|
|
171
|
+
| Error | Action |
|
|
172
|
+
|------------------|------------------------|
|
|
173
|
+
| 429 Rate Limit | Skip to next LLM |
|
|
174
|
+
| 401/403 Auth | Skip to next LLM |
|
|
175
|
+
| Network Error | Retry with backoff |
|
|
176
|
+
| 5xx Server Error | Retry then switch |
|
|
177
|
+
|
|
178
|
+
### Availability Cache
|
|
179
|
+
|
|
180
|
+
- 5-minute TTL for LLM status cache
|
|
181
|
+
- Auto-disable after 3 consecutive failures
|
|
182
|
+
- Failed LLMs are skipped in subsequent requests
|
|
183
|
+
|
|
184
|
+
## Principles
|
|
185
|
+
|
|
186
|
+
1. **Never stop** - Always find an alternative
|
|
187
|
+
2. **Before asking user** - Try alternatives first
|
|
188
|
+
3. **Track failures** - Open circuit after 3 consecutive failures
|
|
189
|
+
4. **Auto-recover** - Test after 30s cooldown
|
|
190
|
+
5. **Fail fast** - Skip blocked tools immediately
|