@su-record/vibe 2.8.51 → 2.8.53
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 +169 -169
- package/LICENSE +21 -21
- package/README.ko.md +5 -5
- package/README.md +5 -5
- 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 +294 -294
- package/agents/event/event-comms.md +78 -78
- package/agents/event/event-content.md +68 -68
- package/agents/event/event-image.md +95 -95
- package/agents/event/event-ops.md +84 -84
- package/agents/event/event-scheduler.md +69 -69
- package/agents/event/event-speaker.md +86 -86
- 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/qa/qa-coordinator.md +131 -131
- 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 +102 -102
- 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 +258 -258
- package/commands/vibe.analyze.md +379 -379
- package/commands/vibe.docs.md +32 -32
- package/commands/vibe.event.md +163 -163
- package/commands/vibe.figma.md +69 -69
- package/commands/vibe.review.md +686 -686
- package/commands/vibe.run.md +2276 -2276
- package/commands/vibe.spec.md +1195 -1195
- package/commands/vibe.spec.review.md +609 -609
- package/commands/vibe.trace.md +259 -259
- package/commands/vibe.utils.md +413 -413
- package/commands/vibe.verify.md +510 -510
- package/dist/cli/collaborator.js +52 -52
- package/dist/cli/commands/config.js +9 -9
- package/dist/cli/commands/evolution.js +12 -12
- package/dist/cli/commands/figma.js +20 -20
- package/dist/cli/commands/info.js +53 -53
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +82 -15
- 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.js +5 -5
- package/dist/cli/commands/slack.js +10 -10
- package/dist/cli/commands/stats.js +6 -6
- package/dist/cli/commands/telegram.js +12 -12
- package/dist/cli/detect.js +32 -32
- package/dist/cli/index.js +51 -51
- package/dist/cli/llm/claude-commands.js +16 -16
- package/dist/cli/llm/config.js +18 -18
- package/dist/cli/llm/gemini-commands.js +16 -16
- package/dist/cli/llm/gpt-commands.js +19 -19
- package/dist/cli/llm/help.js +21 -21
- package/dist/cli/postinstall/constants.d.ts.map +1 -1
- package/dist/cli/postinstall/constants.js +2 -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/setup/Provisioner.js +42 -42
- package/dist/cli/types.d.ts +12 -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/TokenBudgetTracker.d.ts +13 -0
- package/dist/infra/lib/TokenBudgetTracker.d.ts.map +1 -1
- package/dist/infra/lib/TokenBudgetTracker.js +44 -3
- package/dist/infra/lib/TokenBudgetTracker.js.map +1 -1
- 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.d.ts +3 -3
- 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.js +21 -21
- package/dist/infra/lib/evolution/GenerationRegistry.js +36 -36
- package/dist/infra/lib/evolution/InsightStore.js +90 -90
- package/dist/infra/lib/evolution/ParityTester.js +57 -57
- package/dist/infra/lib/evolution/RollbackManager.js +5 -5
- package/dist/infra/lib/evolution/SkillBenchmark.js +23 -23
- package/dist/infra/lib/evolution/SkillEvalRunner.js +50 -50
- package/dist/infra/lib/evolution/SkillGapDetector.js +10 -10
- package/dist/infra/lib/evolution/UsageTracker.js +28 -28
- package/dist/infra/lib/gemini/orchestration.js +5 -5
- 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 +174 -170
- package/hooks/scripts/__tests__/keyword-detector.test.js +199 -199
- package/hooks/scripts/__tests__/pre-tool-guard.test.js +286 -286
- package/hooks/scripts/__tests__/sentinel-guard.test.js +210 -210
- package/hooks/scripts/auto-commit.js +97 -97
- package/hooks/scripts/auto-format.js +64 -64
- package/hooks/scripts/auto-test.js +81 -81
- package/hooks/scripts/code-check.js +268 -268
- package/hooks/scripts/codex-detect.js +46 -46
- package/hooks/scripts/codex-review-gate.js +80 -80
- package/hooks/scripts/command-log.js +32 -32
- package/hooks/scripts/context-save.js +353 -353
- package/hooks/scripts/devlog-gen.js +230 -0
- package/hooks/scripts/evolution-engine.js +91 -91
- package/hooks/scripts/figma-extract.js +635 -477
- package/hooks/scripts/hud-status.js +321 -321
- package/hooks/scripts/keyword-detector.js +214 -214
- package/hooks/scripts/llm-orchestrate.js +572 -572
- package/hooks/scripts/post-edit.js +32 -32
- package/hooks/scripts/pr-test-gate.js +52 -52
- package/hooks/scripts/pre-tool-guard.js +214 -159
- package/hooks/scripts/prompt-dispatcher.js +185 -185
- package/hooks/scripts/sentinel-guard.js +131 -131
- package/hooks/scripts/session-start.js +177 -177
- package/hooks/scripts/skill-injector.js +83 -83
- package/hooks/scripts/stop-notify.js +209 -209
- package/hooks/scripts/utils.js +243 -243
- 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 +101 -101
- package/skills/agents-md/SKILL.md +121 -121
- package/skills/agents-md/rubrics/what-to-keep.md +49 -49
- package/skills/agents-md/templates/agents-md.md +36 -36
- package/skills/arch-guard/SKILL.md +181 -181
- package/skills/arch-guard/agents/detector.md +48 -48
- package/skills/arch-guard/agents/reporter.md +48 -48
- package/skills/arch-guard/agents/rule-generator.md +49 -49
- package/skills/arch-guard/agents/violation-checker.md +51 -51
- package/skills/arch-guard/frameworks/clean-architecture.md +108 -108
- package/skills/arch-guard/frameworks/solid.md +102 -102
- package/skills/arch-guard/scripts/check-boundaries.js +90 -90
- package/skills/arch-guard/templates/arch-rules.json +47 -47
- package/skills/arch-guard/templates/violation-report.md +53 -53
- package/skills/brand-assets/SKILL.md +147 -147
- package/skills/brand-assets/rubrics/asset-checklist.md +98 -98
- package/skills/brand-assets/templates/brand-guide.md +161 -161
- package/skills/capability-loop/SKILL.md +168 -168
- package/skills/capability-loop/agents/capability-designer.md +61 -61
- package/skills/capability-loop/agents/failure-analyst.md +55 -55
- package/skills/capability-loop/agents/implementer.md +50 -50
- package/skills/capability-loop/agents/tester.md +53 -53
- package/skills/capability-loop/templates/capability-spec.md +118 -118
- package/skills/capability-loop/templates/failure-analysis.md +118 -118
- package/skills/characterization-test/SKILL.md +207 -207
- package/skills/characterization-test/agents/behavior-capturer.md +50 -50
- package/skills/characterization-test/agents/coverage-checker.md +54 -54
- package/skills/characterization-test/agents/reporter.md +50 -50
- package/skills/characterization-test/agents/test-writer.md +49 -49
- package/skills/characterization-test/rubrics/coverage-criteria.md +53 -53
- package/skills/characterization-test/templates/test-template.ts +101 -101
- package/skills/chub-usage/SKILL.md +139 -139
- package/skills/claude-md-guide/SKILL.md +351 -351
- package/skills/claude-md-guide/rubrics/anti-patterns.md +88 -88
- package/skills/claude-md-guide/templates/claude-md.md +54 -54
- package/skills/commerce-patterns/SKILL.md +64 -64
- package/skills/commerce-patterns/rubrics/checkout-flow.md +48 -48
- package/skills/commerce-patterns/templates/product-schema.md +85 -85
- package/skills/commit-push-pr/SKILL.md +77 -77
- package/skills/commit-push-pr/agents/change-analyzer.md +55 -55
- package/skills/commit-push-pr/agents/message-writer.md +50 -50
- package/skills/commit-push-pr/agents/pr-writer.md +58 -58
- package/skills/commit-push-pr/agents/reviewer.md +52 -52
- package/skills/commit-push-pr/rubrics/commit-message.md +73 -73
- package/skills/commit-push-pr/templates/pr-body.md +63 -63
- package/skills/context7-usage/SKILL.md +106 -106
- package/skills/context7-usage/rubrics/when-to-use.md +50 -50
- package/skills/create-prd/SKILL.md +90 -90
- package/skills/create-prd/agents/edge-case-finder.md +48 -48
- package/skills/create-prd/agents/prioritizer.md +60 -60
- package/skills/create-prd/agents/requirements-writer.md +48 -48
- package/skills/create-prd/agents/researcher.md +55 -55
- package/skills/create-prd/agents/reviewer.md +54 -54
- package/skills/create-prd/frameworks/jobs-to-be-done.md +96 -96
- package/skills/create-prd/frameworks/rice-scoring.md +97 -97
- package/skills/create-prd/orchestrator.md +70 -70
- package/skills/create-prd/rubrics/completeness.md +58 -58
- package/skills/create-prd/templates/prd.md +139 -139
- package/skills/design-audit/SKILL.md +152 -152
- package/skills/design-audit/agents/a11y-auditor.md +43 -43
- package/skills/design-audit/agents/performance-auditor.md +46 -46
- package/skills/design-audit/agents/responsive-auditor.md +46 -46
- package/skills/design-audit/agents/scorer.md +47 -47
- package/skills/design-audit/agents/slop-detector.md +47 -47
- package/skills/design-audit/frameworks/core-web-vitals.md +107 -107
- package/skills/design-audit/frameworks/wcag-checklist.md +64 -64
- package/skills/design-audit/orchestrator.md +64 -64
- package/skills/design-audit/rubrics/ai-slop-patterns.md +83 -83
- package/skills/design-audit/rubrics/scoring.md +63 -63
- package/skills/design-audit/templates/report.md +88 -88
- package/skills/design-critique/SKILL.md +139 -139
- package/skills/design-critique/rubrics/ux-heuristics.md +143 -143
- package/skills/design-critique/templates/critique-report.md +86 -86
- package/skills/design-distill/SKILL.md +130 -130
- package/skills/design-distill/templates/design-system.md +132 -132
- package/skills/design-normalize/SKILL.md +133 -133
- package/skills/design-normalize/rubrics/token-naming.md +117 -117
- package/skills/design-normalize/templates/token-audit.md +89 -89
- package/skills/design-polish/SKILL.md +131 -131
- package/skills/design-polish/rubrics/polish-checklist.md +68 -68
- package/skills/design-polish/templates/polish-report.md +64 -64
- package/skills/design-teach/SKILL.md +182 -182
- package/skills/design-teach/rubrics/brand-personality.md +73 -73
- package/skills/design-teach/templates/design-context.json +36 -36
- package/skills/devlog/SKILL.md +143 -0
- package/skills/e2e-commerce/SKILL.md +62 -62
- package/skills/e2e-commerce/templates/test-scenarios.md +170 -170
- package/skills/event-comms/SKILL.md +162 -162
- package/skills/event-comms/templates/email-invite.md +99 -99
- package/skills/event-comms/templates/sns-post.md +133 -133
- package/skills/event-ops/SKILL.md +198 -198
- package/skills/event-ops/rubrics/contingency.md +85 -85
- package/skills/event-ops/templates/d-day-checklist.md +65 -65
- package/skills/event-planning/SKILL.md +132 -132
- package/skills/event-planning/rubrics/timeline.md +70 -70
- package/skills/event-planning/templates/event-plan.md +91 -91
- package/skills/exec-plan/SKILL.md +149 -149
- package/skills/exec-plan/agents/decomposer.md +47 -47
- package/skills/exec-plan/agents/dependency-mapper.md +44 -44
- package/skills/exec-plan/agents/estimator.md +43 -43
- package/skills/exec-plan/agents/validator.md +55 -55
- package/skills/exec-plan/orchestrator.md +70 -70
- package/skills/exec-plan/rubrics/complexity-scoring.md +75 -75
- package/skills/exec-plan/templates/plan.md +147 -147
- package/skills/git-worktree/SKILL.md +73 -73
- package/skills/git-worktree/rubrics/when-to-use.md +55 -55
- package/skills/handoff/SKILL.md +110 -110
- package/skills/handoff/agents/context-summarizer.md +51 -51
- package/skills/handoff/agents/document-writer.md +63 -63
- package/skills/handoff/agents/state-collector.md +53 -53
- package/skills/handoff/agents/verifier.md +48 -48
- package/skills/handoff/rubrics/completeness.md +62 -62
- package/skills/handoff/templates/handoff.md +107 -107
- package/skills/parallel-research/SKILL.md +89 -89
- package/skills/parallel-research/agents/best-practices.md +43 -43
- package/skills/parallel-research/agents/codebase-patterns.md +46 -46
- package/skills/parallel-research/agents/framework-docs.md +45 -45
- package/skills/parallel-research/agents/security-advisory.md +46 -46
- package/skills/parallel-research/agents/synthesizer.md +52 -52
- package/skills/parallel-research/experts/best-practices.md +50 -50
- package/skills/parallel-research/experts/codebase-patterns.md +70 -70
- package/skills/parallel-research/experts/framework-docs.md +65 -65
- package/skills/parallel-research/experts/security-advisory.md +69 -69
- package/skills/parallel-research/orchestrator.md +65 -65
- package/skills/parallel-research/templates/synthesis.md +101 -101
- package/skills/prioritization-frameworks/SKILL.md +87 -87
- package/skills/prioritization-frameworks/rubrics/frameworks.md +79 -79
- package/skills/prioritization-frameworks/templates/scoring-matrix.md +69 -69
- package/skills/priority-todos/SKILL.md +64 -64
- package/skills/priority-todos/rubrics/prioritization.md +70 -70
- package/skills/priority-todos/templates/todo-board.md +59 -59
- package/skills/seo-checklist/SKILL.md +58 -58
- package/skills/seo-checklist/frameworks/structured-data.md +153 -153
- package/skills/seo-checklist/rubrics/content-seo.md +42 -42
- package/skills/seo-checklist/rubrics/technical-seo.md +48 -48
- package/skills/techdebt/SKILL.md +124 -124
- package/skills/techdebt/agents/analyzer.md +50 -50
- package/skills/techdebt/agents/fixer.md +41 -41
- package/skills/techdebt/agents/reviewer.md +47 -47
- package/skills/techdebt/agents/scanner.md +44 -44
- package/skills/techdebt/orchestrator.md +70 -70
- package/skills/techdebt/rubrics/severity.md +51 -51
- package/skills/techdebt/scripts/scan.js +90 -90
- package/skills/techdebt/templates/report.md +86 -86
- package/skills/tool-fallback/SKILL.md +104 -104
- package/skills/tool-fallback/rubrics/fallback-chain.md +58 -58
- package/skills/typescript-advanced-types/SKILL.md +67 -67
- package/skills/typescript-advanced-types/rubrics/type-patterns.md +109 -109
- package/skills/ui-ux-pro-max/SKILL.md +236 -236
- package/skills/ui-ux-pro-max/reference/color-and-contrast.md +517 -517
- package/skills/ui-ux-pro-max/reference/interaction-design.md +544 -544
- package/skills/ui-ux-pro-max/reference/motion-design.md +591 -591
- package/skills/ui-ux-pro-max/reference/responsive-design.md +463 -463
- package/skills/ui-ux-pro-max/reference/spatial-design.md +390 -390
- package/skills/ui-ux-pro-max/reference/typography.md +455 -455
- package/skills/ui-ux-pro-max/reference/ux-writing.md +469 -469
- package/skills/ui-ux-pro-max/rubrics/interaction-states.md +83 -83
- package/skills/ui-ux-pro-max/rubrics/responsive-breakpoints.md +99 -99
- package/skills/user-personas/SKILL.md +75 -75
- package/skills/user-personas/rubrics/research-methods.md +56 -56
- package/skills/user-personas/templates/persona.md +89 -89
- package/skills/vercel-react-best-practices/SKILL.md +60 -60
- package/skills/vercel-react-best-practices/rubrics/performance.md +82 -82
- package/skills/vercel-react-best-practices/rubrics/server-components.md +86 -86
- package/skills/vibe.docs/SKILL.md +171 -171
- package/skills/vibe.docs/templates/architecture.md +80 -80
- package/skills/vibe.docs/templates/readme.md +84 -84
- package/skills/vibe.docs/templates/release-notes.md +74 -74
- package/skills/vibe.figma/SKILL.md +215 -982
- package/skills/vibe.figma/rubrics/extraction-checklist.md +51 -51
- package/skills/vibe.figma/templates/component-index.md +126 -126
- package/skills/vibe.figma/templates/figma-handoff.md +100 -100
- package/skills/vibe.figma/templates/remapped-tree.md +277 -277
- package/skills/vibe.figma.convert/SKILL.md +188 -511
- package/skills/vibe.figma.convert/rubrics/conversion-rules.md +129 -113
- package/skills/vibe.figma.convert/templates/component.md +140 -140
- package/skills/vibe.figma.extract/SKILL.md +179 -300
- package/skills/vibe.figma.extract/rubrics/image-rules.md +145 -137
- package/skills/video-production/SKILL.md +52 -52
- package/skills/video-production/rubrics/quality-checklist.md +58 -58
- package/skills/video-production/templates/production-plan.md +104 -104
- 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
|
@@ -198,33 +198,33 @@ export function substituteTemplateVars(template, vars) {
|
|
|
198
198
|
/**
|
|
199
199
|
* Example skill template
|
|
200
200
|
*/
|
|
201
|
-
export const SKILL_TEMPLATE_EXAMPLE = `---
|
|
202
|
-
name: example-skill
|
|
203
|
-
description: "An example skill demonstrating the frontmatter system"
|
|
204
|
-
model: sonnet
|
|
205
|
-
agent: implementer
|
|
206
|
-
argument-hint: "task description"
|
|
207
|
-
user-invocable: true
|
|
208
|
-
triggers: [example, demo, test]
|
|
209
|
-
priority: 50
|
|
210
|
-
---
|
|
211
|
-
|
|
212
|
-
# Example Skill
|
|
213
|
-
|
|
214
|
-
This skill demonstrates the frontmatter metadata system.
|
|
215
|
-
|
|
216
|
-
## Arguments
|
|
217
|
-
|
|
218
|
-
$ARGUMENTS
|
|
219
|
-
|
|
220
|
-
## Process
|
|
221
|
-
|
|
222
|
-
1. Parse the arguments
|
|
223
|
-
2. Execute the task
|
|
224
|
-
3. Return the result
|
|
225
|
-
|
|
226
|
-
## Output
|
|
227
|
-
|
|
228
|
-
Provide a clear summary of what was done.
|
|
201
|
+
export const SKILL_TEMPLATE_EXAMPLE = `---
|
|
202
|
+
name: example-skill
|
|
203
|
+
description: "An example skill demonstrating the frontmatter system"
|
|
204
|
+
model: sonnet
|
|
205
|
+
agent: implementer
|
|
206
|
+
argument-hint: "task description"
|
|
207
|
+
user-invocable: true
|
|
208
|
+
triggers: [example, demo, test]
|
|
209
|
+
priority: 50
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
# Example Skill
|
|
213
|
+
|
|
214
|
+
This skill demonstrates the frontmatter metadata system.
|
|
215
|
+
|
|
216
|
+
## Arguments
|
|
217
|
+
|
|
218
|
+
$ARGUMENTS
|
|
219
|
+
|
|
220
|
+
## Process
|
|
221
|
+
|
|
222
|
+
1. Parse the arguments
|
|
223
|
+
2. Execute the task
|
|
224
|
+
3. Return the result
|
|
225
|
+
|
|
226
|
+
## Output
|
|
227
|
+
|
|
228
|
+
Provide a clear summary of what was done.
|
|
229
229
|
`;
|
|
230
230
|
//# sourceMappingURL=SkillFrontmatter.js.map
|
|
@@ -137,15 +137,15 @@ export function suggestPrincipleFormat(value) {
|
|
|
137
137
|
return value;
|
|
138
138
|
}
|
|
139
139
|
// 변환 템플릿 제안
|
|
140
|
-
return `Consider reformulating as:
|
|
141
|
-
|
|
142
|
-
"When [describe the situation/trigger],
|
|
143
|
-
[describe the action to take]
|
|
144
|
-
because [explain the reasoning/tradeoff]"
|
|
145
|
-
|
|
146
|
-
Example:
|
|
147
|
-
"When the auth token expires during a request,
|
|
148
|
-
retry the request after refreshing the token (not before)
|
|
140
|
+
return `Consider reformulating as:
|
|
141
|
+
|
|
142
|
+
"When [describe the situation/trigger],
|
|
143
|
+
[describe the action to take]
|
|
144
|
+
because [explain the reasoning/tradeoff]"
|
|
145
|
+
|
|
146
|
+
Example:
|
|
147
|
+
"When the auth token expires during a request,
|
|
148
|
+
retry the request after refreshing the token (not before)
|
|
149
149
|
because refreshing preemptively causes race conditions with concurrent requests"`;
|
|
150
150
|
}
|
|
151
151
|
/**
|
|
@@ -285,177 +285,177 @@ export function getDefaultSkills(corePathUrl) {
|
|
|
285
285
|
return [
|
|
286
286
|
{
|
|
287
287
|
id: 'multi-llm-orchestration',
|
|
288
|
-
content: `---
|
|
289
|
-
name: multi-llm-orchestration
|
|
290
|
-
description: "Multi-LLM research using GPT and Gemini for comprehensive analysis"
|
|
291
|
-
triggers: [gpt, gemini, multi-llm, research, parallel research]
|
|
292
|
-
priority: 80
|
|
293
|
-
---
|
|
294
|
-
# Multi-LLM Orchestration
|
|
295
|
-
|
|
296
|
-
Use multiple LLMs for comprehensive research and validation.
|
|
297
|
-
|
|
298
|
-
## Usage
|
|
299
|
-
|
|
300
|
-
\`\`\`bash
|
|
301
|
-
# Via Bash hook (automatic in /vibe.spec)
|
|
302
|
-
node hooks/scripts/llm-orchestrate.js gpt "your prompt"
|
|
303
|
-
node hooks/scripts/llm-orchestrate.js gemini "your prompt"
|
|
304
|
-
\`\`\`
|
|
305
|
-
|
|
306
|
-
## Setup
|
|
307
|
-
|
|
308
|
-
\`\`\`bash
|
|
309
|
-
vibe gpt key <key> # Configure GPT API key
|
|
310
|
-
vibe gemini key <key> # Configure Gemini API key
|
|
311
|
-
vibe status # Check current configuration
|
|
312
|
-
\`\`\`
|
|
313
|
-
|
|
314
|
-
## Best Practices
|
|
315
|
-
|
|
316
|
-
1. Use GPT for best practices and code review
|
|
317
|
-
2. Use Gemini for documentation and security analysis
|
|
318
|
-
3. Combine results for comprehensive coverage
|
|
288
|
+
content: `---
|
|
289
|
+
name: multi-llm-orchestration
|
|
290
|
+
description: "Multi-LLM research using GPT and Gemini for comprehensive analysis"
|
|
291
|
+
triggers: [gpt, gemini, multi-llm, research, parallel research]
|
|
292
|
+
priority: 80
|
|
293
|
+
---
|
|
294
|
+
# Multi-LLM Orchestration
|
|
295
|
+
|
|
296
|
+
Use multiple LLMs for comprehensive research and validation.
|
|
297
|
+
|
|
298
|
+
## Usage
|
|
299
|
+
|
|
300
|
+
\`\`\`bash
|
|
301
|
+
# Via Bash hook (automatic in /vibe.spec)
|
|
302
|
+
node hooks/scripts/llm-orchestrate.js gpt "your prompt"
|
|
303
|
+
node hooks/scripts/llm-orchestrate.js gemini "your prompt"
|
|
304
|
+
\`\`\`
|
|
305
|
+
|
|
306
|
+
## Setup
|
|
307
|
+
|
|
308
|
+
\`\`\`bash
|
|
309
|
+
vibe gpt key <key> # Configure GPT API key
|
|
310
|
+
vibe gemini key <key> # Configure Gemini API key
|
|
311
|
+
vibe status # Check current configuration
|
|
312
|
+
\`\`\`
|
|
313
|
+
|
|
314
|
+
## Best Practices
|
|
315
|
+
|
|
316
|
+
1. Use GPT for best practices and code review
|
|
317
|
+
2. Use Gemini for documentation and security analysis
|
|
318
|
+
3. Combine results for comprehensive coverage
|
|
319
319
|
`,
|
|
320
320
|
},
|
|
321
321
|
{
|
|
322
322
|
id: 'error-recovery',
|
|
323
|
-
content: `---
|
|
324
|
-
name: error-recovery
|
|
325
|
-
description: "Error recovery patterns and retry strategies"
|
|
326
|
-
triggers: [error, fail, retry, recover, fix]
|
|
327
|
-
priority: 70
|
|
328
|
-
---
|
|
329
|
-
# Error Recovery Patterns
|
|
330
|
-
|
|
331
|
-
## Common Error Types
|
|
332
|
-
|
|
333
|
-
### Build Errors
|
|
334
|
-
- Check TypeScript compilation errors
|
|
335
|
-
- Verify dependency versions
|
|
336
|
-
- Run \`npm ci\` to clean install
|
|
337
|
-
|
|
338
|
-
### Test Failures
|
|
339
|
-
- Run failed tests in isolation
|
|
340
|
-
- Check test fixtures/mocks
|
|
341
|
-
- Verify async timing issues
|
|
342
|
-
|
|
343
|
-
### Runtime Errors
|
|
344
|
-
- Check stack trace carefully
|
|
345
|
-
- Verify environment variables
|
|
346
|
-
- Check external service connectivity
|
|
347
|
-
|
|
348
|
-
## Retry Strategy
|
|
349
|
-
|
|
350
|
-
1. First retry: Same action
|
|
351
|
-
2. Second retry: Clean state (cache clear)
|
|
352
|
-
3. Third retry: Alternative approach
|
|
353
|
-
4. Max retries exceeded: Escalate to user
|
|
354
|
-
|
|
355
|
-
## Auto-Recovery Commands
|
|
356
|
-
|
|
357
|
-
\`\`\`bash
|
|
358
|
-
# Clean build
|
|
359
|
-
rm -rf node_modules dist && npm ci && npm run build
|
|
360
|
-
|
|
361
|
-
# Reset git state (careful!)
|
|
362
|
-
git stash && git checkout .
|
|
363
|
-
|
|
364
|
-
# Clear caches
|
|
365
|
-
npm cache clean --force
|
|
366
|
-
\`\`\`
|
|
323
|
+
content: `---
|
|
324
|
+
name: error-recovery
|
|
325
|
+
description: "Error recovery patterns and retry strategies"
|
|
326
|
+
triggers: [error, fail, retry, recover, fix]
|
|
327
|
+
priority: 70
|
|
328
|
+
---
|
|
329
|
+
# Error Recovery Patterns
|
|
330
|
+
|
|
331
|
+
## Common Error Types
|
|
332
|
+
|
|
333
|
+
### Build Errors
|
|
334
|
+
- Check TypeScript compilation errors
|
|
335
|
+
- Verify dependency versions
|
|
336
|
+
- Run \`npm ci\` to clean install
|
|
337
|
+
|
|
338
|
+
### Test Failures
|
|
339
|
+
- Run failed tests in isolation
|
|
340
|
+
- Check test fixtures/mocks
|
|
341
|
+
- Verify async timing issues
|
|
342
|
+
|
|
343
|
+
### Runtime Errors
|
|
344
|
+
- Check stack trace carefully
|
|
345
|
+
- Verify environment variables
|
|
346
|
+
- Check external service connectivity
|
|
347
|
+
|
|
348
|
+
## Retry Strategy
|
|
349
|
+
|
|
350
|
+
1. First retry: Same action
|
|
351
|
+
2. Second retry: Clean state (cache clear)
|
|
352
|
+
3. Third retry: Alternative approach
|
|
353
|
+
4. Max retries exceeded: Escalate to user
|
|
354
|
+
|
|
355
|
+
## Auto-Recovery Commands
|
|
356
|
+
|
|
357
|
+
\`\`\`bash
|
|
358
|
+
# Clean build
|
|
359
|
+
rm -rf node_modules dist && npm ci && npm run build
|
|
360
|
+
|
|
361
|
+
# Reset git state (careful!)
|
|
362
|
+
git stash && git checkout .
|
|
363
|
+
|
|
364
|
+
# Clear caches
|
|
365
|
+
npm cache clean --force
|
|
366
|
+
\`\`\`
|
|
367
367
|
`,
|
|
368
368
|
},
|
|
369
369
|
{
|
|
370
370
|
id: 'code-quality-check',
|
|
371
|
-
content: `---
|
|
372
|
-
name: code-quality-check
|
|
373
|
-
description: "Code quality validation using core tools"
|
|
374
|
-
triggers: [quality, lint, complexity, review]
|
|
375
|
-
priority: 60
|
|
376
|
-
---
|
|
377
|
-
# Code Quality Check
|
|
378
|
-
|
|
379
|
-
## Using Core Tools
|
|
380
|
-
|
|
381
|
-
\`\`\`bash
|
|
382
|
-
# Analyze complexity
|
|
383
|
-
node -e "import('${corePathUrl}/node_modules/@su-record/vibe/dist/tools/index.js').then(t =>
|
|
384
|
-
t.analyzeComplexity({targetPath: 'src/', projectPath: process.cwd()})
|
|
385
|
-
.then(r => console.log(r.content[0].text))
|
|
386
|
-
)"
|
|
387
|
-
|
|
388
|
-
# Validate quality
|
|
389
|
-
node -e "import('${corePathUrl}/node_modules/@su-record/vibe/dist/tools/index.js').then(t =>
|
|
390
|
-
t.validateCodeQuality({targetPath: 'src/', projectPath: process.cwd()})
|
|
391
|
-
.then(r => console.log(r.content[0].text))
|
|
392
|
-
)"
|
|
393
|
-
\`\`\`
|
|
394
|
-
|
|
395
|
-
## Quality Metrics
|
|
396
|
-
|
|
397
|
-
| Metric | Good | Warning | Critical |
|
|
398
|
-
|--------|------|---------|----------|
|
|
399
|
-
| Cyclomatic Complexity | ≤10 | 11-15 | >15 |
|
|
400
|
-
| Function Length | ≤30 | 31-50 | >50 |
|
|
401
|
-
| Nesting Depth | ≤3 | 4 | >4 |
|
|
402
|
-
|
|
403
|
-
## Common Issues
|
|
404
|
-
|
|
405
|
-
1. **High Complexity**: Extract helper functions
|
|
406
|
-
2. **Long Functions**: Split by responsibility
|
|
407
|
-
3. **Deep Nesting**: Use early returns
|
|
408
|
-
4. **Tight Coupling**: Apply dependency injection
|
|
371
|
+
content: `---
|
|
372
|
+
name: code-quality-check
|
|
373
|
+
description: "Code quality validation using core tools"
|
|
374
|
+
triggers: [quality, lint, complexity, review]
|
|
375
|
+
priority: 60
|
|
376
|
+
---
|
|
377
|
+
# Code Quality Check
|
|
378
|
+
|
|
379
|
+
## Using Core Tools
|
|
380
|
+
|
|
381
|
+
\`\`\`bash
|
|
382
|
+
# Analyze complexity
|
|
383
|
+
node -e "import('${corePathUrl}/node_modules/@su-record/vibe/dist/tools/index.js').then(t =>
|
|
384
|
+
t.analyzeComplexity({targetPath: 'src/', projectPath: process.cwd()})
|
|
385
|
+
.then(r => console.log(r.content[0].text))
|
|
386
|
+
)"
|
|
387
|
+
|
|
388
|
+
# Validate quality
|
|
389
|
+
node -e "import('${corePathUrl}/node_modules/@su-record/vibe/dist/tools/index.js').then(t =>
|
|
390
|
+
t.validateCodeQuality({targetPath: 'src/', projectPath: process.cwd()})
|
|
391
|
+
.then(r => console.log(r.content[0].text))
|
|
392
|
+
)"
|
|
393
|
+
\`\`\`
|
|
394
|
+
|
|
395
|
+
## Quality Metrics
|
|
396
|
+
|
|
397
|
+
| Metric | Good | Warning | Critical |
|
|
398
|
+
|--------|------|---------|----------|
|
|
399
|
+
| Cyclomatic Complexity | ≤10 | 11-15 | >15 |
|
|
400
|
+
| Function Length | ≤30 | 31-50 | >50 |
|
|
401
|
+
| Nesting Depth | ≤3 | 4 | >4 |
|
|
402
|
+
|
|
403
|
+
## Common Issues
|
|
404
|
+
|
|
405
|
+
1. **High Complexity**: Extract helper functions
|
|
406
|
+
2. **Long Functions**: Split by responsibility
|
|
407
|
+
3. **Deep Nesting**: Use early returns
|
|
408
|
+
4. **Tight Coupling**: Apply dependency injection
|
|
409
409
|
`,
|
|
410
410
|
},
|
|
411
411
|
{
|
|
412
412
|
id: 'session-management',
|
|
413
|
-
content: `---
|
|
414
|
-
name: session-management
|
|
415
|
-
description: "Context and session management across conversations"
|
|
416
|
-
triggers: [session, context, memory, save, restore, continue]
|
|
417
|
-
priority: 75
|
|
418
|
-
---
|
|
419
|
-
# Session Management
|
|
420
|
-
|
|
421
|
-
## Starting a Session
|
|
422
|
-
|
|
423
|
-
\`\`\`bash
|
|
424
|
-
# Auto-restore previous context
|
|
425
|
-
node -e "import('${corePathUrl}/node_modules/@su-record/vibe/dist/tools/index.js').then(t =>
|
|
426
|
-
t.startSession({projectPath: process.cwd()})
|
|
427
|
-
.then(r => console.log(r.content[0].text))
|
|
428
|
-
)"
|
|
429
|
-
\`\`\`
|
|
430
|
-
|
|
431
|
-
## Saving Context
|
|
432
|
-
|
|
433
|
-
\`\`\`bash
|
|
434
|
-
# Save important decisions
|
|
435
|
-
node -e "import('${corePathUrl}/node_modules/@su-record/vibe/dist/tools/index.js').then(t =>
|
|
436
|
-
t.saveMemory({
|
|
437
|
-
key: 'decision-auth-method',
|
|
438
|
-
value: 'Using JWT with refresh tokens for auth',
|
|
439
|
-
category: 'architecture',
|
|
440
|
-
projectPath: process.cwd()
|
|
441
|
-
}).then(r => console.log(r.content[0].text))
|
|
442
|
-
)"
|
|
443
|
-
\`\`\`
|
|
444
|
-
|
|
445
|
-
## Context Management
|
|
446
|
-
|
|
447
|
-
At 70%+ context usage:
|
|
448
|
-
1. Use \`saveMemory\` for important decisions
|
|
449
|
-
2. Start new session with \`/new\`
|
|
450
|
-
3. Previous context auto-restores
|
|
451
|
-
|
|
452
|
-
## Slash Command
|
|
453
|
-
|
|
454
|
-
\`\`\`
|
|
455
|
-
/vibe.utils --continue
|
|
456
|
-
\`\`\`
|
|
457
|
-
|
|
458
|
-
Restores previous session context automatically.
|
|
413
|
+
content: `---
|
|
414
|
+
name: session-management
|
|
415
|
+
description: "Context and session management across conversations"
|
|
416
|
+
triggers: [session, context, memory, save, restore, continue]
|
|
417
|
+
priority: 75
|
|
418
|
+
---
|
|
419
|
+
# Session Management
|
|
420
|
+
|
|
421
|
+
## Starting a Session
|
|
422
|
+
|
|
423
|
+
\`\`\`bash
|
|
424
|
+
# Auto-restore previous context
|
|
425
|
+
node -e "import('${corePathUrl}/node_modules/@su-record/vibe/dist/tools/index.js').then(t =>
|
|
426
|
+
t.startSession({projectPath: process.cwd()})
|
|
427
|
+
.then(r => console.log(r.content[0].text))
|
|
428
|
+
)"
|
|
429
|
+
\`\`\`
|
|
430
|
+
|
|
431
|
+
## Saving Context
|
|
432
|
+
|
|
433
|
+
\`\`\`bash
|
|
434
|
+
# Save important decisions
|
|
435
|
+
node -e "import('${corePathUrl}/node_modules/@su-record/vibe/dist/tools/index.js').then(t =>
|
|
436
|
+
t.saveMemory({
|
|
437
|
+
key: 'decision-auth-method',
|
|
438
|
+
value: 'Using JWT with refresh tokens for auth',
|
|
439
|
+
category: 'architecture',
|
|
440
|
+
projectPath: process.cwd()
|
|
441
|
+
}).then(r => console.log(r.content[0].text))
|
|
442
|
+
)"
|
|
443
|
+
\`\`\`
|
|
444
|
+
|
|
445
|
+
## Context Management
|
|
446
|
+
|
|
447
|
+
At 70%+ context usage:
|
|
448
|
+
1. Use \`saveMemory\` for important decisions
|
|
449
|
+
2. Start new session with \`/new\`
|
|
450
|
+
3. Previous context auto-restores
|
|
451
|
+
|
|
452
|
+
## Slash Command
|
|
453
|
+
|
|
454
|
+
\`\`\`
|
|
455
|
+
/vibe.utils --continue
|
|
456
|
+
\`\`\`
|
|
457
|
+
|
|
458
|
+
Restores previous session context automatically.
|
|
459
459
|
`,
|
|
460
460
|
},
|
|
461
461
|
];
|
|
@@ -26,6 +26,7 @@ interface ThresholdCrossing {
|
|
|
26
26
|
crossedAt: number;
|
|
27
27
|
timestamp: string;
|
|
28
28
|
}
|
|
29
|
+
export type ThresholdCallback = (level: ThresholdLevel, snapshot: BudgetSnapshot) => void | Promise<void>;
|
|
29
30
|
export declare class TokenBudgetTracker {
|
|
30
31
|
private static instances;
|
|
31
32
|
private static defaultInstance;
|
|
@@ -34,9 +35,21 @@ export declare class TokenBudgetTracker {
|
|
|
34
35
|
private bySource;
|
|
35
36
|
private crossings;
|
|
36
37
|
private lastLevel;
|
|
38
|
+
private thresholdCallbacks;
|
|
39
|
+
private circuitBreakerFailures;
|
|
40
|
+
private static readonly MAX_CIRCUIT_FAILURES;
|
|
37
41
|
private constructor();
|
|
38
42
|
static getInstance(projectPath?: string, totalBudget?: number): TokenBudgetTracker;
|
|
39
43
|
trackConsumption(source: TokenSource, tokens: number): ThresholdLevel;
|
|
44
|
+
/**
|
|
45
|
+
* 특정 threshold 도달 시 자동 실행할 콜백 등록.
|
|
46
|
+
* 예: medium(75%) → 자동 압축, hard(85%) → 경고, critical(95%) → 중단
|
|
47
|
+
*/
|
|
48
|
+
onThreshold(level: ThresholdLevel, callback: ThresholdCallback): void;
|
|
49
|
+
/** 회로 차단기: 연속 실패 시 콜백 실행 중단 */
|
|
50
|
+
isCircuitOpen(): boolean;
|
|
51
|
+
resetCircuitBreaker(): void;
|
|
52
|
+
private fireCallbacks;
|
|
40
53
|
syncToPercent(percent: number): void;
|
|
41
54
|
getRemainingBudget(): number;
|
|
42
55
|
getUsagePercent(): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenBudgetTracker.d.ts","sourceRoot":"","sources":["../../../src/infra/lib/TokenBudgetTracker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,MAAM,MAAM,WAAW,GACnB,aAAa,GACb,QAAQ,GACR,OAAO,GACP,aAAa,GACb,WAAW,GACX,aAAa,GACb,QAAQ,CAAC;AAEb,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAE9E,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,cAAc,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACtC,SAAS,EAAE,iBAAiB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,UAAU,iBAAiB;IACzB,KAAK,EAAE,cAAc,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAsBD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,SAAS,CAA8C;IACtE,OAAO,CAAC,MAAM,CAAC,eAAe,CAAmC;IAEjE,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,SAAS,CAAiB;
|
|
1
|
+
{"version":3,"file":"TokenBudgetTracker.d.ts","sourceRoot":"","sources":["../../../src/infra/lib/TokenBudgetTracker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,MAAM,MAAM,WAAW,GACnB,aAAa,GACb,QAAQ,GACR,OAAO,GACP,aAAa,GACb,WAAW,GACX,aAAa,GACb,QAAQ,CAAC;AAEb,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAE9E,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,cAAc,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACtC,SAAS,EAAE,iBAAiB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,UAAU,iBAAiB;IACzB,KAAK,EAAE,cAAc,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAsBD,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1G,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,SAAS,CAA8C;IACtE,OAAO,CAAC,MAAM,CAAC,eAAe,CAAmC;IAEjE,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,kBAAkB,CAA2C;IACrE,OAAO,CAAC,sBAAsB,CAAS;IACvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAK;IAEjD,OAAO;IAUP,MAAM,CAAC,WAAW,CAChB,WAAW,CAAC,EAAE,MAAM,EACpB,WAAW,GAAE,MAA8B,GAC1C,kBAAkB;IAcrB,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc;IAiBrE;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAMrE,+BAA+B;IAC/B,aAAa,IAAI,OAAO;IAIxB,mBAAmB,IAAI,IAAI;IAI3B,OAAO,CAAC,aAAa;IAkBrB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKpC,kBAAkB,IAAI,MAAM;IAI5B,eAAe,IAAI,MAAM;IAKzB,mBAAmB,CACjB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GACtB,cAAc;IAmBjB,cAAc,IAAI,OAAO;IAIzB,eAAe,IAAI,cAAc;IAIjC,WAAW,IAAI,cAAc;IAY7B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI3C,KAAK,IAAI,IAAI;IAQb,MAAM,CAAC,aAAa,IAAI,IAAI;IAS5B,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,UAAU;CAGnB"}
|
|
@@ -17,9 +17,6 @@ const THRESHOLD_PERCENTS = {
|
|
|
17
17
|
const ORDERED_LEVELS = [
|
|
18
18
|
'none', 'soft', 'medium', 'hard', 'critical',
|
|
19
19
|
];
|
|
20
|
-
// ============================================================================
|
|
21
|
-
// TokenBudgetTracker
|
|
22
|
-
// ============================================================================
|
|
23
20
|
export class TokenBudgetTracker {
|
|
24
21
|
static instances = new Map();
|
|
25
22
|
static defaultInstance = null;
|
|
@@ -28,12 +25,17 @@ export class TokenBudgetTracker {
|
|
|
28
25
|
bySource;
|
|
29
26
|
crossings;
|
|
30
27
|
lastLevel;
|
|
28
|
+
thresholdCallbacks;
|
|
29
|
+
circuitBreakerFailures;
|
|
30
|
+
static MAX_CIRCUIT_FAILURES = 3;
|
|
31
31
|
constructor(totalBudget) {
|
|
32
32
|
this.totalBudget = totalBudget;
|
|
33
33
|
this.consumed = 0;
|
|
34
34
|
this.bySource = this.createEmptySourceMap();
|
|
35
35
|
this.crossings = [];
|
|
36
36
|
this.lastLevel = 'none';
|
|
37
|
+
this.thresholdCallbacks = new Map();
|
|
38
|
+
this.circuitBreakerFailures = 0;
|
|
37
39
|
}
|
|
38
40
|
static getInstance(projectPath, totalBudget = TOKENS.DEFAULT_BUDGET) {
|
|
39
41
|
if (projectPath) {
|
|
@@ -59,10 +61,48 @@ export class TokenBudgetTracker {
|
|
|
59
61
|
crossedAt: this.consumed,
|
|
60
62
|
timestamp: new Date().toISOString(),
|
|
61
63
|
});
|
|
64
|
+
// 자동 콜백 실행 (회로 차단기 적용)
|
|
65
|
+
this.fireCallbacks(newLevel);
|
|
62
66
|
}
|
|
63
67
|
this.lastLevel = newLevel;
|
|
64
68
|
return newLevel;
|
|
65
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* 특정 threshold 도달 시 자동 실행할 콜백 등록.
|
|
72
|
+
* 예: medium(75%) → 자동 압축, hard(85%) → 경고, critical(95%) → 중단
|
|
73
|
+
*/
|
|
74
|
+
onThreshold(level, callback) {
|
|
75
|
+
const cbs = this.thresholdCallbacks.get(level) || [];
|
|
76
|
+
cbs.push(callback);
|
|
77
|
+
this.thresholdCallbacks.set(level, cbs);
|
|
78
|
+
}
|
|
79
|
+
/** 회로 차단기: 연속 실패 시 콜백 실행 중단 */
|
|
80
|
+
isCircuitOpen() {
|
|
81
|
+
return this.circuitBreakerFailures >= TokenBudgetTracker.MAX_CIRCUIT_FAILURES;
|
|
82
|
+
}
|
|
83
|
+
resetCircuitBreaker() {
|
|
84
|
+
this.circuitBreakerFailures = 0;
|
|
85
|
+
}
|
|
86
|
+
fireCallbacks(level) {
|
|
87
|
+
if (this.isCircuitOpen())
|
|
88
|
+
return;
|
|
89
|
+
const callbacks = this.thresholdCallbacks.get(level);
|
|
90
|
+
if (!callbacks?.length)
|
|
91
|
+
return;
|
|
92
|
+
const snapshot = this.getSnapshot();
|
|
93
|
+
for (const cb of callbacks) {
|
|
94
|
+
try {
|
|
95
|
+
const result = cb(level, snapshot);
|
|
96
|
+
if (result instanceof Promise) {
|
|
97
|
+
result.catch(() => { this.circuitBreakerFailures++; });
|
|
98
|
+
}
|
|
99
|
+
this.circuitBreakerFailures = 0; // 성공 시 리셋
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
this.circuitBreakerFailures++;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
66
106
|
syncToPercent(percent) {
|
|
67
107
|
this.consumed = Math.round(this.totalBudget * (percent / 100));
|
|
68
108
|
this.lastLevel = this.getCurrentLevel();
|
|
@@ -113,6 +153,7 @@ export class TokenBudgetTracker {
|
|
|
113
153
|
this.bySource = this.createEmptySourceMap();
|
|
114
154
|
this.crossings = [];
|
|
115
155
|
this.lastLevel = 'none';
|
|
156
|
+
this.circuitBreakerFailures = 0;
|
|
116
157
|
}
|
|
117
158
|
static resetInstance() {
|
|
118
159
|
TokenBudgetTracker.instances.clear();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenBudgetTracker.js","sourceRoot":"","sources":["../../../src/infra/lib/TokenBudgetTracker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAyCxC,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,MAAM,kBAAkB,GAAmC;IACzD,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,EAAE;IACR,MAAM,EAAE,EAAE;IACV,IAAI,EAAE,EAAE;IACR,QAAQ,EAAE,EAAE;CACb,CAAC;AAEF,MAAM,cAAc,GAAqB;IACvC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU;CAC7C,CAAC;
|
|
1
|
+
{"version":3,"file":"TokenBudgetTracker.js","sourceRoot":"","sources":["../../../src/infra/lib/TokenBudgetTracker.ts"],"names":[],"mappings":"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"}
|