@su-record/vibe 2.7.10 → 2.7.12
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/.env.example +37 -37
- package/CLAUDE.md +126 -222
- package/LICENSE +21 -21
- package/README.md +580 -580
- 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/junior-mentor.md +141 -141
- 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/ui-a11y-auditor.md +93 -93
- package/agents/ui/ui-antipattern-detector.md +94 -94
- package/agents/ui/ui-dataviz-advisor.md +69 -69
- package/agents/ui/ui-design-system-gen.md +57 -57
- package/agents/ui/ui-industry-analyzer.md +49 -49
- package/agents/ui/ui-layout-architect.md +65 -65
- package/agents/ui/ui-stack-implementer.md +68 -68
- package/agents/ui/ux-compliance-reviewer.md +81 -81
- package/agents/ui-previewer.md +260 -260
- package/commands/vibe.run.md +83 -0
- package/commands/vibe.spec.review.md +558 -558
- package/commands/vibe.utils.md +413 -413
- package/commands/vibe.voice.md +79 -79
- package/dist/cli/auth.d.ts +1 -1
- package/dist/cli/auth.d.ts.map +1 -1
- package/dist/cli/auth.js +15 -7
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli/collaborator.js +52 -52
- package/dist/cli/commands/evolution.js +12 -12
- package/dist/cli/commands/index.d.ts +1 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +1 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/info.d.ts.map +1 -1
- package/dist/cli/commands/info.js +62 -56
- package/dist/cli/commands/info.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +9 -6
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/remove.js +14 -14
- package/dist/cli/commands/sentinel.js +27 -27
- package/dist/cli/commands/skills.d.ts +13 -0
- package/dist/cli/commands/skills.d.ts.map +1 -0
- package/dist/cli/commands/skills.js +83 -0
- package/dist/cli/commands/skills.js.map +1 -0
- package/dist/cli/commands/slack.js +10 -10
- package/dist/cli/commands/telegram.js +12 -12
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +3 -0
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/detect.js +32 -32
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +64 -47
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/llm/claude-commands.js +16 -16
- package/dist/cli/llm/config.js +18 -18
- package/dist/cli/llm/gemini-commands.js +47 -47
- package/dist/cli/llm/gpt-commands.js +19 -19
- package/dist/cli/llm/help.js +21 -21
- package/dist/cli/postinstall/constants.d.ts +8 -0
- package/dist/cli/postinstall/constants.d.ts.map +1 -1
- package/dist/cli/postinstall/constants.js +33 -0
- package/dist/cli/postinstall/constants.js.map +1 -1
- package/dist/cli/postinstall/cursor-agents.js +32 -32
- package/dist/cli/postinstall/cursor-rules.js +83 -83
- package/dist/cli/postinstall/cursor-skills.js +743 -743
- package/dist/cli/postinstall/index.d.ts +1 -1
- package/dist/cli/postinstall/index.d.ts.map +1 -1
- package/dist/cli/postinstall/index.js +1 -1
- package/dist/cli/postinstall/index.js.map +1 -1
- package/dist/cli/setup/ProjectSetup.d.ts.map +1 -1
- package/dist/cli/setup/ProjectSetup.js +5 -0
- package/dist/cli/setup/ProjectSetup.js.map +1 -1
- package/dist/cli/setup/Provisioner.js +42 -42
- package/dist/cli/types.d.ts +1 -0
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/infra/lib/DeepInit.js +24 -24
- package/dist/infra/lib/IterationTracker.js +11 -11
- package/dist/infra/lib/PythonParser.js +108 -108
- package/dist/infra/lib/ReviewRace.js +96 -96
- package/dist/infra/lib/SkillFrontmatter.js +28 -28
- package/dist/infra/lib/SkillQualityGate.js +9 -9
- package/dist/infra/lib/SkillRepository.js +159 -159
- package/dist/infra/lib/UltraQA.js +99 -99
- package/dist/infra/lib/autonomy/AuditStore.js +41 -41
- package/dist/infra/lib/autonomy/ConfirmationStore.js +30 -30
- package/dist/infra/lib/autonomy/EventOutbox.js +38 -38
- package/dist/infra/lib/autonomy/PolicyEngine.js +18 -18
- package/dist/infra/lib/autonomy/SecuritySentinel.js +1 -1
- package/dist/infra/lib/autonomy/SuggestionStore.js +33 -33
- package/dist/infra/lib/embedding/VectorStore.js +22 -22
- package/dist/infra/lib/evolution/AgentAnalyzer.js +10 -10
- package/dist/infra/lib/evolution/DescriptionOptimizer.d.ts +79 -0
- package/dist/infra/lib/evolution/DescriptionOptimizer.d.ts.map +1 -0
- package/dist/infra/lib/evolution/DescriptionOptimizer.js +259 -0
- package/dist/infra/lib/evolution/DescriptionOptimizer.js.map +1 -0
- package/dist/infra/lib/evolution/GenerationRegistry.js +36 -36
- package/dist/infra/lib/evolution/InsightStore.js +90 -90
- package/dist/infra/lib/evolution/RollbackManager.js +5 -5
- package/dist/infra/lib/evolution/SkillBenchmark.d.ts +81 -0
- package/dist/infra/lib/evolution/SkillBenchmark.d.ts.map +1 -0
- package/dist/infra/lib/evolution/SkillBenchmark.js +233 -0
- package/dist/infra/lib/evolution/SkillBenchmark.js.map +1 -0
- package/dist/infra/lib/evolution/SkillClassifier.d.ts +35 -0
- package/dist/infra/lib/evolution/SkillClassifier.d.ts.map +1 -0
- package/dist/infra/lib/evolution/SkillClassifier.js +167 -0
- package/dist/infra/lib/evolution/SkillClassifier.js.map +1 -0
- package/dist/infra/lib/evolution/SkillEvalRunner.d.ts +102 -0
- package/dist/infra/lib/evolution/SkillEvalRunner.d.ts.map +1 -0
- package/dist/infra/lib/evolution/SkillEvalRunner.js +256 -0
- package/dist/infra/lib/evolution/SkillEvalRunner.js.map +1 -0
- package/dist/infra/lib/evolution/SkillGapDetector.js +10 -10
- package/dist/infra/lib/evolution/UsageTracker.js +28 -28
- package/dist/infra/lib/evolution/__tests__/eval.test.d.ts +2 -0
- package/dist/infra/lib/evolution/__tests__/eval.test.d.ts.map +1 -0
- package/dist/infra/lib/evolution/__tests__/eval.test.js +539 -0
- package/dist/infra/lib/evolution/__tests__/eval.test.js.map +1 -0
- package/dist/infra/lib/evolution/index.d.ts +8 -0
- package/dist/infra/lib/evolution/index.d.ts.map +1 -1
- package/dist/infra/lib/evolution/index.js +5 -0
- package/dist/infra/lib/evolution/index.js.map +1 -1
- package/dist/infra/lib/gemini/constants.js +14 -14
- package/dist/infra/lib/gemini/orchestration.js +5 -5
- package/dist/infra/lib/gpt/oauth.js +44 -44
- package/dist/infra/lib/gpt/orchestration.js +4 -4
- package/dist/infra/lib/memory/KnowledgeGraph.js +4 -4
- package/dist/infra/lib/memory/MemorySearch.js +57 -57
- package/dist/infra/lib/memory/MemoryStorage.js +181 -181
- package/dist/infra/lib/memory/ObservationStore.js +28 -28
- package/dist/infra/lib/memory/ReflectionStore.js +30 -30
- package/dist/infra/lib/memory/SessionRAGRetriever.js +7 -7
- package/dist/infra/lib/memory/SessionRAGStore.js +225 -225
- package/dist/infra/lib/memory/SessionSummarizer.js +9 -9
- package/dist/infra/orchestrator/AgentManager.js +12 -12
- package/dist/infra/orchestrator/AgentRegistry.js +65 -65
- package/dist/infra/orchestrator/MultiLlmResearch.js +8 -8
- package/dist/infra/orchestrator/SwarmOrchestrator.test.js +16 -16
- package/dist/infra/orchestrator/parallelResearch.js +24 -24
- package/dist/tools/convention/analyzeComplexity.test.js +115 -115
- package/dist/tools/convention/validateCodeQuality.test.js +104 -104
- package/dist/tools/memory/createMemoryTimeline.js +10 -10
- package/dist/tools/memory/getMemoryGraph.js +12 -12
- package/dist/tools/memory/getSessionContext.js +9 -9
- package/dist/tools/memory/linkMemories.js +14 -14
- package/dist/tools/memory/listMemories.js +4 -4
- package/dist/tools/memory/recallMemory.js +4 -4
- package/dist/tools/memory/saveMemory.js +4 -4
- package/dist/tools/memory/searchMemoriesAdvanced.js +23 -23
- package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
- package/dist/tools/semantic/astGrep.test.js +6 -6
- 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/hooks/gemini-hooks.json +73 -73
- package/hooks/hooks.json +137 -137
- package/hooks/scripts/code-check.js +70 -70
- package/hooks/scripts/context-save.js +212 -212
- package/hooks/scripts/hud-status.js +291 -291
- package/hooks/scripts/keyword-detector.js +214 -214
- package/hooks/scripts/llm-orchestrate.js +646 -646
- package/hooks/scripts/post-edit.js +32 -32
- package/hooks/scripts/pre-tool-guard.js +125 -125
- package/hooks/scripts/prompt-dispatcher.js +185 -185
- package/hooks/scripts/sentinel-guard.js +104 -104
- package/hooks/scripts/session-start.js +106 -106
- package/hooks/scripts/stop-notify.js +209 -209
- package/hooks/scripts/utils.js +100 -100
- 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 +121 -121
- package/skills/agents-md/SKILL.md +120 -120
- package/skills/arch-guard/SKILL.md +180 -0
- package/skills/brand-assets/SKILL.md +146 -146
- package/skills/capability-loop/SKILL.md +167 -0
- package/skills/characterization-test/SKILL.md +206 -206
- package/skills/commerce-patterns/SKILL.md +59 -59
- package/skills/commit-push-pr/SKILL.md +75 -75
- package/skills/context7-usage/SKILL.md +105 -105
- package/skills/core-capabilities/SKILL.md +48 -48
- package/skills/e2e-commerce/SKILL.md +57 -57
- package/skills/exec-plan/SKILL.md +147 -0
- package/skills/frontend-design/SKILL.md +73 -73
- package/skills/git-worktree/SKILL.md +72 -72
- package/skills/handoff/SKILL.md +109 -109
- package/skills/parallel-research/SKILL.md +87 -87
- package/skills/priority-todos/SKILL.md +63 -63
- package/skills/seo-checklist/SKILL.md +57 -57
- package/skills/techdebt/SKILL.md +122 -122
- package/skills/tool-fallback/SKILL.md +103 -103
- package/skills/typescript-advanced-types/SKILL.md +65 -65
- package/skills/ui-ux-pro-max/SKILL.md +206 -206
- package/skills/vercel-react-best-practices/SKILL.md +59 -59
- package/skills/video-production/SKILL.md +51 -51
- package/vibe/config.json +29 -29
- package/vibe/constitution.md +227 -227
- package/vibe/rules/principles/communication-guide.md +98 -98
- package/vibe/rules/principles/development-philosophy.md +52 -52
- package/vibe/rules/principles/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/performance.md +236 -236
- 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/git-workflow.md +237 -237
- package/vibe/rules/standards/naming-conventions.md +198 -198
- package/vibe/rules/standards/security.md +305 -305
- package/vibe/rules/writing/document-style.md +74 -74
- 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/vibe/ui-ux-data/charts.csv +26 -26
- package/vibe/ui-ux-data/colors.csv +97 -97
- package/vibe/ui-ux-data/icons.csv +101 -101
- package/vibe/ui-ux-data/landing.csv +31 -31
- package/vibe/ui-ux-data/products.csv +96 -96
- package/vibe/ui-ux-data/react-performance.csv +45 -45
- package/vibe/ui-ux-data/stacks/astro.csv +54 -54
- package/vibe/ui-ux-data/stacks/flutter.csv +53 -53
- package/vibe/ui-ux-data/stacks/html-tailwind.csv +56 -56
- package/vibe/ui-ux-data/stacks/jetpack-compose.csv +53 -53
- package/vibe/ui-ux-data/stacks/nextjs.csv +53 -53
- package/vibe/ui-ux-data/stacks/nuxt-ui.csv +51 -51
- package/vibe/ui-ux-data/stacks/nuxtjs.csv +59 -59
- package/vibe/ui-ux-data/stacks/react-native.csv +52 -52
- package/vibe/ui-ux-data/stacks/react.csv +54 -54
- package/vibe/ui-ux-data/stacks/shadcn.csv +61 -61
- package/vibe/ui-ux-data/stacks/svelte.csv +54 -54
- package/vibe/ui-ux-data/stacks/swiftui.csv +51 -51
- package/vibe/ui-ux-data/stacks/vue.csv +50 -50
- package/vibe/ui-ux-data/styles.csv +68 -68
- package/vibe/ui-ux-data/typography.csv +57 -57
- package/vibe/ui-ux-data/ui-reasoning.csv +101 -101
- package/vibe/ui-ux-data/ux-guidelines.csv +99 -99
- package/vibe/ui-ux-data/version.json +31 -31
- package/vibe/ui-ux-data/web-interface.csv +31 -31
|
@@ -1,103 +1,103 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: tool-fallback
|
|
3
|
-
description: "Tool failure fallback strategies with circuit breaker. Auto-activates on API errors, search failures, timeouts, 429, 5xx, overloaded errors."
|
|
4
|
-
triggers: [API error, search failure, timeout, 429, 5xx, overloaded, fallback, circuit breaker]
|
|
5
|
-
priority: 80
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Tool Fallback Strategies
|
|
9
|
-
|
|
10
|
-
## Pre-check (K1)
|
|
11
|
-
|
|
12
|
-
> Did a tool just fail? If the error is a simple typo or wrong path, fix the input first. This skill is for persistent failures (429, 5xx, timeouts).
|
|
13
|
-
|
|
14
|
-
## Circuit Breaker State Machine
|
|
15
|
-
|
|
16
|
-
```
|
|
17
|
-
┌─────────┐ 3 failures ┌─────────┐ 30s cooldown ┌─────────────┐
|
|
18
|
-
│ CLOSED │ ─────────────→ │ OPEN │ ───────────────→ │ HALF-OPEN │
|
|
19
|
-
│ (normal)│ │ (block) │ │ (test 1 req)│
|
|
20
|
-
└─────────┘ └─────────┘ └─────────────┘
|
|
21
|
-
↑ │
|
|
22
|
-
│ success │
|
|
23
|
-
└────────────────────────────────────────────────────────┘
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
| State | Behavior |
|
|
27
|
-
|-------|----------|
|
|
28
|
-
| CLOSED | Normal operation, count failures |
|
|
29
|
-
| OPEN | Skip tool immediately, use alternative |
|
|
30
|
-
| HALF-OPEN | Allow 1 test request after cooldown |
|
|
31
|
-
|
|
32
|
-
## Decision Trees
|
|
33
|
-
|
|
34
|
-
### Web Search Fails
|
|
35
|
-
|
|
36
|
-
```
|
|
37
|
-
Web Search fails (429, 529, timeout)
|
|
38
|
-
→ Check circuit state
|
|
39
|
-
→ OPEN? → Skip to alternative immediately
|
|
40
|
-
→ CLOSED? → Try context7 for library docs
|
|
41
|
-
→ Still fails? → Claude's built-in knowledge (last resort)
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
### External LLM Fails
|
|
45
|
-
|
|
46
|
-
```
|
|
47
|
-
VibeOrchestrator.smartRoute({ type, prompt })
|
|
48
|
-
→ Primary LLM fails (429, 401, 5xx)
|
|
49
|
-
→ Skip to secondary LLM (no retry on rate limit)
|
|
50
|
-
→ Secondary fails → Claude handles directly
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
### File/Code Not Found
|
|
54
|
-
|
|
55
|
-
```
|
|
56
|
-
Glob fails → Expand pattern: *.ts → **/*.ts → **/*
|
|
57
|
-
→ Use Grep for content-based search
|
|
58
|
-
→ Check git log for file history
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
## Error Response Actions
|
|
62
|
-
|
|
63
|
-
| Error | Action | Circuit Impact |
|
|
64
|
-
|-------|--------|---------------|
|
|
65
|
-
| 429 Rate Limit | Skip to next alternative (don't retry) | +1 failure |
|
|
66
|
-
| 5xx Server Error | Retry with backoff, then switch | +1 failure |
|
|
67
|
-
| 529 Overloaded | Wait and retry once | +1 failure |
|
|
68
|
-
| Timeout | Split request or retry | +1 failure |
|
|
69
|
-
| 401/403 Auth | Re-auth or switch alternative | Don't count |
|
|
70
|
-
|
|
71
|
-
## Retry Strategy
|
|
72
|
-
|
|
73
|
-
```
|
|
74
|
-
Request → Check circuit
|
|
75
|
-
├─ OPEN → Use alternative immediately
|
|
76
|
-
└─ CLOSED/HALF-OPEN → Try request
|
|
77
|
-
├─ Success → Reset failure count
|
|
78
|
-
└─ Fail → Backoff (2s → 4s → 8s)
|
|
79
|
-
└─ All retries failed → +1 failure
|
|
80
|
-
└─ failures ≥ 3 → OPEN circuit (30s)
|
|
81
|
-
└─ Use alternative
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
## LLM Priority by Task Type
|
|
85
|
-
|
|
86
|
-
| Task Type | Primary → Secondary → Fallback |
|
|
87
|
-
|-----------|-------------------------------|
|
|
88
|
-
| architecture, debugging | GPT → Gemini → Claude |
|
|
89
|
-
| uiux, code-analysis | Gemini → GPT → Claude |
|
|
90
|
-
| code-gen, general | Claude only |
|
|
91
|
-
|
|
92
|
-
## Principles
|
|
93
|
-
|
|
94
|
-
1. **Never stop** — always find an alternative
|
|
95
|
-
2. **Try before asking** — exhaust alternatives before asking user
|
|
96
|
-
3. **Fail fast** — skip OPEN-circuit tools immediately
|
|
97
|
-
4. **Auto-recover** — test after 30s cooldown
|
|
98
|
-
|
|
99
|
-
## Done Criteria (K4)
|
|
100
|
-
|
|
101
|
-
- [ ] Work continued despite tool failure
|
|
102
|
-
- [ ] Alternative tool/method used successfully
|
|
103
|
-
- [ ] No unnecessary retries on rate-limited tools
|
|
1
|
+
---
|
|
2
|
+
name: tool-fallback
|
|
3
|
+
description: "Tool failure fallback strategies with circuit breaker. Auto-activates on API errors, search failures, timeouts, 429, 5xx, overloaded errors."
|
|
4
|
+
triggers: [API error, search failure, timeout, 429, 5xx, overloaded, fallback, circuit breaker]
|
|
5
|
+
priority: 80
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Tool Fallback Strategies
|
|
9
|
+
|
|
10
|
+
## Pre-check (K1)
|
|
11
|
+
|
|
12
|
+
> Did a tool just fail? If the error is a simple typo or wrong path, fix the input first. This skill is for persistent failures (429, 5xx, timeouts).
|
|
13
|
+
|
|
14
|
+
## Circuit Breaker State Machine
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
┌─────────┐ 3 failures ┌─────────┐ 30s cooldown ┌─────────────┐
|
|
18
|
+
│ CLOSED │ ─────────────→ │ OPEN │ ───────────────→ │ HALF-OPEN │
|
|
19
|
+
│ (normal)│ │ (block) │ │ (test 1 req)│
|
|
20
|
+
└─────────┘ └─────────┘ └─────────────┘
|
|
21
|
+
↑ │
|
|
22
|
+
│ success │
|
|
23
|
+
└────────────────────────────────────────────────────────┘
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
| State | Behavior |
|
|
27
|
+
|-------|----------|
|
|
28
|
+
| CLOSED | Normal operation, count failures |
|
|
29
|
+
| OPEN | Skip tool immediately, use alternative |
|
|
30
|
+
| HALF-OPEN | Allow 1 test request after cooldown |
|
|
31
|
+
|
|
32
|
+
## Decision Trees
|
|
33
|
+
|
|
34
|
+
### Web Search Fails
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
Web Search fails (429, 529, timeout)
|
|
38
|
+
→ Check circuit state
|
|
39
|
+
→ OPEN? → Skip to alternative immediately
|
|
40
|
+
→ CLOSED? → Try context7 for library docs
|
|
41
|
+
→ Still fails? → Claude's built-in knowledge (last resort)
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### External LLM Fails
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
VibeOrchestrator.smartRoute({ type, prompt })
|
|
48
|
+
→ Primary LLM fails (429, 401, 5xx)
|
|
49
|
+
→ Skip to secondary LLM (no retry on rate limit)
|
|
50
|
+
→ Secondary fails → Claude handles directly
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### File/Code Not Found
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
Glob fails → Expand pattern: *.ts → **/*.ts → **/*
|
|
57
|
+
→ Use Grep for content-based search
|
|
58
|
+
→ Check git log for file history
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Error Response Actions
|
|
62
|
+
|
|
63
|
+
| Error | Action | Circuit Impact |
|
|
64
|
+
|-------|--------|---------------|
|
|
65
|
+
| 429 Rate Limit | Skip to next alternative (don't retry) | +1 failure |
|
|
66
|
+
| 5xx Server Error | Retry with backoff, then switch | +1 failure |
|
|
67
|
+
| 529 Overloaded | Wait and retry once | +1 failure |
|
|
68
|
+
| Timeout | Split request or retry | +1 failure |
|
|
69
|
+
| 401/403 Auth | Re-auth or switch alternative | Don't count |
|
|
70
|
+
|
|
71
|
+
## Retry Strategy
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
Request → Check circuit
|
|
75
|
+
├─ OPEN → Use alternative immediately
|
|
76
|
+
└─ CLOSED/HALF-OPEN → Try request
|
|
77
|
+
├─ Success → Reset failure count
|
|
78
|
+
└─ Fail → Backoff (2s → 4s → 8s)
|
|
79
|
+
└─ All retries failed → +1 failure
|
|
80
|
+
└─ failures ≥ 3 → OPEN circuit (30s)
|
|
81
|
+
└─ Use alternative
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## LLM Priority by Task Type
|
|
85
|
+
|
|
86
|
+
| Task Type | Primary → Secondary → Fallback |
|
|
87
|
+
|-----------|-------------------------------|
|
|
88
|
+
| architecture, debugging | GPT → Gemini → Claude |
|
|
89
|
+
| uiux, code-analysis | Gemini → GPT → Claude |
|
|
90
|
+
| code-gen, general | Claude only |
|
|
91
|
+
|
|
92
|
+
## Principles
|
|
93
|
+
|
|
94
|
+
1. **Never stop** — always find an alternative
|
|
95
|
+
2. **Try before asking** — exhaust alternatives before asking user
|
|
96
|
+
3. **Fail fast** — skip OPEN-circuit tools immediately
|
|
97
|
+
4. **Auto-recover** — test after 30s cooldown
|
|
98
|
+
|
|
99
|
+
## Done Criteria (K4)
|
|
100
|
+
|
|
101
|
+
- [ ] Work continued despite tool failure
|
|
102
|
+
- [ ] Alternative tool/method used successfully
|
|
103
|
+
- [ ] No unnecessary retries on rate-limited tools
|
|
@@ -1,65 +1,65 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "TypeScript advanced type system master guide. Covers Generics, Conditional Types, Mapped Types, Template Literals, Utility Types. Activates for complex type logic, reusable type utilities, and compile-time type safety."
|
|
3
|
-
sections:
|
|
4
|
-
- name: "Core Concepts"
|
|
5
|
-
triggers: [generic, generics, constraint, conditional, infer, mapped, utility, Pick, Omit, Partial, Required, Record, Exclude, Extract, readonly]
|
|
6
|
-
- name: "Advanced Patterns"
|
|
7
|
-
triggers: [template literal, branded, opaque, phantom, discriminated union, exhaustive, builder pattern, recursive type, variadic tuple]
|
|
8
|
-
- name: "Type Inference"
|
|
9
|
-
triggers: [inference, infer, type narrowing, type guard, satisfies, const assertion]
|
|
10
|
-
- name: "Best Practices"
|
|
11
|
-
triggers: [best practice, type safety, convention]
|
|
12
|
-
- name: "Type Testing"
|
|
13
|
-
triggers: [type test, type assertion, expectType, tsd]
|
|
14
|
-
- name: "Common Mistakes"
|
|
15
|
-
triggers: [mistake, pitfall, error, wrong]
|
|
16
|
-
- name: "Performance"
|
|
17
|
-
triggers: [performance, compile time, type complexity, depth limit]
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
# TypeScript Advanced Types
|
|
21
|
-
|
|
22
|
-
## Pre-check (K1)
|
|
23
|
-
|
|
24
|
-
> Is this a VIBE-specific type safety issue? Standard TypeScript generics/conditionals/mapped types are well-known — read the code instead. This skill exists for VIBE's strict rules and non-obvious gotchas only.
|
|
25
|
-
|
|
26
|
-
## VIBE Forbidden Patterns
|
|
27
|
-
|
|
28
|
-
| Forbidden | Why | Use Instead |
|
|
29
|
-
|-----------|-----|-------------|
|
|
30
|
-
| `any` | Disables all type checking | `unknown` + type guard |
|
|
31
|
-
| `as any` | Bypasses type system | Define proper interface |
|
|
32
|
-
| `@ts-ignore` | Hides real errors | Fix the type issue at root |
|
|
33
|
-
| Raw generic `T` without constraint | Too permissive | `T extends SomeInterface` |
|
|
34
|
-
|
|
35
|
-
## `unknown` + Type Guard (VIBE's `any` Replacement)
|
|
36
|
-
|
|
37
|
-
```typescript
|
|
38
|
-
// Instead of: function process(data: any)
|
|
39
|
-
function process(data: unknown): string {
|
|
40
|
-
if (typeof data === 'string') return data.toUpperCase();
|
|
41
|
-
if (isUser(data)) return data.name;
|
|
42
|
-
throw new Error('Unexpected data type');
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
function isUser(value: unknown): value is User {
|
|
46
|
-
return typeof value === 'object' && value !== null && 'name' in value;
|
|
47
|
-
}
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
## Gotchas
|
|
51
|
-
|
|
52
|
-
| Gotcha | Why Non-obvious | Fix |
|
|
53
|
-
|--------|----------------|-----|
|
|
54
|
-
| Distributive conditionals | `ToArray<string \| number>` → `string[] \| number[]`, not `(string \| number)[]` | Wrap in tuple: `[T] extends [U]` |
|
|
55
|
-
| Recursive type depth | TS has ~50 level depth limit | Use tail-recursive patterns or simplify |
|
|
56
|
-
| `satisfies` vs `as const` | `satisfies` validates + keeps literal types; `as` skips validation | Prefer `satisfies` |
|
|
57
|
-
| Type assertions (`as X`) | Skips checking entirely | Use type guards instead |
|
|
58
|
-
| `interface` vs `type` | `interface` gives better error messages for objects | Use `type` for unions/complex, `interface` for shapes |
|
|
59
|
-
|
|
60
|
-
## Done Criteria (K4)
|
|
61
|
-
|
|
62
|
-
- [ ] No `any`, `as any`, or `@ts-ignore` in code
|
|
63
|
-
- [ ] All `unknown` usages have corresponding type guards
|
|
64
|
-
- [ ] Complex types have `AssertEqual` type tests
|
|
65
|
-
- [ ] Recursive types are bounded (no infinite depth)
|
|
1
|
+
---
|
|
2
|
+
description: "TypeScript advanced type system master guide. Covers Generics, Conditional Types, Mapped Types, Template Literals, Utility Types. Activates for complex type logic, reusable type utilities, and compile-time type safety."
|
|
3
|
+
sections:
|
|
4
|
+
- name: "Core Concepts"
|
|
5
|
+
triggers: [generic, generics, constraint, conditional, infer, mapped, utility, Pick, Omit, Partial, Required, Record, Exclude, Extract, readonly]
|
|
6
|
+
- name: "Advanced Patterns"
|
|
7
|
+
triggers: [template literal, branded, opaque, phantom, discriminated union, exhaustive, builder pattern, recursive type, variadic tuple]
|
|
8
|
+
- name: "Type Inference"
|
|
9
|
+
triggers: [inference, infer, type narrowing, type guard, satisfies, const assertion]
|
|
10
|
+
- name: "Best Practices"
|
|
11
|
+
triggers: [best practice, type safety, convention]
|
|
12
|
+
- name: "Type Testing"
|
|
13
|
+
triggers: [type test, type assertion, expectType, tsd]
|
|
14
|
+
- name: "Common Mistakes"
|
|
15
|
+
triggers: [mistake, pitfall, error, wrong]
|
|
16
|
+
- name: "Performance"
|
|
17
|
+
triggers: [performance, compile time, type complexity, depth limit]
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# TypeScript Advanced Types
|
|
21
|
+
|
|
22
|
+
## Pre-check (K1)
|
|
23
|
+
|
|
24
|
+
> Is this a VIBE-specific type safety issue? Standard TypeScript generics/conditionals/mapped types are well-known — read the code instead. This skill exists for VIBE's strict rules and non-obvious gotchas only.
|
|
25
|
+
|
|
26
|
+
## VIBE Forbidden Patterns
|
|
27
|
+
|
|
28
|
+
| Forbidden | Why | Use Instead |
|
|
29
|
+
|-----------|-----|-------------|
|
|
30
|
+
| `any` | Disables all type checking | `unknown` + type guard |
|
|
31
|
+
| `as any` | Bypasses type system | Define proper interface |
|
|
32
|
+
| `@ts-ignore` | Hides real errors | Fix the type issue at root |
|
|
33
|
+
| Raw generic `T` without constraint | Too permissive | `T extends SomeInterface` |
|
|
34
|
+
|
|
35
|
+
## `unknown` + Type Guard (VIBE's `any` Replacement)
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
// Instead of: function process(data: any)
|
|
39
|
+
function process(data: unknown): string {
|
|
40
|
+
if (typeof data === 'string') return data.toUpperCase();
|
|
41
|
+
if (isUser(data)) return data.name;
|
|
42
|
+
throw new Error('Unexpected data type');
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function isUser(value: unknown): value is User {
|
|
46
|
+
return typeof value === 'object' && value !== null && 'name' in value;
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Gotchas
|
|
51
|
+
|
|
52
|
+
| Gotcha | Why Non-obvious | Fix |
|
|
53
|
+
|--------|----------------|-----|
|
|
54
|
+
| Distributive conditionals | `ToArray<string \| number>` → `string[] \| number[]`, not `(string \| number)[]` | Wrap in tuple: `[T] extends [U]` |
|
|
55
|
+
| Recursive type depth | TS has ~50 level depth limit | Use tail-recursive patterns or simplify |
|
|
56
|
+
| `satisfies` vs `as const` | `satisfies` validates + keeps literal types; `as` skips validation | Prefer `satisfies` |
|
|
57
|
+
| Type assertions (`as X`) | Skips checking entirely | Use type guards instead |
|
|
58
|
+
| `interface` vs `type` | `interface` gives better error messages for objects | Use `type` for unions/complex, `interface` for shapes |
|
|
59
|
+
|
|
60
|
+
## Done Criteria (K4)
|
|
61
|
+
|
|
62
|
+
- [ ] No `any`, `as any`, or `@ts-ignore` in code
|
|
63
|
+
- [ ] All `unknown` usages have corresponding type guards
|
|
64
|
+
- [ ] Complex types have `AssertEqual` type tests
|
|
65
|
+
- [ ] Recursive types are bounded (no infinite depth)
|