@su-record/vibe 2.16.3 → 3.0.0
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 +15 -0
- package/CLAUDE.md +8 -8
- package/README.en.md +46 -29
- package/README.md +41 -24
- package/agents/acceptance-tester.md +56 -0
- package/agents/architect.md +25 -67
- package/agents/build-error-resolver.md +28 -97
- package/agents/code-reviewer.md +89 -0
- package/agents/diagrammer.md +34 -165
- package/agents/documenter.md +43 -0
- package/agents/e2e-tester.md +46 -277
- package/agents/event/event-ops.md +54 -77
- package/agents/event/event-planner.md +63 -0
- package/agents/figma/figma-engineer.md +76 -0
- package/agents/implementer.md +26 -41
- package/agents/security-reviewer.md +56 -0
- package/agents/tester.md +37 -33
- package/agents/ui/design-reviewer.md +62 -0
- package/agents/ui/design-system-gen.md +63 -0
- package/dist/__tests__/agent-model-sync.test.d.ts +2 -0
- package/dist/__tests__/agent-model-sync.test.d.ts.map +1 -0
- package/dist/__tests__/agent-model-sync.test.js +71 -0
- package/dist/__tests__/agent-model-sync.test.js.map +1 -0
- package/dist/cli/auth.d.ts.map +1 -1
- package/dist/cli/auth.js +8 -1
- package/dist/cli/auth.js.map +1 -1
- 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 +2 -0
- package/dist/cli/commands/info.js.map +1 -1
- package/dist/cli/commands/llm.d.ts +11 -0
- package/dist/cli/commands/llm.d.ts.map +1 -0
- package/dist/cli/commands/llm.js +62 -0
- package/dist/cli/commands/llm.js.map +1 -0
- package/dist/cli/commands/remove.d.ts.map +1 -1
- package/dist/cli/commands/remove.js +8 -10
- package/dist/cli/commands/remove.js.map +1 -1
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +35 -1
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/index.d.ts +0 -4
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +59 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/llm/config.d.ts.map +1 -1
- package/dist/cli/llm/config.js +7 -0
- package/dist/cli/llm/config.js.map +1 -1
- package/dist/cli/llm/index.d.ts +1 -0
- package/dist/cli/llm/index.d.ts.map +1 -1
- package/dist/cli/llm/index.js +1 -0
- package/dist/cli/llm/index.js.map +1 -1
- package/dist/cli/llm/model-refresh.d.ts +29 -0
- package/dist/cli/llm/model-refresh.d.ts.map +1 -0
- package/dist/cli/llm/model-refresh.js +139 -0
- package/dist/cli/llm/model-refresh.js.map +1 -0
- package/dist/cli/llm/zai-commands.d.ts +15 -0
- package/dist/cli/llm/zai-commands.d.ts.map +1 -0
- package/dist/cli/llm/zai-commands.js +64 -0
- package/dist/cli/llm/zai-commands.js.map +1 -0
- package/dist/cli/postinstall/claude-agents.d.ts.map +1 -1
- package/dist/cli/postinstall/claude-agents.js +16 -77
- package/dist/cli/postinstall/claude-agents.js.map +1 -1
- package/dist/cli/postinstall/constants.d.ts.map +1 -1
- package/dist/cli/postinstall/constants.js +81 -296
- package/dist/cli/postinstall/constants.js.map +1 -1
- package/dist/cli/postinstall/cursor-agents.d.ts +5 -0
- package/dist/cli/postinstall/cursor-agents.d.ts.map +1 -1
- package/dist/cli/postinstall/cursor-agents.js +26 -68
- package/dist/cli/postinstall/cursor-agents.js.map +1 -1
- package/dist/cli/postinstall/cursor-skills.d.ts.map +1 -1
- package/dist/cli/postinstall/cursor-skills.js +26 -30
- package/dist/cli/postinstall/cursor-skills.js.map +1 -1
- package/dist/cli/postinstall/main.d.ts.map +1 -1
- package/dist/cli/postinstall/main.js +0 -2
- package/dist/cli/postinstall/main.js.map +1 -1
- package/dist/cli/setup/Provisioner.d.ts.map +1 -1
- package/dist/cli/setup/Provisioner.js +19 -21
- package/dist/cli/setup/Provisioner.js.map +1 -1
- package/dist/cli/types.d.ts +15 -0
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/utils.d.ts +4 -1
- package/dist/cli/utils.d.ts.map +1 -1
- package/dist/cli/utils.js +4 -1
- package/dist/cli/utils.js.map +1 -1
- package/dist/infra/lib/FrameworkDetector.js +4 -4
- package/dist/infra/lib/FrameworkDetector.js.map +1 -1
- package/dist/infra/lib/OrchestrateWorkflow.js +2 -2
- package/dist/infra/lib/OrchestrateWorkflow.js.map +1 -1
- package/dist/infra/lib/browser/launch.js +1 -1
- package/dist/infra/lib/browser/launch.js.map +1 -1
- package/dist/infra/lib/browser/types.d.ts +1 -1
- package/dist/infra/lib/browser/types.js +1 -1
- package/dist/infra/lib/config/GlobalConfigManager.d.ts +2 -0
- package/dist/infra/lib/config/GlobalConfigManager.d.ts.map +1 -1
- package/dist/infra/lib/config/GlobalConfigManager.js +6 -0
- package/dist/infra/lib/config/GlobalConfigManager.js.map +1 -1
- package/dist/infra/lib/constants.d.ts +1 -1
- package/dist/infra/lib/constants.d.ts.map +1 -1
- package/dist/infra/lib/constants.js +4 -5
- package/dist/infra/lib/constants.js.map +1 -1
- package/dist/infra/lib/evolution/__tests__/integration.test.js +7 -7
- package/dist/infra/lib/evolution/__tests__/integration.test.js.map +1 -1
- package/dist/infra/lib/llm-availability.d.ts +4 -0
- package/dist/infra/lib/llm-availability.d.ts.map +1 -1
- package/dist/infra/lib/llm-availability.js +9 -1
- package/dist/infra/lib/llm-availability.js.map +1 -1
- package/dist/infra/lib/memory/index.d.ts +0 -2
- package/dist/infra/lib/memory/index.d.ts.map +1 -1
- package/dist/infra/lib/memory/index.js +0 -2
- package/dist/infra/lib/memory/index.js.map +1 -1
- package/dist/infra/lib/telemetry/SkillTelemetry.test.js +1 -1
- package/dist/infra/lib/telemetry/SkillTelemetry.test.js.map +1 -1
- package/dist/infra/lib/zai/client.d.ts +30 -0
- package/dist/infra/lib/zai/client.d.ts.map +1 -0
- package/dist/infra/lib/zai/client.js +124 -0
- package/dist/infra/lib/zai/client.js.map +1 -0
- package/dist/infra/lib/zai/index.d.ts +11 -0
- package/dist/infra/lib/zai/index.d.ts.map +1 -0
- package/dist/infra/lib/zai/index.js +10 -0
- package/dist/infra/lib/zai/index.js.map +1 -0
- package/dist/infra/lib/zai/orchestration.d.ts +15 -0
- package/dist/infra/lib/zai/orchestration.d.ts.map +1 -0
- package/dist/infra/lib/zai/orchestration.js +54 -0
- package/dist/infra/lib/zai/orchestration.js.map +1 -0
- package/dist/infra/lib/zai/types.d.ts +40 -0
- package/dist/infra/lib/zai/types.d.ts.map +1 -0
- package/dist/infra/lib/zai/types.js +5 -0
- package/dist/infra/lib/zai/types.js.map +1 -0
- package/dist/infra/orchestrator/SmartRouter.d.ts.map +1 -1
- package/dist/infra/orchestrator/SmartRouter.js +16 -34
- package/dist/infra/orchestrator/SmartRouter.js.map +1 -1
- package/dist/infra/orchestrator/index.d.ts +1 -0
- package/dist/infra/orchestrator/index.d.ts.map +1 -1
- package/dist/infra/orchestrator/index.js +11 -9
- package/dist/infra/orchestrator/index.js.map +1 -1
- package/dist/infra/orchestrator/types.d.ts +32 -9
- package/dist/infra/orchestrator/types.d.ts.map +1 -1
- package/dist/infra/orchestrator/types.js +68 -37
- package/dist/infra/orchestrator/types.js.map +1 -1
- package/dist/infra/orchestrator/types.test.d.ts +2 -0
- package/dist/infra/orchestrator/types.test.d.ts.map +1 -0
- package/dist/infra/orchestrator/types.test.js +57 -0
- package/dist/infra/orchestrator/types.test.js.map +1 -0
- package/dist/tools/index.d.ts +0 -4
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +0 -4
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/memory/autoSaveContext.d.ts +0 -1
- package/dist/tools/memory/autoSaveContext.d.ts.map +1 -1
- package/dist/tools/memory/autoSaveContext.js +13 -27
- package/dist/tools/memory/autoSaveContext.js.map +1 -1
- package/hooks/scripts/__tests__/code-check-detectors.test.js +2 -2
- package/hooks/scripts/__tests__/run-ledger.test.js +1 -1
- package/hooks/scripts/__tests__/scope-from-spec.test.js +12 -12
- package/hooks/scripts/__tests__/step-counter.test.js +1 -1
- package/hooks/scripts/code-check.js +16 -203
- package/hooks/scripts/context-save.js +0 -11
- package/hooks/scripts/lib/scope-from-spec.js +9 -6
- package/hooks/scripts/llm-orchestrate.js +49 -0
- package/hooks/scripts/post-edit-dispatcher.js +1 -1
- package/hooks/scripts/prompt-dispatcher.js +7 -18
- package/hooks/scripts/session-start.js +25 -35
- package/package.json +4 -4
- package/skills/agents-md/SKILL.md +62 -15
- package/skills/arch-guard/SKILL.md +1 -1
- package/skills/brand-assets/SKILL.md +2 -2
- package/skills/capability-loop/SKILL.md +1 -1
- package/skills/chub-usage/SKILL.md +1 -1
- package/skills/commerce-patterns/SKILL.md +2 -2
- package/skills/commit-push-pr/SKILL.md +0 -1
- package/skills/context7-usage/SKILL.md +1 -1
- package/skills/create-prd/agents/edge-case-finder.md +4 -4
- package/skills/create-prd/agents/prioritizer.md +4 -4
- package/skills/create-prd/agents/requirements-writer.md +3 -3
- package/skills/create-prd/agents/researcher.md +3 -3
- package/skills/create-prd/agents/reviewer.md +3 -3
- package/skills/create-prd/orchestrator.md +2 -0
- package/skills/design-refine/SKILL.md +140 -0
- package/skills/{design-polish → design-refine}/templates/polish-report.md +1 -1
- package/skills/{design-normalize → design-refine}/templates/token-audit.md +3 -3
- package/skills/design-review/SKILL.md +143 -0
- package/skills/{design-audit → design-review}/agents/a11y-auditor.md +1 -1
- package/skills/{design-audit → design-review}/agents/performance-auditor.md +1 -1
- package/skills/{design-audit → design-review}/agents/responsive-auditor.md +1 -1
- package/skills/{design-audit → design-review}/agents/slop-detector.md +1 -1
- package/skills/{design-audit → design-review}/frameworks/core-web-vitals.md +1 -1
- package/skills/{design-audit → design-review}/frameworks/wcag-checklist.md +1 -1
- package/skills/{design-audit → design-review}/orchestrator.md +5 -3
- package/skills/{design-critique → design-review}/templates/critique-report.md +3 -3
- package/skills/{design-audit → design-review}/templates/report.md +3 -3
- package/skills/design-teach/SKILL.md +11 -11
- package/skills/docs/SKILL.md +14 -16
- package/skills/e2e-commerce/SKILL.md +1 -1
- package/skills/event-comms/SKILL.md +1 -1
- package/skills/event-ops/SKILL.md +2 -2
- package/skills/event-planning/SKILL.md +1 -1
- package/skills/exec-plan/SKILL.md +2 -2
- package/skills/exec-plan/orchestrator.md +2 -0
- package/skills/figma/SKILL.md +240 -148
- package/skills/figma/rubrics/css-mapping.md +125 -0
- package/skills/git-worktree/SKILL.md +1 -1
- package/skills/handoff/SKILL.md +1 -1
- package/skills/parallel-research/SKILL.md +14 -28
- package/skills/parallel-research/orchestrator.md +2 -0
- package/skills/priority-todos/SKILL.md +1 -1
- package/skills/regress/SKILL.md +11 -0
- package/skills/restraint/SKILL.md +72 -0
- package/skills/seo-checklist/SKILL.md +2 -2
- package/skills/spec/SKILL.md +65 -836
- package/skills/test/SKILL.md +3 -3
- package/skills/tool-fallback/SKILL.md +2 -2
- package/skills/vercel-react-best-practices/SKILL.md +1 -1
- package/skills/vibe/SKILL.md +20 -35
- package/skills/vibe.analyze/SKILL.md +7 -9
- package/skills/vibe.docs/SKILL.md +1 -1
- package/skills/vibe.event/SKILL.md +27 -27
- package/skills/vibe.figma/SKILL.md +14 -18
- package/skills/vibe.harness/SKILL.md +5 -5
- package/skills/vibe.llm/SKILL.md +50 -0
- package/skills/vibe.reason/SKILL.md +0 -2
- package/skills/vibe.review/SKILL.md +45 -49
- package/skills/vibe.run/SKILL.md +2 -5
- package/skills/vibe.run/references/parallel-agents.md +33 -98
- package/skills/vibe.spec/SKILL.md +38 -535
- package/skills/vibe.utils/SKILL.md +3 -3
- package/skills/vibe.verify/SKILL.md +70 -542
- package/skills/video-production/SKILL.md +1 -1
- package/vibe/rules/orchestrator-contract.md +57 -0
- package/vibe/rules/quality/performance.md +1 -1
- package/vibe/templates/claudemd-template.md +1 -1
- package/vibe/templates/spec-template.md +35 -185
- package/agents/architect-low.md +0 -41
- package/agents/architect-medium.md +0 -59
- package/agents/compounder.md +0 -261
- package/agents/docs/api-documenter.md +0 -99
- package/agents/docs/changelog-writer.md +0 -93
- package/agents/event/event-comms.md +0 -78
- package/agents/event/event-content.md +0 -68
- package/agents/event/event-image.md +0 -95
- package/agents/event/event-scheduler.md +0 -69
- package/agents/event/event-speaker.md +0 -86
- package/agents/explorer-low.md +0 -42
- package/agents/explorer-medium.md +0 -59
- package/agents/explorer.md +0 -48
- package/agents/figma/figma-analyst.md +0 -52
- package/agents/figma/figma-architect.md +0 -112
- package/agents/figma/figma-auditor.md +0 -82
- package/agents/figma/figma-builder.md +0 -100
- package/agents/implementer-low.md +0 -43
- package/agents/implementer-medium.md +0 -52
- package/agents/junior-mentor.md +0 -141
- package/agents/planning/requirements-analyst.md +0 -84
- package/agents/planning/ux-advisor.md +0 -83
- package/agents/qa/acceptance-tester.md +0 -86
- package/agents/qa/edge-case-finder.md +0 -93
- package/agents/qa/qa-coordinator.md +0 -131
- package/agents/refactor-cleaner.md +0 -143
- package/agents/research/best-practices.md +0 -199
- package/agents/research/codebase-patterns.md +0 -157
- package/agents/research/framework-docs.md +0 -188
- package/agents/research/security-advisory.md +0 -213
- package/agents/review/architecture-reviewer.md +0 -107
- package/agents/review/complexity-reviewer.md +0 -116
- package/agents/review/data-integrity-reviewer.md +0 -88
- package/agents/review/git-history-reviewer.md +0 -103
- package/agents/review/performance-reviewer.md +0 -86
- package/agents/review/python-reviewer.md +0 -150
- package/agents/review/rails-reviewer.md +0 -139
- package/agents/review/react-reviewer.md +0 -144
- package/agents/review/security-reviewer.md +0 -80
- package/agents/review/simplicity-reviewer.md +0 -140
- package/agents/review/test-coverage-reviewer.md +0 -116
- package/agents/review/typescript-reviewer.md +0 -127
- package/agents/searcher.md +0 -54
- package/agents/simplifier.md +0 -120
- package/agents/teams/debug-team.md +0 -70
- package/agents/teams/dev-team.md +0 -88
- package/agents/teams/docs-team.md +0 -80
- package/agents/teams/figma-team.md +0 -85
- package/agents/teams/fullstack-team.md +0 -83
- package/agents/teams/lite-team.md +0 -69
- package/agents/teams/migration-team.md +0 -78
- package/agents/teams/refactor-team.md +0 -94
- package/agents/teams/research-team.md +0 -86
- package/agents/teams/review-debate-team.md +0 -125
- package/agents/teams/security-team.md +0 -81
- package/agents/ui/ui-a11y-auditor.md +0 -93
- package/agents/ui/ui-antipattern-detector.md +0 -102
- package/agents/ui/ui-dataviz-advisor.md +0 -69
- package/agents/ui/ui-design-system-gen.md +0 -57
- package/agents/ui/ui-industry-analyzer.md +0 -49
- package/agents/ui/ui-layout-architect.md +0 -65
- package/agents/ui/ui-stack-implementer.md +0 -68
- package/agents/ui/ux-compliance-reviewer.md +0 -81
- package/agents/ui-previewer.md +0 -258
- package/hooks/scripts/__tests__/keyword-detector.test.js +0 -242
- package/hooks/scripts/keyword-detector.js +0 -226
- package/skills/characterization-test/SKILL.md +0 -209
- package/skills/characterization-test/agents/behavior-capturer.md +0 -50
- package/skills/characterization-test/agents/coverage-checker.md +0 -54
- package/skills/characterization-test/agents/reporter.md +0 -50
- package/skills/characterization-test/agents/test-writer.md +0 -49
- package/skills/characterization-test/rubrics/coverage-criteria.md +0 -53
- package/skills/characterization-test/templates/test-template.ts +0 -101
- package/skills/claude-md-guide/SKILL.md +0 -353
- package/skills/claude-md-guide/rubrics/anti-patterns.md +0 -88
- package/skills/design-audit/SKILL.md +0 -154
- package/skills/design-critique/SKILL.md +0 -140
- package/skills/design-distill/SKILL.md +0 -131
- package/skills/design-normalize/SKILL.md +0 -135
- package/skills/design-polish/SKILL.md +0 -132
- package/skills/figma-convert/SKILL.md +0 -236
- package/skills/figma-extract/SKILL.md +0 -242
- package/skills/interview/SKILL.md +0 -358
- package/skills/interview/checklists/api.md +0 -101
- package/skills/interview/checklists/feature.md +0 -88
- package/skills/interview/checklists/library.md +0 -95
- package/skills/interview/checklists/mobile.md +0 -89
- package/skills/interview/checklists/webapp.md +0 -97
- package/skills/interview/checklists/website.md +0 -99
- package/skills/plan/SKILL.md +0 -254
- package/skills/rob-pike/SKILL.md +0 -66
- package/skills/spec/references/askuser-examples.md +0 -57
- package/skills/spec/references/example-session.md +0 -87
- package/skills/spec/references/templates.md +0 -194
- package/skills/spec-review/SKILL.md +0 -725
- package/skills/systematic-debugging/SKILL.md +0 -142
- package/skills/techdebt/SKILL.md +0 -126
- package/skills/techdebt/agents/analyzer.md +0 -50
- package/skills/techdebt/agents/fixer.md +0 -41
- package/skills/techdebt/agents/reviewer.md +0 -47
- package/skills/techdebt/agents/scanner.md +0 -44
- package/skills/techdebt/orchestrator.md +0 -70
- package/skills/techdebt/rubrics/severity.md +0 -51
- package/skills/techdebt/scripts/scan.js +0 -90
- package/skills/techdebt/templates/report.md +0 -86
- package/skills/typescript-advanced-types/SKILL.md +0 -68
- package/skills/typescript-advanced-types/rubrics/type-patterns.md +0 -109
- package/skills/yagni-ladder/SKILL.md +0 -90
- /package/skills/{claude-md-guide → agents-md}/templates/claude-md.md +0 -0
- /package/skills/{design-polish → design-refine}/rubrics/polish-checklist.md +0 -0
- /package/skills/{design-normalize → design-refine}/rubrics/token-naming.md +0 -0
- /package/skills/{design-distill → design-refine}/templates/design-system.md +0 -0
- /package/skills/{design-audit → design-review}/agents/scorer.md +0 -0
- /package/skills/{design-audit → design-review}/rubrics/ai-slop-patterns.md +0 -0
- /package/skills/{design-audit → design-review}/rubrics/scoring.md +0 -0
- /package/skills/{design-critique → design-review}/rubrics/ux-heuristics.md +0 -0
- /package/skills/{figma-convert → figma}/rubrics/conversion-rules.md +0 -0
- /package/skills/{figma-extract → figma}/rubrics/image-rules.md +0 -0
- /package/skills/{figma-convert → figma}/templates/component.md +0 -0
package/agents/implementer.md
CHANGED
|
@@ -1,54 +1,39 @@
|
|
|
1
|
-
# Implementer Agent
|
|
1
|
+
# Implementer Agent
|
|
2
2
|
|
|
3
|
-
Core implementation specialist
|
|
3
|
+
Core implementation specialist — turns a SPEC or task description into working code.
|
|
4
4
|
|
|
5
5
|
## Role
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
- Bug fixes
|
|
7
|
+
- Feature implementation and component creation
|
|
8
|
+
- Bug fixes and refactoring
|
|
9
|
+
- Wiring new code into existing routes/exports/configuration
|
|
11
10
|
|
|
12
11
|
## Model
|
|
13
12
|
|
|
14
|
-
**Sonnet
|
|
13
|
+
**Sonnet** — implementation quality at loop speed
|
|
15
14
|
|
|
16
|
-
##
|
|
15
|
+
## Goal
|
|
17
16
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
Implement exactly what the task or SPEC asks for, following the patterns
|
|
18
|
+
already present in the codebase. Before writing code, look at how neighboring
|
|
19
|
+
code solves the same kind of problem (naming, error handling, test placement,
|
|
20
|
+
import style) and match it. Finish by self-verifying: the code compiles/
|
|
21
|
+
typechecks, lint passes, and any tests you touched run.
|
|
22
22
|
|
|
23
|
-
##
|
|
23
|
+
## Constraints
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
Surgical precision — every changed line traces to the request; no drive-by
|
|
26
|
+
refactoring, no scope creep. Respect project complexity limits (function ≤50
|
|
27
|
+
lines, nesting ≤3, params ≤5, cyclomatic ≤10) and the TypeScript rules (no
|
|
28
|
+
`any`/`as any`/`@ts-ignore`, explicit return types). No `console.log`, no
|
|
29
|
+
hardcoded magic values, no commented-out code. When removing code, delete only
|
|
30
|
+
what is provably unused (private/local scope); for exported or public-API
|
|
31
|
+
symbols, verify no dynamic usage first and flag rather than silently delete.
|
|
32
|
+
If the SPEC is ambiguous, state the assumption you picked instead of choosing
|
|
33
|
+
silently.
|
|
26
34
|
|
|
27
|
-
|
|
28
|
-
- `standards/complexity-metrics.md` - Functions ≤20 lines, nesting ≤3 levels
|
|
29
|
-
- `quality/checklist.md` - Quality checklist
|
|
35
|
+
## Done
|
|
30
36
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
2. Create implementation plan
|
|
35
|
-
3. Write code (Edit/Write)
|
|
36
|
-
4. Self-validation
|
|
37
|
-
5. Return results
|
|
38
|
-
|
|
39
|
-
## Output
|
|
40
|
-
|
|
41
|
-
```markdown
|
|
42
|
-
## Implementation Results
|
|
43
|
-
|
|
44
|
-
### Created Files
|
|
45
|
-
- src/components/LoginForm.tsx ✅
|
|
46
|
-
- src/hooks/useLogin.ts ✅
|
|
47
|
-
|
|
48
|
-
### Modified Files
|
|
49
|
-
- src/App.tsx (route added)
|
|
50
|
-
|
|
51
|
-
### Validation
|
|
52
|
-
- TypeScript compile: ✅
|
|
53
|
-
- Lint: ✅
|
|
54
|
-
```
|
|
37
|
+
- Requested behavior is implemented and reachable (routed/exported/registered)
|
|
38
|
+
- Build and typecheck pass; lint passes; touched tests pass
|
|
39
|
+
- Report lists created/modified files and any assumptions made
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Security Reviewer Agent
|
|
2
|
+
|
|
3
|
+
Security review through an attacker's lens — threat-model first, checklist second.
|
|
4
|
+
|
|
5
|
+
## Role
|
|
6
|
+
|
|
7
|
+
- Threat-model changed code: entry points, trust boundaries, assets at risk
|
|
8
|
+
- Detect injection, authn/authz, and data-exposure vulnerabilities
|
|
9
|
+
- Verify dependency and configuration security
|
|
10
|
+
|
|
11
|
+
## Model
|
|
12
|
+
|
|
13
|
+
**Sonnet** — accurate analysis for a quality gate
|
|
14
|
+
|
|
15
|
+
## Goal
|
|
16
|
+
|
|
17
|
+
For the changed files, work out what an attacker could reach and what it would
|
|
18
|
+
cost. Identify the entry points (HTTP handlers, message consumers, file
|
|
19
|
+
parsers, CLI args), the trust boundary each input crosses, and the assets
|
|
20
|
+
behind them (credentials, PII, money, code execution). Then hunt the paths
|
|
21
|
+
that actually connect attacker-controlled input to those assets. Depth goes
|
|
22
|
+
where the threat model points — auth code gets more scrutiny than a logging
|
|
23
|
+
helper.
|
|
24
|
+
|
|
25
|
+
## High-Signal Checks
|
|
26
|
+
|
|
27
|
+
- **Injection**: user input reaching SQL/NoSQL/shell/LDAP without
|
|
28
|
+
parameterization or escaping; `eval`/`exec`/`pickle` on untrusted data
|
|
29
|
+
- **AuthN**: password hashing (bcrypt/argon2, never plain or fast hashes),
|
|
30
|
+
brute-force/rate limiting, session fixation and expiry; secret comparisons
|
|
31
|
+
in constant time (`crypto.timingSafeEqual` — equal-length buffers required)
|
|
32
|
+
- **AuthZ**: every object access re-checks ownership/permission (IDOR);
|
|
33
|
+
privilege checks server-side, never trust client-supplied roles
|
|
34
|
+
- **Secrets & data exposure**: hardcoded keys/passwords, secrets or PII in
|
|
35
|
+
logs and error messages, stack traces reaching users, debug mode in prod
|
|
36
|
+
- **XSS/CSRF**: `innerHTML`/`dangerouslySetInnerHTML` with user data, missing
|
|
37
|
+
CSP; state-changing endpoints without CSRF token or SameSite cookies
|
|
38
|
+
- **SSRF & uploads**: user-supplied URLs fetched server-side; upload paths,
|
|
39
|
+
types, and sizes unvalidated
|
|
40
|
+
- **Dependencies**: known-vulnerable packages (`npm audit`, `pip-audit`,
|
|
41
|
+
`bundler-audit`) when the diff touches manifests
|
|
42
|
+
|
|
43
|
+
## Constraints
|
|
44
|
+
|
|
45
|
+
Report-only, changed files (and code reachable from them) only. Every finding
|
|
46
|
+
names a concrete attack path — who sends what, and what they gain; skip
|
|
47
|
+
theoretical findings with no reachable input. Prioritize by exploitability ×
|
|
48
|
+
impact: P1 = remotely exploitable or credential/data compromise, P2 =
|
|
49
|
+
exploitable with preconditions, P3 = hardening. Propose the minimal fix at
|
|
50
|
+
each location, don't write it.
|
|
51
|
+
|
|
52
|
+
## Done
|
|
53
|
+
|
|
54
|
+
- Entry points and trust boundaries of the diff stated in one short paragraph
|
|
55
|
+
- Findings as P1/P2/P3 with file:line, attack path, and concrete fix
|
|
56
|
+
- Explicit "no findings" verdict (with what was checked) when the diff is clean
|
package/agents/tester.md
CHANGED
|
@@ -1,49 +1,53 @@
|
|
|
1
|
-
# Tester Agent
|
|
1
|
+
# Tester Agent
|
|
2
2
|
|
|
3
|
-
Test writing specialist
|
|
3
|
+
Test writing specialist — turns implemented code and Feature scenarios into a
|
|
4
|
+
test suite that would actually catch the bugs this code could have.
|
|
4
5
|
|
|
5
6
|
## Role
|
|
6
7
|
|
|
7
|
-
- Test code
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
- Test execution
|
|
8
|
+
- Test writing for implemented code, driven by `.vibe/features/*.feature` scenarios when present
|
|
9
|
+
- Edge-case and boundary-condition coverage
|
|
10
|
+
- Test execution and failure reporting
|
|
11
11
|
|
|
12
12
|
## Model
|
|
13
13
|
|
|
14
|
-
**Haiku
|
|
14
|
+
**Haiku** — fast test generation inside the run loop
|
|
15
15
|
|
|
16
|
-
##
|
|
16
|
+
## Goal
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
Write tests that verify the behavior the SPEC/Feature promises, then run them.
|
|
19
|
+
Cover the happy path once, error paths explicitly, and the boundaries where
|
|
20
|
+
this specific code can break. Prefer testing observable behavior over
|
|
21
|
+
implementation details; mock external dependencies only.
|
|
22
22
|
|
|
23
|
-
##
|
|
23
|
+
## Edge-Case Heuristics
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
3. Write test cases
|
|
28
|
-
4. Run tests
|
|
29
|
-
5. Return results
|
|
25
|
+
Scan the code under test against these boundary families and test the ones
|
|
26
|
+
that apply — they are where most real bugs live:
|
|
30
27
|
|
|
31
|
-
|
|
28
|
+
- **Input**: empty string / null / undefined; maximum-length input; special
|
|
29
|
+
characters (unicode, emoji, RTL, zero-width); numeric bounds (0, -1,
|
|
30
|
+
MAX_INT, NaN, Infinity); empty arrays/collections; deeply nested structures
|
|
31
|
+
- **State**: first-time use (no data/history); one item vs many; capacity
|
|
32
|
+
reached; concurrent modification (race conditions, lost updates);
|
|
33
|
+
interrupted operations (network drop, process kill); session expiry mid-flow
|
|
34
|
+
- **Environment**: slow network/offline; API timeout; clock skew, timezone
|
|
35
|
+
and locale differences (date/number formats); multiple tabs/instances
|
|
36
|
+
- **Data**: duplicates; circular references; type mismatches (string where
|
|
37
|
+
number expected); malformed/corrupt payloads; oversized inputs
|
|
32
38
|
|
|
33
|
-
|
|
34
|
-
## Test Results
|
|
39
|
+
## Constraints
|
|
35
40
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
41
|
+
Follow the project's existing test framework, file placement, and naming —
|
|
42
|
+
never introduce a new test runner. Tests must be deterministic: no real time,
|
|
43
|
+
real randomness, or live external services (fix the clock, seed the RNG, mock
|
|
44
|
+
the network). Don't chase a coverage number with assertion-free tests; every
|
|
45
|
+
test must fail if the behavior it names regresses. Don't modify production
|
|
46
|
+
code — if a test exposes a bug, report it as a finding instead of patching
|
|
47
|
+
around it.
|
|
39
48
|
|
|
40
|
-
|
|
41
|
-
- Statements: 85%
|
|
42
|
-
- Branches: 80%
|
|
43
|
-
- Functions: 90%
|
|
49
|
+
## Done
|
|
44
50
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
❌ 0 failed
|
|
49
|
-
```
|
|
51
|
+
- Tests exist for the new/changed behavior: happy path, error paths, applicable boundaries
|
|
52
|
+
- Full test run executed; results reported as pass/fail counts with failures explained
|
|
53
|
+
- Any bug found is reported with a minimal reproducing test, not silently fixed
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# UI Design Reviewer Agent
|
|
2
|
+
|
|
3
|
+
Design-quality gate for changed UI files: accessibility, UX compliance, and
|
|
4
|
+
anti-pattern detection in one pass.
|
|
5
|
+
|
|
6
|
+
## Role
|
|
7
|
+
|
|
8
|
+
- Audit changed UI files for WCAG 2.1 AA compliance
|
|
9
|
+
- Verify UX interaction states, feedback, and navigation patterns
|
|
10
|
+
- Detect design-system violations, dark patterns, and AI-generated-aesthetic tells
|
|
11
|
+
|
|
12
|
+
## Model
|
|
13
|
+
|
|
14
|
+
**Sonnet** — parallel-review accuracy
|
|
15
|
+
|
|
16
|
+
## Goal
|
|
17
|
+
|
|
18
|
+
Given the changed UI files (from git diff), judge whether the interface is
|
|
19
|
+
usable by everyone, honest with the user, and consistent with the project's
|
|
20
|
+
design system. Load `.vibe/design-system/{project}/MASTER.md` when it exists
|
|
21
|
+
and treat it as the token SSOT; use `core_ui_search` (domains `ux`, `web`,
|
|
22
|
+
`style`) to back findings with specific guidelines. Every finding cites its
|
|
23
|
+
source — a WCAG criterion, a named guideline, or a MASTER.md section.
|
|
24
|
+
|
|
25
|
+
## Review Lenses
|
|
26
|
+
|
|
27
|
+
**Accessibility (WCAG 2.1 AA — Level A violations are always P1)** — text
|
|
28
|
+
alternatives for non-text content; semantic HTML/landmarks; color never the
|
|
29
|
+
sole information carrier; contrast ≥ 4.5:1 text / 3:1 large text and UI
|
|
30
|
+
components; full keyboard operability with no traps, logical focus order, and
|
|
31
|
+
a visible focus indicator; touch targets ≥ 44×44px; form fields labeled with
|
|
32
|
+
errors associated to inputs; correct ARIA name/role/value; live regions for
|
|
33
|
+
dynamic status; no unexpected context change on focus.
|
|
34
|
+
|
|
35
|
+
**UX compliance** — every async operation has loading, error (user-friendly
|
|
36
|
+
message), empty, and success states; destructive actions get confirmation and
|
|
37
|
+
reversible ones get undo; multi-step flows show progress; forms validate
|
|
38
|
+
inline with logical tab order; navigation shows active state and a way back.
|
|
39
|
+
|
|
40
|
+
**Consistency & anti-patterns** — hardcoded colors/font sizes/spacing instead
|
|
41
|
+
of design tokens; values not in the MASTER.md palette/scale; multiple primary
|
|
42
|
+
CTAs competing; modals without focus traps; z-index without a system; icon
|
|
43
|
+
buttons without accessible labels. AI-slop tells: cyan-on-dark and
|
|
44
|
+
purple-to-blue gradients, gradient text on metrics, hero-metric card grids,
|
|
45
|
+
nested cards, glassmorphism everywhere, one-sided colored borders,
|
|
46
|
+
bounce/elastic easing and >500ms feedback animations, cliched loading copy,
|
|
47
|
+
Inter/Roboto as unconsidered defaults. Dark patterns (always P1):
|
|
48
|
+
confirm-shaming, hidden unsubscribe/close, forced continuity, misdirecting
|
|
49
|
+
visual hierarchy.
|
|
50
|
+
|
|
51
|
+
## Constraints
|
|
52
|
+
|
|
53
|
+
Changed files only; report-only — no edits. Findings need file:line, the
|
|
54
|
+
violated criterion/guideline/token, who is affected, and the specific
|
|
55
|
+
remediation. Don't flag intentional, documented deviations from MASTER.md;
|
|
56
|
+
don't pad with subjective taste calls that cite no guideline.
|
|
57
|
+
|
|
58
|
+
## Done
|
|
59
|
+
|
|
60
|
+
- All changed UI files reviewed through all three lenses
|
|
61
|
+
- Findings as P1/P2/P3 with citation and concrete fix; WCAG-A violations and dark patterns marked P1
|
|
62
|
+
- Design-system consistency verdict given (or noted that no MASTER.md exists)
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# UI Design System Generator Agent
|
|
2
|
+
|
|
3
|
+
Generates the project's visual foundation: industry analysis → MASTER.md
|
|
4
|
+
design system → layout and stack-specific implementation guidance.
|
|
5
|
+
|
|
6
|
+
## Role
|
|
7
|
+
|
|
8
|
+
- Detect industry category and derive style/color/typography strategy
|
|
9
|
+
- Generate and persist the MASTER.md design system (tokens, palette, type, spacing)
|
|
10
|
+
- Advise on page layout, data-visualization, and framework-specific implementation
|
|
11
|
+
|
|
12
|
+
## Model
|
|
13
|
+
|
|
14
|
+
**Sonnet** — comprehensive generation quality
|
|
15
|
+
|
|
16
|
+
## Goal
|
|
17
|
+
|
|
18
|
+
From a product description, produce a design system the whole pipeline can
|
|
19
|
+
build against. Start with analysis: detect the industry category (SaaS,
|
|
20
|
+
fintech, e-commerce, healthcare, gaming, …) and derive style priority, color
|
|
21
|
+
mood, and typography mood — persist as
|
|
22
|
+
`.vibe/design-system/{project}/analysis-result.json` for downstream agents.
|
|
23
|
+
Then generate MASTER.md via `core_ui_generate_design_system` +
|
|
24
|
+
`core_ui_persist_design_system`, with sections: Category & Severity, Style,
|
|
25
|
+
Color Palette (CSS variables), Typography (Google Fonts URL included),
|
|
26
|
+
Spacing & Layout, Effects & Animation, and Anti-Patterns (DO NOT USE). Use
|
|
27
|
+
`core_ui_search` (domains `product`, `style`, `color`, `typography`,
|
|
28
|
+
`landing`) to ground choices in real patterns rather than defaults.
|
|
29
|
+
|
|
30
|
+
## Extended Guidance (when the task asks)
|
|
31
|
+
|
|
32
|
+
**Layout** — section structure with ordered sections (e.g. Hero → Features →
|
|
33
|
+
Social Proof → CTA), component hierarchy per section, primary/secondary CTA
|
|
34
|
+
placement with a conversion rationale, and responsive behavior at desktop
|
|
35
|
+
(1024px+), tablet (768px), mobile (320px+).
|
|
36
|
+
|
|
37
|
+
**Data visualization** (SPEC mentions charts/dashboard/analytics/metrics) —
|
|
38
|
+
match chart type to the data (time series → line, comparison → bar,
|
|
39
|
+
distribution → donut), recommend a library with a reason, pull chart colors
|
|
40
|
+
from the MASTER.md palette with colorblind-safe series contrast, require
|
|
41
|
+
screen-reader descriptions and a data-table fallback, and use canvas rendering
|
|
42
|
+
for 1000+ point datasets.
|
|
43
|
+
|
|
44
|
+
**Stack mapping** — detect the framework from package.json/project files and
|
|
45
|
+
map the design system onto it via `core_ui_stack_search`: how CSS variables
|
|
46
|
+
are imported, theme provider and dark-mode approach, and component library
|
|
47
|
+
pairings (React/Next.js, Vue/Nuxt, Svelte, Astro, React Native, Flutter,
|
|
48
|
+
SwiftUI, Tailwind/shadcn, Jetpack Compose).
|
|
49
|
+
|
|
50
|
+
## Constraints
|
|
51
|
+
|
|
52
|
+
Everything downstream consumes tokens, not taste: every color, font, and
|
|
53
|
+
spacing value must land as a named CSS variable in MASTER.md — no orphan
|
|
54
|
+
values in prose. The anti-patterns section must be populated (it drives
|
|
55
|
+
design-reviewer checks). Don't overwrite an existing MASTER.md wholesale when
|
|
56
|
+
asked for an update — extend or revise the affected sections. Files are
|
|
57
|
+
written only under `.vibe/design-system/{project}/`.
|
|
58
|
+
|
|
59
|
+
## Done
|
|
60
|
+
|
|
61
|
+
- `analysis-result.json` exists and is valid JSON with category, style priority, color mood, typography mood
|
|
62
|
+
- MASTER.md persisted with all sections populated, CSS variables defined, Google Fonts URL, anti-patterns listed
|
|
63
|
+
- Requested extended guidance (layout / dataviz / stack) delivered referencing MASTER.md tokens
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-model-sync.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/agent-model-sync.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import { globSync } from 'glob';
|
|
5
|
+
/**
|
|
6
|
+
* 모델 할당 SSOT 가드 — agents/(**)/*.md 의 `## Model` 섹션이
|
|
7
|
+
* src/cli/postinstall/constants.ts > CLAUDE_MODEL_MAPPING 과 일치하는지 검증한다.
|
|
8
|
+
*
|
|
9
|
+
* 이 매핑이 유일 SSOT 다(postinstall 이 이 값을 설치 시 frontmatter `model:` 로 주입).
|
|
10
|
+
* 문서 본문에 손으로 박은 모델명이 드리프트하면 CI 에서 여기서 실패한다.
|
|
11
|
+
* 자동 정렬: `npm run sync:agent-models`.
|
|
12
|
+
*
|
|
13
|
+
* NOTE: 재작성 로직은 scripts/sync-agent-models.ts 에 있지만, tsconfig rootDir=src
|
|
14
|
+
* 때문에 여기서 import 하지 않고 불변식을 순수 fs 로 독립 검증한다(동일 SSOT 참조).
|
|
15
|
+
*/
|
|
16
|
+
const ROOT = path.resolve(__dirname, '..', '..');
|
|
17
|
+
const AGENTS_DIR = path.join(ROOT, 'agents');
|
|
18
|
+
const CONSTANTS_FILE = path.join(ROOT, 'src', 'cli', 'postinstall', 'constants.ts');
|
|
19
|
+
const DISPLAY = {
|
|
20
|
+
haiku: 'Haiku',
|
|
21
|
+
sonnet: 'Sonnet',
|
|
22
|
+
opus: 'Opus',
|
|
23
|
+
inherit: 'Inherit',
|
|
24
|
+
};
|
|
25
|
+
function loadModelMapping() {
|
|
26
|
+
const content = fs.readFileSync(CONSTANTS_FILE, 'utf-8');
|
|
27
|
+
const block = content.match(/CLAUDE_MODEL_MAPPING[^{]*\{([\s\S]*?)\n\};/);
|
|
28
|
+
if (!block)
|
|
29
|
+
throw new Error('CLAUDE_MODEL_MAPPING not found in constants.ts');
|
|
30
|
+
const map = {};
|
|
31
|
+
for (const m of block[1].matchAll(/'([\w-]+)':\s*'([\w-]+)'/g))
|
|
32
|
+
map[m[1]] = m[2];
|
|
33
|
+
return map;
|
|
34
|
+
}
|
|
35
|
+
/** `## Model` 섹션의 첫 모델 라인 (`**Model** ...`) 을 반환 */
|
|
36
|
+
function firstModelLine(content) {
|
|
37
|
+
const lines = content.split('\n');
|
|
38
|
+
const h = lines.findIndex((l) => /^##\s+Model\s*$/.test(l));
|
|
39
|
+
if (h === -1)
|
|
40
|
+
return null;
|
|
41
|
+
for (let i = h + 1; i < lines.length && !/^##\s/.test(lines[i]); i++) {
|
|
42
|
+
if (/^\s*\*\*(Haiku|Sonnet|Opus|Inherit)/.test(lines[i]))
|
|
43
|
+
return lines[i].trim();
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
describe('agent model SSOT (CLAUDE_MODEL_MAPPING)', () => {
|
|
48
|
+
const map = loadModelMapping();
|
|
49
|
+
const files = globSync('**/*.md', { cwd: AGENTS_DIR }).sort();
|
|
50
|
+
it('discovers agent files', () => {
|
|
51
|
+
expect(files.length).toBeGreaterThan(0);
|
|
52
|
+
});
|
|
53
|
+
for (const rel of files) {
|
|
54
|
+
const name = path.basename(rel, '.md');
|
|
55
|
+
it(`${rel} has a CLAUDE_MODEL_MAPPING entry`, () => {
|
|
56
|
+
expect(map[name], `no model mapping for "${name}"`).toBeDefined();
|
|
57
|
+
});
|
|
58
|
+
it(`${rel} '## Model' matches the mapped tier (no drift, no version)`, () => {
|
|
59
|
+
const tier = map[name];
|
|
60
|
+
if (!tier)
|
|
61
|
+
return; // covered by the entry test above
|
|
62
|
+
const content = fs.readFileSync(path.join(AGENTS_DIR, rel), 'utf-8');
|
|
63
|
+
const line = firstModelLine(content);
|
|
64
|
+
expect(line, `missing '## Model' section in ${rel}`).not.toBeNull();
|
|
65
|
+
// 매핑 tier 와 표기가 일치해야 하고, 버전 숫자(예: "Haiku 4.5")가 없어야 한다.
|
|
66
|
+
expect(line).toMatch(new RegExp(`^\\*\\*${DISPLAY[tier]}\\*\\*`));
|
|
67
|
+
expect(line, `version-pinned model name in ${rel}`).not.toMatch(/\*\*(Haiku|Sonnet|Opus)\s+[\d.]/);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
//# sourceMappingURL=agent-model-sync.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-model-sync.test.js","sourceRoot":"","sources":["../../src/__tests__/agent-model-sync.test.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAI3E;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAI3E;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,CAuB/C;AAID;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,UAAQ,GAAG,gBAAgB,CAsCvE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAWvE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,CAYxF;AAaD;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAyBxC"}
|
package/dist/cli/auth.js
CHANGED
|
@@ -8,7 +8,7 @@ import { detectAntigravityCli, detectClaudeCli, detectCodexCli } from './utils/c
|
|
|
8
8
|
* LLM 인증 상태 확인 (config.json 우선, process.env fallback)
|
|
9
9
|
*/
|
|
10
10
|
export function getLLMAuthStatus() {
|
|
11
|
-
const status = { claude: [], gpt: [], antigravity: [] };
|
|
11
|
+
const status = { claude: [], gpt: [], antigravity: [], zai: [] };
|
|
12
12
|
const config = readGlobalConfig();
|
|
13
13
|
// GPT
|
|
14
14
|
if (config.credentials?.gpt?.apiKey || process.env.OPENAI_API_KEY) {
|
|
@@ -18,6 +18,11 @@ export function getLLMAuthStatus() {
|
|
|
18
18
|
if (config.credentials?.antigravity?.apiKey || process.env.ANTIGRAVITY_API_KEY) {
|
|
19
19
|
status.antigravity.push({ type: 'apikey', valid: true });
|
|
20
20
|
}
|
|
21
|
+
// ZAI (Z.ai / GLM) — coding plan 키 또는 일반 키
|
|
22
|
+
if (config.credentials?.zai?.codingApiKey || config.credentials?.zai?.apiKey ||
|
|
23
|
+
process.env.ZAI_CODING_API_KEY || process.env.ZAI_API_KEY) {
|
|
24
|
+
status.zai.push({ type: 'apikey', valid: true });
|
|
25
|
+
}
|
|
21
26
|
return status;
|
|
22
27
|
}
|
|
23
28
|
const CLAUDE_AUTH_CHECK_TIMEOUT = 10_000;
|
|
@@ -119,6 +124,7 @@ export function formatLLMStatus() {
|
|
|
119
124
|
const antigravityRow = formatLlmCliRow(antigravityCli.installed, antigravityCli.authenticated);
|
|
120
125
|
const gptKey = apiStatus.gpt.length > 0 ? '✓ Key' : '⬚ —';
|
|
121
126
|
const antigravityKey = apiStatus.antigravity.length > 0 ? '✓ Key' : '⬚ —';
|
|
127
|
+
const zaiKey = apiStatus.zai.length > 0 ? '✓ Key' : '⬚ —';
|
|
122
128
|
return [
|
|
123
129
|
'LLM CLI (orchestration):',
|
|
124
130
|
` Claude Code ${claudeRow}`,
|
|
@@ -128,6 +134,7 @@ export function formatLLMStatus() {
|
|
|
128
134
|
'LLM API Key (direct):',
|
|
129
135
|
` GPT ${gptKey}`,
|
|
130
136
|
` Antigravity ${antigravityKey}`,
|
|
137
|
+
` ZAI (GLM) ${zaiKey}`,
|
|
131
138
|
].join('\n');
|
|
132
139
|
}
|
|
133
140
|
//# sourceMappingURL=auth.js.map
|
package/dist/cli/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEhG;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,MAAM,GAAiB,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEhG;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,MAAM,GAAiB,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;IAC/E,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAElC,MAAM;IACN,IAAI,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAClE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,cAAc;IACd,IAAI,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;QAC/E,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,2CAA2C;IAC3C,IACE,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE,YAAY,IAAI,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE,MAAM;QACxE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,EACzD,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAS,GAAG,KAAK;IACnD,MAAM,MAAM,GAAqB,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;IAE1F,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,QAAQ,CAAC,kBAAkB,EAAE;YACjD,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEV,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;YACxB,MAAM,CAAC,OAAO,GAAG,aAAa,CAAC;QACjC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CACrB,qFAAqF,EACrF;YACE,OAAO,EAAE,yBAAyB;YAClC,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CACF,CAAC;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAA2B,CAAC;QAC1D,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC;IAC/B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAwB;IAC7D,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,sDAAsD,CAAC;IAChE,CAAC;IACD,IAAI,MAAM,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;QAClC,OAAO,gBAAgB,MAAM,CAAC,OAAO,GAAG,CAAC;IAC3C,CAAC;IACD,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,OAAO,oBAAoB,MAAM,CAAC,OAAO,GAAG,CAAC;IAC/C,CAAC;IACD,OAAO,wBAAwB,MAAM,CAAC,OAAO,uBAAuB,CAAC;AACvE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAsB,EAAE,YAAsB;IAC9E,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,EAAE,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACjC,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACxD,OAAO,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC,CAAC;IACJ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,iBAAiB,CAAC;IACjD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,SAAkB,EAAE,aAAkC;IAC7E,IAAI,CAAC,SAAS;QAAE,OAAO,iBAAiB,CAAC;IACzC,IAAI,aAAa,KAAK,SAAS;QAAE,OAAO,aAAa,CAAC;IACtD,OAAO,aAAa,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,yBAAyB,CAAC;AAC3E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;IAClC,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;IAC9C,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC;IAErC,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IAChF,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC7E,MAAM,cAAc,GAAG,eAAe,CAAC,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC;IAE/F,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAC1D,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAC1E,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAE1D,OAAO;QACL,0BAA0B;QAC1B,yBAAyB,SAAS,EAAE;QACpC,yBAAyB,QAAQ,EAAE;QACnC,yBAAyB,cAAc,EAAE;QACzC,EAAE;QACF,uBAAuB;QACvB,yBAAyB,MAAM,EAAE;QACjC,yBAAyB,cAAc,EAAE;QACzC,yBAAyB,MAAM,EAAE;KAClC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -14,4 +14,5 @@ export { figmaSetup, figmaStatus, figmaLogout, figmaBreakpoints, figmaHelp } fro
|
|
|
14
14
|
export { configShow, configHelp } from './config.js';
|
|
15
15
|
export { statsDefault, statsWeek, statsQuality, statsHelp } from './stats.js';
|
|
16
16
|
export { codexLaunch, codexStatus, codexShell, codexHelp } from './codex-proxy.js';
|
|
17
|
+
export { llmList, llmRefresh, llmHelp } from './llm.js';
|
|
17
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -14,4 +14,5 @@ export { figmaSetup, figmaStatus, figmaLogout, figmaBreakpoints, figmaHelp } fro
|
|
|
14
14
|
export { configShow, configHelp } from './config.js';
|
|
15
15
|
export { statsDefault, statsWeek, statsQuality, statsHelp } from './stats.js';
|
|
16
16
|
export { codexLaunch, codexStatus, codexShell, codexHelp } from './codex-proxy.js';
|
|
17
|
+
export { llmList, llmRefresh, llmHelp } from './llm.js';
|
|
17
18
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/info.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH;;GAEG;AACH,wBAAgB,QAAQ,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/info.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH;;GAEG;AACH,wBAAgB,QAAQ,IAAI,IAAI,CA6C/B;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CA2BjC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAGlC"}
|
|
@@ -29,6 +29,8 @@ LLM:
|
|
|
29
29
|
vibe claude <cmd> Claude (key, status, logout)
|
|
30
30
|
vibe gpt <cmd> GPT (key, status, logout)
|
|
31
31
|
vibe antigravity <cmd> Antigravity (key, status, logout)
|
|
32
|
+
vibe zai <cmd> ZAI / GLM (coding-key, key, status, logout)
|
|
33
|
+
vibe llm <cmd> List / refresh available models (list, refresh)
|
|
32
34
|
|
|
33
35
|
Figma:
|
|
34
36
|
vibe figma setup <token> Set Figma access token
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../../src/cli/commands/info.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;GAEG;AACH,MAAM,UAAU,QAAQ;IACtB,OAAO,CAAC,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../../src/cli/commands/info.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;GAEG;AACH,MAAM,UAAU,QAAQ;IACtB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CX,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC;IACvE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IAE3D,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,aAAa,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAEnD,IAAI,MAAM,GAAyC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAClF,IAAI,aAAa,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/C,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,UAAU;IACV,MAAM,aAAa,GAAG,aAAa;QACjC,CAAC,CAAC,KAAK,WAAW,EAAE;QACpB,CAAC,CAAC,uCAAuC,CAAC;IAE5C,OAAO,CAAC,GAAG,CAAC;gBACE,WAAW,CAAC,OAAO;;WAExB,aAAa;EACtB,aAAa,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;EAC7D,eAAe,EAAE;GAChB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,SAAS,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `vibe llm` — LLM 모델 조회/최신화
|
|
3
|
+
*
|
|
4
|
+
* vibe llm list provider 별 현재 사용 가능한 모델 표시
|
|
5
|
+
* vibe llm refresh 라이브 조회 후 추천 모델을 ~/.vibe/config.json 에 반영
|
|
6
|
+
* vibe llm help
|
|
7
|
+
*/
|
|
8
|
+
export declare function llmList(): Promise<void>;
|
|
9
|
+
export declare function llmRefresh(): Promise<void>;
|
|
10
|
+
export declare function llmHelp(): void;
|
|
11
|
+
//# sourceMappingURL=llm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/llm.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAmBH,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAK7C;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAehD;AAED,wBAAgB,OAAO,IAAI,IAAI,CAY9B"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `vibe llm` — LLM 모델 조회/최신화
|
|
3
|
+
*
|
|
4
|
+
* vibe llm list provider 별 현재 사용 가능한 모델 표시
|
|
5
|
+
* vibe llm refresh 라이브 조회 후 추천 모델을 ~/.vibe/config.json 에 반영
|
|
6
|
+
* vibe llm help
|
|
7
|
+
*/
|
|
8
|
+
import { fetchAllProviders, applyToConfig } from '../llm/model-refresh.js';
|
|
9
|
+
function sourceLabel(p) {
|
|
10
|
+
if (p.source === 'no-key')
|
|
11
|
+
return 'no key — curated list';
|
|
12
|
+
if (p.oauthOnly)
|
|
13
|
+
return 'oauth (Codex) — curated list';
|
|
14
|
+
if (p.source === 'curated')
|
|
15
|
+
return 'API unavailable — curated list';
|
|
16
|
+
return 'live';
|
|
17
|
+
}
|
|
18
|
+
function printProvider(p) {
|
|
19
|
+
console.log(`\n${p.label} [${sourceLabel(p)}]`);
|
|
20
|
+
for (const id of p.models) {
|
|
21
|
+
const star = id === p.recommended ? ' ★' : '';
|
|
22
|
+
console.log(` ${id}${star}`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export async function llmList() {
|
|
26
|
+
console.log('Fetching available models from providers...');
|
|
27
|
+
const providers = await fetchAllProviders();
|
|
28
|
+
for (const p of providers)
|
|
29
|
+
printProvider(p);
|
|
30
|
+
console.log('\n★ = recommended (latest). Update SSOT: vibe llm refresh');
|
|
31
|
+
}
|
|
32
|
+
export async function llmRefresh() {
|
|
33
|
+
console.log('Refreshing models from provider APIs...');
|
|
34
|
+
const providers = await fetchAllProviders();
|
|
35
|
+
for (const p of providers)
|
|
36
|
+
printProvider(p);
|
|
37
|
+
const changes = applyToConfig(providers);
|
|
38
|
+
console.log('\n─── SSOT update (~/.vibe/config.json models) ───');
|
|
39
|
+
if (changes.length === 0) {
|
|
40
|
+
console.log(' Already up to date — no changes.');
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
for (const c of changes) {
|
|
44
|
+
console.log(` ${c.key}: ${c.from ?? '(unset)'} → ${c.to}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
console.log('\nNote: Claude models are managed as Claude Code tiers (sonnet/opus/haiku) and are not auto-overwritten.');
|
|
48
|
+
}
|
|
49
|
+
export function llmHelp() {
|
|
50
|
+
console.log(`
|
|
51
|
+
vibe llm — LLM model discovery & SSOT refresh
|
|
52
|
+
|
|
53
|
+
vibe llm list List currently available models per provider
|
|
54
|
+
(claude, openai api+oauth, gemini, zai)
|
|
55
|
+
vibe llm refresh Fetch latest models and update ~/.vibe/config.json models
|
|
56
|
+
vibe llm help Show this help
|
|
57
|
+
|
|
58
|
+
Live fetch uses each provider's key (or oauth); missing keys fall back to a
|
|
59
|
+
curated list. Recommended (★) models are written to the runtime model SSOT.
|
|
60
|
+
`);
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=llm.js.map
|