@su-record/vibe 2.10.2 → 2.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +6 -0
- package/README.en.md +50 -28
- package/README.md +37 -9
- package/dist/cli/auth.d.ts +2 -2
- package/dist/cli/auth.js +12 -12
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli/commands/codex-proxy.d.ts +1 -1
- package/dist/cli/commands/codex-proxy.js +11 -11
- package/dist/cli/commands/codex-proxy.js.map +1 -1
- package/dist/cli/commands/config.d.ts +1 -1
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +22 -21
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/info.js +2 -2
- package/dist/cli/commands/init.d.ts +2 -2
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +20 -16
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/setup.d.ts +1 -1
- package/dist/cli/commands/setup.js +24 -24
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/skills.d.ts.map +1 -1
- package/dist/cli/commands/skills.js +8 -7
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +28 -16
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/design/design-md-parser.d.ts +25 -0
- package/dist/cli/design/design-md-parser.d.ts.map +1 -0
- package/dist/cli/design/design-md-parser.js +86 -0
- package/dist/cli/design/design-md-parser.js.map +1 -0
- package/dist/cli/design/design-md-parser.test.d.ts +2 -0
- package/dist/cli/design/design-md-parser.test.d.ts.map +1 -0
- package/dist/cli/design/design-md-parser.test.js +149 -0
- package/dist/cli/design/design-md-parser.test.js.map +1 -0
- package/dist/cli/index.js +22 -23
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/llm/antigravity-commands.d.ts +25 -0
- package/dist/cli/llm/antigravity-commands.d.ts.map +1 -0
- package/dist/cli/llm/antigravity-commands.js +142 -0
- package/dist/cli/llm/antigravity-commands.js.map +1 -0
- package/dist/cli/llm/claude-commands.d.ts.map +1 -1
- package/dist/cli/llm/claude-commands.js +3 -1
- package/dist/cli/llm/claude-commands.js.map +1 -1
- package/dist/cli/llm/config.js +7 -7
- package/dist/cli/llm/config.js.map +1 -1
- package/dist/cli/llm/gemini-commands.d.ts.map +1 -1
- package/dist/cli/llm/gemini-commands.js +7 -4
- package/dist/cli/llm/gemini-commands.js.map +1 -1
- package/dist/cli/llm/gpt-commands.d.ts.map +1 -1
- package/dist/cli/llm/gpt-commands.js +3 -3
- package/dist/cli/llm/gpt-commands.js.map +1 -1
- package/dist/cli/llm/help.js +4 -4
- package/dist/cli/llm/index.d.ts +1 -1
- package/dist/cli/llm/index.d.ts.map +1 -1
- package/dist/cli/llm/index.js +1 -1
- package/dist/cli/llm/index.js.map +1 -1
- package/dist/cli/llm.d.ts +2 -2
- package/dist/cli/llm.js +2 -2
- package/dist/cli/postinstall/constants.d.ts.map +1 -1
- package/dist/cli/postinstall/constants.js +18 -17
- package/dist/cli/postinstall/constants.js.map +1 -1
- package/dist/cli/postinstall/inline-skills.js +5 -5
- package/dist/cli/postinstall/inline-skills.js.map +1 -1
- package/dist/cli/postinstall/main.d.ts.map +1 -1
- package/dist/cli/postinstall/main.js +14 -9
- package/dist/cli/postinstall/main.js.map +1 -1
- package/dist/cli/setup/CodexHooks.d.ts +20 -0
- package/dist/cli/setup/CodexHooks.d.ts.map +1 -0
- package/dist/cli/setup/CodexHooks.js +50 -0
- package/dist/cli/setup/CodexHooks.js.map +1 -0
- package/dist/cli/setup/CodexHooks.test.d.ts +2 -0
- package/dist/cli/setup/CodexHooks.test.d.ts.map +1 -0
- package/dist/cli/setup/CodexHooks.test.js +23 -0
- package/dist/cli/setup/CodexHooks.test.js.map +1 -0
- package/dist/cli/setup/LegacyMigration.js +2 -2
- package/dist/cli/setup/ProjectSetup.d.ts +4 -4
- package/dist/cli/setup/ProjectSetup.d.ts.map +1 -1
- package/dist/cli/setup/ProjectSetup.js +21 -19
- package/dist/cli/setup/ProjectSetup.js.map +1 -1
- package/dist/cli/setup/index.d.ts +1 -0
- package/dist/cli/setup/index.d.ts.map +1 -1
- package/dist/cli/setup/index.js +1 -0
- package/dist/cli/setup/index.js.map +1 -1
- package/dist/cli/setup.d.ts +2 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +2 -1
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/types.d.ts +7 -9
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/utils/cli-detector.d.ts +5 -5
- package/dist/cli/utils/cli-detector.d.ts.map +1 -1
- package/dist/cli/utils/cli-detector.js +18 -14
- package/dist/cli/utils/cli-detector.js.map +1 -1
- package/dist/cli/utils/cli-detector.test.d.ts +2 -0
- package/dist/cli/utils/cli-detector.test.d.ts.map +1 -0
- package/dist/cli/utils/cli-detector.test.js +51 -0
- package/dist/cli/utils/cli-detector.test.js.map +1 -0
- package/dist/infra/lib/ReviewRace.d.ts +4 -4
- package/dist/infra/lib/ReviewRace.d.ts.map +1 -1
- package/dist/infra/lib/ReviewRace.js +16 -16
- package/dist/infra/lib/ReviewRace.js.map +1 -1
- package/dist/infra/lib/SkillRepository.js +7 -7
- package/dist/infra/lib/antigravity/auth.d.ts +18 -0
- package/dist/infra/lib/antigravity/auth.d.ts.map +1 -0
- package/dist/infra/lib/antigravity/auth.js +32 -0
- package/dist/infra/lib/antigravity/auth.js.map +1 -0
- package/dist/infra/lib/antigravity/capabilities.d.ts +28 -0
- package/dist/infra/lib/antigravity/capabilities.d.ts.map +1 -0
- package/dist/infra/lib/antigravity/capabilities.js +178 -0
- package/dist/infra/lib/antigravity/capabilities.js.map +1 -0
- package/dist/infra/lib/antigravity/chat.d.ts +34 -0
- package/dist/infra/lib/antigravity/chat.d.ts.map +1 -0
- package/dist/infra/lib/antigravity/chat.js +160 -0
- package/dist/infra/lib/antigravity/chat.js.map +1 -0
- package/dist/infra/lib/antigravity/completion.d.ts +12 -0
- package/dist/infra/lib/antigravity/completion.d.ts.map +1 -0
- package/dist/infra/lib/antigravity/completion.js +13 -0
- package/dist/infra/lib/antigravity/completion.js.map +1 -0
- package/dist/infra/lib/antigravity/constants.d.ts +8 -0
- package/dist/infra/lib/antigravity/constants.d.ts.map +1 -0
- package/dist/infra/lib/antigravity/constants.js +11 -0
- package/dist/infra/lib/antigravity/constants.js.map +1 -0
- package/dist/infra/lib/antigravity/index.d.ts +13 -0
- package/dist/infra/lib/antigravity/index.d.ts.map +1 -0
- package/dist/infra/lib/antigravity/index.js +12 -0
- package/dist/infra/lib/antigravity/index.js.map +1 -0
- package/dist/infra/lib/antigravity/models.d.ts +11 -0
- package/dist/infra/lib/antigravity/models.d.ts.map +1 -0
- package/dist/infra/lib/antigravity/models.js +38 -0
- package/dist/infra/lib/antigravity/models.js.map +1 -0
- package/dist/infra/lib/antigravity/orchestration.d.ts +33 -0
- package/dist/infra/lib/antigravity/orchestration.d.ts.map +1 -0
- package/dist/infra/lib/antigravity/orchestration.js +62 -0
- package/dist/infra/lib/antigravity/orchestration.js.map +1 -0
- package/dist/infra/lib/antigravity/types.d.ts +115 -0
- package/dist/infra/lib/antigravity/types.d.ts.map +1 -0
- package/dist/infra/lib/antigravity/types.js +5 -0
- package/dist/infra/lib/antigravity/types.js.map +1 -0
- package/dist/infra/lib/codex-proxy.d.ts +1 -1
- package/dist/infra/lib/codex-proxy.js +9 -9
- package/dist/infra/lib/codex-proxy.js.map +1 -1
- package/dist/infra/lib/config/GlobalConfigManager.d.ts +6 -3
- package/dist/infra/lib/config/GlobalConfigManager.d.ts.map +1 -1
- package/dist/infra/lib/config/GlobalConfigManager.js +47 -37
- package/dist/infra/lib/config/GlobalConfigManager.js.map +1 -1
- package/dist/infra/lib/config/GlobalConfigManager.test.d.ts +2 -0
- package/dist/infra/lib/config/GlobalConfigManager.test.d.ts.map +1 -0
- package/dist/infra/lib/config/GlobalConfigManager.test.js +9 -0
- package/dist/infra/lib/config/GlobalConfigManager.test.js.map +1 -0
- package/dist/infra/lib/constants.js +1 -1
- package/dist/infra/lib/constants.js.map +1 -1
- package/dist/infra/lib/gemini/auth.d.ts +3 -3
- package/dist/infra/lib/gemini/auth.js +9 -9
- package/dist/infra/lib/gemini/auth.js.map +1 -1
- package/dist/infra/lib/llm/auth/AuthProfileManager.d.ts +3 -3
- package/dist/infra/lib/llm/auth/AuthProfileManager.d.ts.map +1 -1
- package/dist/infra/lib/llm/auth/AuthProfileManager.js.map +1 -1
- package/dist/infra/lib/llm/auth/AuthProfileManager.test.js +8 -8
- package/dist/infra/lib/llm/auth/AuthProfileManager.test.js.map +1 -1
- package/dist/infra/lib/llm/auth/ConfigManager.js +2 -2
- package/dist/infra/lib/llm/auth/ConfigManager.js.map +1 -1
- package/dist/infra/lib/llm/auth/TokenRefresher.d.ts +1 -1
- package/dist/infra/lib/llm/auth/TokenRefresher.js +1 -1
- package/dist/infra/lib/llm/auth/index.js +1 -1
- package/dist/infra/lib/llm/auth/index.js.map +1 -1
- package/dist/infra/lib/llm/index.d.ts +1 -1
- package/dist/infra/lib/llm/index.js +1 -1
- package/dist/infra/lib/llm/types.d.ts +3 -3
- package/dist/infra/lib/llm/types.d.ts.map +1 -1
- package/dist/infra/lib/llm/types.js +1 -1
- package/dist/infra/lib/llm/utils/stream.js +1 -1
- package/dist/infra/lib/llm/utils/stream.js.map +1 -1
- package/dist/infra/lib/llm-availability.d.ts +5 -5
- package/dist/infra/lib/llm-availability.d.ts.map +1 -1
- package/dist/infra/lib/llm-availability.js +13 -10
- package/dist/infra/lib/llm-availability.js.map +1 -1
- package/dist/infra/lib/llm-availability.test.d.ts +2 -0
- package/dist/infra/lib/llm-availability.test.d.ts.map +1 -0
- package/dist/infra/lib/llm-availability.test.js +36 -0
- package/dist/infra/lib/llm-availability.test.js.map +1 -0
- package/dist/infra/lib/ui-ux/UiUxWorkflow.d.ts.map +1 -1
- package/dist/infra/lib/ui-ux/UiUxWorkflow.js +23 -5
- package/dist/infra/lib/ui-ux/UiUxWorkflow.js.map +1 -1
- package/dist/infra/orchestrator/AgentExecutor.d.ts.map +1 -1
- package/dist/infra/orchestrator/AgentExecutor.js +30 -1
- package/dist/infra/orchestrator/AgentExecutor.js.map +1 -1
- package/dist/infra/orchestrator/AgentManifestCache.js +1 -1
- package/dist/infra/orchestrator/AgentManifestCache.js.map +1 -1
- package/dist/infra/orchestrator/BackgroundManager.js +2 -2
- package/dist/infra/orchestrator/BackgroundManager.js.map +1 -1
- package/dist/infra/orchestrator/CodexAgentRuntime.d.ts +12 -0
- package/dist/infra/orchestrator/CodexAgentRuntime.d.ts.map +1 -0
- package/dist/infra/orchestrator/CodexAgentRuntime.js +94 -0
- package/dist/infra/orchestrator/CodexAgentRuntime.js.map +1 -0
- package/dist/infra/orchestrator/CodexAgentRuntime.test.d.ts +2 -0
- package/dist/infra/orchestrator/CodexAgentRuntime.test.d.ts.map +1 -0
- package/dist/infra/orchestrator/CodexAgentRuntime.test.js +37 -0
- package/dist/infra/orchestrator/CodexAgentRuntime.test.js.map +1 -0
- package/dist/infra/orchestrator/LLMCluster.d.ts +11 -11
- package/dist/infra/orchestrator/LLMCluster.d.ts.map +1 -1
- package/dist/infra/orchestrator/LLMCluster.js +22 -22
- package/dist/infra/orchestrator/LLMCluster.js.map +1 -1
- package/dist/infra/orchestrator/MultiLlmResearch.d.ts +3 -3
- package/dist/infra/orchestrator/MultiLlmResearch.d.ts.map +1 -1
- package/dist/infra/orchestrator/MultiLlmResearch.js +17 -17
- package/dist/infra/orchestrator/MultiLlmResearch.js.map +1 -1
- package/dist/infra/orchestrator/SmartRouter.d.ts +2 -2
- package/dist/infra/orchestrator/SmartRouter.js +7 -7
- package/dist/infra/orchestrator/SmartRouter.js.map +1 -1
- package/dist/infra/orchestrator/SmartRouter.test.js +74 -74
- package/dist/infra/orchestrator/SmartRouter.test.js.map +1 -1
- package/dist/infra/orchestrator/agentDiscovery.d.ts +1 -1
- package/dist/infra/orchestrator/agentDiscovery.js +4 -4
- package/dist/infra/orchestrator/agentDiscovery.js.map +1 -1
- package/dist/infra/orchestrator/index.d.ts +17 -17
- package/dist/infra/orchestrator/index.d.ts.map +1 -1
- package/dist/infra/orchestrator/index.js +30 -30
- package/dist/infra/orchestrator/index.js.map +1 -1
- package/dist/infra/orchestrator/orchestrator.d.ts +4 -4
- package/dist/infra/orchestrator/orchestrator.d.ts.map +1 -1
- package/dist/infra/orchestrator/orchestrator.js +5 -5
- package/dist/infra/orchestrator/orchestrator.js.map +1 -1
- package/dist/infra/orchestrator/parallelResearch.d.ts.map +1 -1
- package/dist/infra/orchestrator/parallelResearch.js +11 -0
- package/dist/infra/orchestrator/parallelResearch.js.map +1 -1
- package/dist/infra/orchestrator/types.d.ts +7 -8
- package/dist/infra/orchestrator/types.d.ts.map +1 -1
- package/dist/infra/orchestrator/types.js +17 -18
- package/dist/infra/orchestrator/types.js.map +1 -1
- package/dist/tools/spec/specGenerator.d.ts +1 -1
- package/dist/tools/spec/specGenerator.js +1 -1
- package/hooks/antigravity-hooks.json +73 -0
- package/hooks/scripts/__tests__/codex-hook-adapter.test.js +31 -0
- package/hooks/scripts/__tests__/hook-payload.test.js +29 -0
- package/hooks/scripts/__tests__/llm-orchestrate-antigravity.test.js +63 -0
- package/hooks/scripts/codex-hook-adapter.js +124 -0
- package/hooks/scripts/codex-review-gate.js +7 -3
- package/hooks/scripts/devlog-gen.js +1 -1
- package/hooks/scripts/hook-payload.js +64 -0
- package/hooks/scripts/lib/dispatcher.js +20 -0
- package/hooks/scripts/llm-orchestrate.js +40 -44
- package/hooks/scripts/prompt-dispatcher.js +9 -9
- package/hooks/scripts/stop-notify.js +1 -1
- package/hooks/scripts/utils.js +1 -1
- package/package.json +1 -1
- package/skills/brand-assets/SKILL.md +11 -11
- package/skills/docs/SKILL.md +10 -5
- package/skills/event-comms/SKILL.md +1 -1
- package/skills/event-ops/SKILL.md +4 -4
- package/skills/spec/SKILL.md +29 -29
- package/skills/spec-review/SKILL.md +23 -23
- package/skills/tool-fallback/SKILL.md +2 -2
- package/skills/tool-fallback/rubrics/fallback-chain.md +2 -2
- package/skills/vibe.design/SKILL.md +183 -0
- package/skills/vibe.design/heuristics/code-extract.md +100 -0
- package/skills/vibe.design/references/README.md +39 -0
- package/skills/vibe.design/templates/DESIGN.md.template +100 -0
- package/skills/vibe.event/SKILL.md +1 -1
- package/skills/vibe.figma/SKILL.md +17 -1
- package/skills/vibe.review/SKILL.md +20 -13
- package/skills/vibe.run/SKILL.md +47 -30
- package/skills/vibe.spec/SKILL.md +4 -4
- package/skills/vibe.utils/SKILL.md +17 -17
- package/skills/vibe.verify/SKILL.md +20 -0
- package/hooks/gemini-hooks.json +0 -73
package/CLAUDE.md
CHANGED
|
@@ -59,6 +59,12 @@ No `console.log` in commits · No hardcoded strings/numbers · No commented-out
|
|
|
59
59
|
| `.claude/settings.local.json` | Claude Code hooks (auto-generated, don't commit) |
|
|
60
60
|
| `~/.codex/config.toml` | Codex `notify` (turn-complete lifecycle hook, auto-installed) |
|
|
61
61
|
|
|
62
|
+
### Quality SSOT (3-tier)
|
|
63
|
+
| Path | Purpose |
|
|
64
|
+
|---|---|
|
|
65
|
+
| `CLAUDE.md` / `AGENTS.md` | Code quality + build quality (existing) |
|
|
66
|
+
| `DESIGN.md` | **Visual quality** — Stitch 9-section format, project root, managed by `/vibe.design` (init/lint/verify/sync). Figma 독립. UI stack 에서만 권유 — 부재해도 워크플로 블록하지 않음. |
|
|
67
|
+
|
|
62
68
|
Legacy: 기존 `.claude/vibe/` 는 런타임에 자동 인식되며 `vibe init`/`update` 시 `.vibe/` 로 이동한다.
|
|
63
69
|
|
|
64
70
|
### Dual-Harness Doctrine
|
package/README.en.md
CHANGED
|
@@ -21,31 +21,24 @@ vibe init
|
|
|
21
21
|
One entry point. Everything else is automatic.
|
|
22
22
|
|
|
23
23
|
```
|
|
24
|
-
/vibe
|
|
24
|
+
/vibe "coffee brand landing page"
|
|
25
25
|
|
|
|
26
26
|
v
|
|
27
|
-
|
|
28
|
-
| (loops until you say stop)
|
|
27
|
+
Intent classification ─── new feature? figma-driven? clone? resume? review? regress? ...
|
|
29
28
|
v
|
|
30
|
-
|
|
29
|
+
Smart Resume ─── detect .vibe/{interviews,plans,specs,features}/ state
|
|
31
30
|
|
|
|
32
31
|
v
|
|
33
|
-
|
|
32
|
+
Pipeline design ─── /vibe.spec → /vibe.figma → /vibe.run → /vibe.verify → /vibe.trace
|
|
34
33
|
|
|
|
35
34
|
v
|
|
36
|
-
|
|
35
|
+
One approval gate (skipped with ultrawork)
|
|
37
36
|
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
/vibe.run (Logic) /vibe.figma (UI)
|
|
41
|
-
Implement from SPEC Figma design ↔ Code
|
|
42
|
-
12 agents review Read or Write
|
|
43
|
-
| |
|
|
44
|
-
v v
|
|
45
|
-
/vibe.verify ──── /vibe.trace ──── Done
|
|
37
|
+
v
|
|
38
|
+
Sequential execution ─── each phase hands off to the next
|
|
46
39
|
```
|
|
47
40
|
|
|
48
|
-
**Smart Resume** — Stop at any step, close the session, come back later. `/vibe
|
|
41
|
+
**Smart Resume** — Stop at any step, close the session, come back later. `/vibe` auto-detects where you left off and picks up from there. No need to remember feature names.
|
|
49
42
|
|
|
50
43
|
**ultrawork** — Add `ultrawork` to skip all confirmation gates and run the full pipeline hands-free.
|
|
51
44
|
|
|
@@ -57,15 +50,16 @@ One entry point. Everything else is automatic.
|
|
|
57
50
|
# Install
|
|
58
51
|
npm install -g @su-record/vibe
|
|
59
52
|
|
|
60
|
-
# Initialize (auto-detects your stack, generates project-aware
|
|
53
|
+
# Initialize (auto-detects your stack, generates project-aware harness files)
|
|
61
54
|
cd your-project
|
|
62
55
|
vibe init
|
|
63
56
|
|
|
64
|
-
# Start
|
|
57
|
+
# Start either AI coding tool
|
|
65
58
|
claude
|
|
59
|
+
codex
|
|
66
60
|
|
|
67
61
|
# Run the workflow
|
|
68
|
-
/vibe
|
|
62
|
+
/vibe "add user authentication"
|
|
69
63
|
```
|
|
70
64
|
|
|
71
65
|
---
|
|
@@ -79,8 +73,8 @@ Vibe is built on the [Harness Engineering](https://anthropic.com/engineering/har
|
|
|
79
73
|
| Axis | What it covers | Vibe implementation |
|
|
80
74
|
|------|---------------|---------------------|
|
|
81
75
|
| **Scaffolding** | Project structure, tools, boundaries | `/vibe.scaffold` generates optimized folder structure (docs/, .dev/, layered src/) |
|
|
82
|
-
| **Context** | What AI knows | `vibe init` generates project-aware CLAUDE.md from actual structure analysis |
|
|
83
|
-
| **Planning** | What to build | `/vibe
|
|
76
|
+
| **Context** | What AI knows | `vibe init` generates project-aware `CLAUDE.md` / `AGENTS.md` from actual structure analysis |
|
|
77
|
+
| **Planning** | What to build | `/vibe` routes to interview → plan → SPEC → review pipeline |
|
|
84
78
|
| **Orchestration** | How to execute | 40+ agents, 12 teams, skill-based dispatch |
|
|
85
79
|
| **Verification** | How to trust | Hooks, convergence loops, RTM traceability |
|
|
86
80
|
| **Compounding** | How to improve | Evolution engine, session memory, auto-generated skills |
|
|
@@ -134,13 +128,39 @@ Bidirectional. Read designs from Figma, or write designs to Figma from a plan.
|
|
|
134
128
|
|
|
135
129
|
---
|
|
136
130
|
|
|
131
|
+
## DESIGN.md — Visual Quality SSOT
|
|
132
|
+
|
|
133
|
+
The **third SSOT** alongside `CLAUDE.md` (code) and `AGENTS.md` (build). Google Stitch 9-section format, lives at project root, human-readable so any AI agent can read it. **Figma-independent** — Figma is just one of 4 input paths.
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
# 4 init paths (start without Figma)
|
|
137
|
+
/vibe.design init # Interview (default)
|
|
138
|
+
/vibe.design init --from=code # Reverse-extract tokens (Tailwind / CSS vars / styled-components)
|
|
139
|
+
/vibe.design init --from=reference --reference=linear # 12 awesome-design-md seeds
|
|
140
|
+
/vibe.design init --from=figma --file=<key> # Delegate to /vibe.figma (optional)
|
|
141
|
+
|
|
142
|
+
# Lifecycle
|
|
143
|
+
/vibe.design lint # Verify Stitch 9-section completeness
|
|
144
|
+
/vibe.design verify # Implementation ↔ DESIGN.md hex token drift (<1s / 100 files)
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
**Auto-integrated**:
|
|
148
|
+
- `/vibe.run` — On UI work, suggests DESIGN.md once if missing (silent skip in ultrawork, never blocks)
|
|
149
|
+
- `/vibe.verify` — `### 3.2 Visual Drift Detection` flags hardcoded hex as P1
|
|
150
|
+
- `/vibe.review` — `#### Visual P1 Baseline` — DESIGN.md first, WCAG AA fallback
|
|
151
|
+
- `/vibe.figma` — `--emit-design-md` outputs DESIGN.md from READ; WRITE uses DESIGN.md tone/palette as primary input
|
|
152
|
+
|
|
153
|
+
> v1 scope: hex color drift. Spacing / font drift in Phase 2+
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
137
157
|
## Quality Gates
|
|
138
158
|
|
|
139
159
|
Three layers of defense on every tool call:
|
|
140
160
|
|
|
141
161
|
| Layer | What it blocks |
|
|
142
162
|
|-------|----------------|
|
|
143
|
-
|
|
|
163
|
+
| Tool hooks / pre-commit checks | `any` types, `@ts-ignore`, `console.log`, functions > 50 lines |
|
|
144
164
|
| Review agents | 12 specialized reviewers run in parallel (security, performance, a11y, complexity, ...) |
|
|
145
165
|
| Convergence loop | Review findings loop until P1 = 0. No round cap. Stuck = ask user, never silently proceed. |
|
|
146
166
|
|
|
@@ -158,15 +178,15 @@ Three layers of defense on every tool call:
|
|
|
158
178
|
| **Standard** | `vibe init` selects by stack | Stack/capability support | figma, design-audit, techdebt |
|
|
159
179
|
| **Optional** | Explicit `/skill` only | Reference, wrappers | chub-usage, context7 |
|
|
160
180
|
|
|
161
|
-
**Multi-LLM** — Claude
|
|
181
|
+
**Multi-LLM** — Claude Code or Codex runs the harness, GPT reasons, and Gemini researches. Auto-routes by availability.
|
|
162
182
|
|
|
163
183
|
**Stack detection** — Auto-detects 24 frameworks (Next.js, Django, Rails, Go, Rust, Flutter, and more) and applies framework-specific rules and skills.
|
|
164
184
|
|
|
165
|
-
**Project-aware
|
|
185
|
+
**Project-aware harness docs** — `vibe init` and `vibe update` analyze your project's actual structure (folders, tech stack, build commands) and generate tailored `CLAUDE.md` / `AGENTS.md` files — not static templates.
|
|
166
186
|
|
|
167
187
|
**Session memory** — Decisions, constraints, and goals persist across sessions via SQLite + FTS5 hybrid search.
|
|
168
188
|
|
|
169
|
-
**Smart Resume** — `.last-feature` pointer tracks your latest work. `/vibe
|
|
189
|
+
**Smart Resume** — `.last-feature` pointer tracks your latest work. `/vibe` without arguments shows where you left off or lists all in-progress features.
|
|
170
190
|
|
|
171
191
|
**Self-repair** — Skills include error recovery tables. `/vibe.harness` diagnoses gaps and chains to `/vibe.scaffold` → `vibe update` for automated fixes.
|
|
172
192
|
|
|
@@ -177,7 +197,7 @@ Three layers of defense on every tool call:
|
|
|
177
197
|
| CLI | Status |
|
|
178
198
|
|-----|--------|
|
|
179
199
|
| [Claude Code](https://claude.ai/code) | Full support |
|
|
180
|
-
| [Codex](https://github.com/openai/codex) | Full support (`~/.codex/`, AGENTS.md
|
|
200
|
+
| [Codex](https://github.com/openai/codex) | Full support (`~/.codex/`, AGENTS.md, native hooks.json, config.toml notify, codex exec agent fallback) |
|
|
181
201
|
| [Cursor](https://cursor.sh) | Agents + Rules |
|
|
182
202
|
| [Gemini CLI](https://github.com/google-gemini/gemini-cli) | Agents + Skills |
|
|
183
203
|
|
|
@@ -187,9 +207,11 @@ Three layers of defense on every tool call:
|
|
|
187
207
|
|
|
188
208
|
| Command | Purpose |
|
|
189
209
|
|---------|---------|
|
|
190
|
-
| `/vibe
|
|
210
|
+
| `/vibe` | Main entry point — natural language requirement → pipeline preview → chained execution |
|
|
211
|
+
| `/vibe.spec` | Advanced phase command — interview, plan, spec, review |
|
|
191
212
|
| `/vibe.run` | Implement from SPEC |
|
|
192
213
|
| `/vibe.figma` | Figma ↔ Code (read or write, 3 modes) |
|
|
214
|
+
| `/vibe.design` | DESIGN.md visual quality SSOT — init / lint / verify / sync |
|
|
193
215
|
| `/vibe.verify` | Verify implementation against SPEC |
|
|
194
216
|
| `/vibe.trace` | Requirements traceability matrix |
|
|
195
217
|
| `/vibe.analyze` | Analyze any target — code, documents, websites, Figma |
|
|
@@ -203,7 +225,7 @@ Three layers of defense on every tool call:
|
|
|
203
225
|
|
|
204
226
|
Full guides, skill reference, and configuration details are in the [Wiki](https://github.com/su-record/vibe/wiki).
|
|
205
227
|
|
|
206
|
-
- [README (Korean)](README.
|
|
228
|
+
- [README (Korean)](README.md)
|
|
207
229
|
- [Release Notes](RELEASE_NOTES.md)
|
|
208
230
|
|
|
209
231
|
---
|
|
@@ -211,7 +233,7 @@ Full guides, skill reference, and configuration details are in the [Wiki](https:
|
|
|
211
233
|
## Requirements
|
|
212
234
|
|
|
213
235
|
- Node.js >= 18.0.0
|
|
214
|
-
- Claude Code
|
|
236
|
+
- Claude Code or Codex CLI
|
|
215
237
|
- GPT, Gemini (optional)
|
|
216
238
|
|
|
217
239
|
## License
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
[](https://nodejs.org/)
|
|
8
8
|
[](LICENSE)
|
|
9
9
|
|
|
10
|
-
Vibe는 AI 코딩 도구를 위한 품질 하네스입니다. Claude Code, Codex, Cursor,
|
|
10
|
+
Vibe는 AI 코딩 도구를 위한 품질 하네스입니다. Claude Code, Codex, Cursor, Antigravity CLI를 감싸고, 타입 안전성, 코드 품질, 보안을 자동으로 강제합니다. 빠르게 바이브 코딩하되, 엉망인 코드가 나가지 않게.
|
|
11
11
|
|
|
12
12
|
```bash
|
|
13
13
|
npm install -g @su-record/vibe
|
|
@@ -67,8 +67,9 @@ npm install -g @su-record/vibe
|
|
|
67
67
|
cd your-project
|
|
68
68
|
vibe init
|
|
69
69
|
|
|
70
|
-
# AI 코딩 도구 시작
|
|
70
|
+
# AI 코딩 도구 시작 (둘 중 하나)
|
|
71
71
|
claude
|
|
72
|
+
codex
|
|
72
73
|
|
|
73
74
|
# 워크플로우 실행
|
|
74
75
|
/vibe "사용자 인증 추가"
|
|
@@ -99,13 +100,39 @@ claude
|
|
|
99
100
|
|
|
100
101
|
---
|
|
101
102
|
|
|
103
|
+
## DESIGN.md — 시각 품질 SSOT
|
|
104
|
+
|
|
105
|
+
`CLAUDE.md`(코드)·`AGENTS.md`(빌드) 에 이은 **세 번째 SSOT**. Google Stitch 9-섹션 표준으로 프로젝트 루트에 위치하며, 외부 AI 에이전트가 직접 읽을 수 있는 휴먼-리더블 시각 규약입니다. **Figma 종속 X** — Figma 는 4 입력 경로 중 하나일 뿐.
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
# 4 가지 init 경로 (Figma 없이도 시작 가능)
|
|
109
|
+
/vibe.design init # 인터뷰 (디폴트)
|
|
110
|
+
/vibe.design init --from=code # 기존 코드 토큰 역추출 (Tailwind/CSS-vars/styled-components)
|
|
111
|
+
/vibe.design init --from=reference --reference=linear # awesome-design-md 시드 12 종
|
|
112
|
+
/vibe.design init --from=figma --file=<key> # /vibe.figma 위임 (옵션)
|
|
113
|
+
|
|
114
|
+
# 라이프사이클
|
|
115
|
+
/vibe.design lint # Stitch 9-섹션 완전성 검증
|
|
116
|
+
/vibe.design verify # 구현 ↔ DESIGN.md hex 토큰 드리프트 (<1s/100 파일)
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**자동 통합**:
|
|
120
|
+
- `/vibe.run` — UI 작업 진입 시 DESIGN.md 없으면 1 회 권유 (ultrawork silent skip, 절대 블록 X)
|
|
121
|
+
- `/vibe.verify` — `### 3.2 Visual Drift Detection` 으로 hex 하드코딩 P1 검출
|
|
122
|
+
- `/vibe.review` — `#### Visual P1 Baseline` — DESIGN.md 우선, 없으면 WCAG AA 폴백
|
|
123
|
+
- `/vibe.figma` — `--emit-design-md` 로 READ 산출물을 DESIGN.md 로 출력, WRITE 는 DESIGN.md 톤·팔레트 1 차 입력
|
|
124
|
+
|
|
125
|
+
> v1 범위: hex 컬러 드리프트. spacing / font 드리프트는 Phase 2+
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
102
129
|
## 품질 게이트
|
|
103
130
|
|
|
104
131
|
모든 도구 호출마다 3계층 방어:
|
|
105
132
|
|
|
106
133
|
| 계층 | 차단 대상 |
|
|
107
134
|
|------|----------|
|
|
108
|
-
|
|
|
135
|
+
| 도구 훅 / 커밋 전 검사 | `any` 타입, `@ts-ignore`, `console.log`, 50줄 초과 함수 |
|
|
109
136
|
| 리뷰 에이전트 | 12개 전문 리뷰어 병렬 실행 (보안, 성능, 접근성, 복잡도, ...) |
|
|
110
137
|
| 수렴 루프 | 리뷰 findings P1=0까지 루프. 라운드 캡 없음. Stuck이면 사용자에게 질문, 절대 조용히 넘어가지 않음. |
|
|
111
138
|
|
|
@@ -123,7 +150,7 @@ claude
|
|
|
123
150
|
| **Standard** | `vibe init`이 스택별 선택 | 스택/역할 지원 | figma, design-audit, techdebt |
|
|
124
151
|
| **Optional** | 명시적 `/skill` 호출만 | 레퍼런스, 래퍼 | chub-usage, context7 |
|
|
125
152
|
|
|
126
|
-
**멀티 LLM** — Claude가
|
|
153
|
+
**멀티 LLM** — Claude Code 또는 Codex가 하네스를 실행하고, GPT가 추론, Antigravity가 리서치. 가용 모델에 따라 자동 라우팅.
|
|
127
154
|
|
|
128
155
|
**스택 감지** — 24개 프레임워크 자동 감지 (Next.js, Django, Rails, Go, Rust, Flutter 등) 후 프레임워크별 규칙과 스킬 적용.
|
|
129
156
|
|
|
@@ -138,9 +165,9 @@ claude
|
|
|
138
165
|
| CLI | 상태 |
|
|
139
166
|
|-----|------|
|
|
140
167
|
| [Claude Code](https://claude.ai/code) | 전체 지원 |
|
|
141
|
-
| [Codex](https://github.com/openai/codex) | 전체 지원 (`~/.codex/`, AGENTS.md
|
|
168
|
+
| [Codex](https://github.com/openai/codex) | 전체 지원 (`~/.codex/`, AGENTS.md, native hooks.json, config.toml notify, codex exec agent fallback) |
|
|
142
169
|
| [Cursor](https://cursor.sh) | 에이전트 + 룰 |
|
|
143
|
-
|
|
|
170
|
+
| Antigravity CLI (`agy`) | 에이전트 + 스킬 |
|
|
144
171
|
|
|
145
172
|
---
|
|
146
173
|
|
|
@@ -152,6 +179,7 @@ claude
|
|
|
152
179
|
| `/vibe.spec` | (advanced) 인터뷰, 기획, SPEC, 리뷰 phase 명시적 호출 |
|
|
153
180
|
| `/vibe.run` | (advanced) SPEC 기반 구현 |
|
|
154
181
|
| `/vibe.figma` | (advanced) Figma ↔ 코드 (읽기 또는 쓰기, 3가지 모드) |
|
|
182
|
+
| `/vibe.design` | (advanced) DESIGN.md 시각 품질 SSOT — init / lint / verify / sync |
|
|
155
183
|
| `/vibe.verify` | (advanced) 구현이 SPEC에 맞는지 검증 |
|
|
156
184
|
| `/vibe.trace` | (advanced) 요구사항 추적 매트릭스 |
|
|
157
185
|
|
|
@@ -161,7 +189,7 @@ claude
|
|
|
161
189
|
|
|
162
190
|
상세 가이드, 스킬 레퍼런스, 설정 방법은 [Wiki](https://github.com/su-record/vibe/wiki)를 참고하세요.
|
|
163
191
|
|
|
164
|
-
- [README (English)](README.md)
|
|
192
|
+
- [README (English)](README.en.md)
|
|
165
193
|
- [릴리스 노트](RELEASE_NOTES.md)
|
|
166
194
|
|
|
167
195
|
---
|
|
@@ -169,8 +197,8 @@ claude
|
|
|
169
197
|
## 요구사항
|
|
170
198
|
|
|
171
199
|
- Node.js >= 18.0.0
|
|
172
|
-
- Claude Code
|
|
173
|
-
- GPT,
|
|
200
|
+
- Claude Code 또는 Codex CLI 중 하나
|
|
201
|
+
- GPT, Antigravity (선택)
|
|
174
202
|
|
|
175
203
|
## 라이선스
|
|
176
204
|
|
package/dist/cli/auth.d.ts
CHANGED
|
@@ -23,8 +23,8 @@ export declare function formatClaudeCodeStatus(status: ClaudeCodeStatus): string
|
|
|
23
23
|
export declare function formatAuthMethods(auths: LLMAuthStatus[], cliInstalled?: boolean): string;
|
|
24
24
|
/**
|
|
25
25
|
* 통합 LLM/CLI 상태 포맷터 (status / init / update / upgrade 공용)
|
|
26
|
-
* - LLM CLI (vibe 멀티-오케스트레이션에서 호출 가능): Claude Code, Codex,
|
|
27
|
-
* - LLM API Key (직접 호출용): GPT,
|
|
26
|
+
* - LLM CLI (vibe 멀티-오케스트레이션에서 호출 가능): Claude Code, Codex, Antigravity
|
|
27
|
+
* - LLM API Key (직접 호출용): GPT, Antigravity
|
|
28
28
|
*/
|
|
29
29
|
export declare function formatLLMStatus(): string;
|
|
30
30
|
//# sourceMappingURL=auth.d.ts.map
|
package/dist/cli/auth.js
CHANGED
|
@@ -3,20 +3,20 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { execSync } from 'child_process';
|
|
5
5
|
import { readGlobalConfig } from '../infra/lib/config/GlobalConfigManager.js';
|
|
6
|
-
import { detectClaudeCli, detectCodexCli
|
|
6
|
+
import { detectAntigravityCli, detectClaudeCli, detectCodexCli } from './utils/cli-detector.js';
|
|
7
7
|
/**
|
|
8
8
|
* LLM 인증 상태 확인 (config.json 우선, process.env fallback)
|
|
9
9
|
*/
|
|
10
10
|
export function getLLMAuthStatus() {
|
|
11
|
-
const status = { claude: [], gpt: [],
|
|
11
|
+
const status = { claude: [], gpt: [], antigravity: [] };
|
|
12
12
|
const config = readGlobalConfig();
|
|
13
13
|
// GPT
|
|
14
14
|
if (config.credentials?.gpt?.apiKey || process.env.OPENAI_API_KEY) {
|
|
15
15
|
status.gpt.push({ type: 'apikey', valid: true });
|
|
16
16
|
}
|
|
17
|
-
//
|
|
18
|
-
if (config.credentials?.
|
|
19
|
-
status.
|
|
17
|
+
// Antigravity
|
|
18
|
+
if (config.credentials?.antigravity?.apiKey || process.env.ANTIGRAVITY_API_KEY) {
|
|
19
|
+
status.antigravity.push({ type: 'apikey', valid: true });
|
|
20
20
|
}
|
|
21
21
|
return status;
|
|
22
22
|
}
|
|
@@ -106,28 +106,28 @@ function formatLlmCliRow(installed, authenticated) {
|
|
|
106
106
|
}
|
|
107
107
|
/**
|
|
108
108
|
* 통합 LLM/CLI 상태 포맷터 (status / init / update / upgrade 공용)
|
|
109
|
-
* - LLM CLI (vibe 멀티-오케스트레이션에서 호출 가능): Claude Code, Codex,
|
|
110
|
-
* - LLM API Key (직접 호출용): GPT,
|
|
109
|
+
* - LLM CLI (vibe 멀티-오케스트레이션에서 호출 가능): Claude Code, Codex, Antigravity
|
|
110
|
+
* - LLM API Key (직접 호출용): GPT, Antigravity
|
|
111
111
|
*/
|
|
112
112
|
export function formatLLMStatus() {
|
|
113
113
|
const claudeCli = detectClaudeCli();
|
|
114
114
|
const codexCli = detectCodexCli();
|
|
115
|
-
const
|
|
115
|
+
const antigravityCli = detectAntigravityCli();
|
|
116
116
|
const apiStatus = getLLMAuthStatus();
|
|
117
117
|
const claudeRow = formatLlmCliRow(claudeCli.installed, claudeCli.authenticated);
|
|
118
118
|
const codexRow = formatLlmCliRow(codexCli.installed, codexCli.authenticated);
|
|
119
|
-
const
|
|
119
|
+
const antigravityRow = formatLlmCliRow(antigravityCli.installed, antigravityCli.authenticated);
|
|
120
120
|
const gptKey = apiStatus.gpt.length > 0 ? '✓ Key' : '⬚ —';
|
|
121
|
-
const
|
|
121
|
+
const antigravityKey = apiStatus.antigravity.length > 0 ? '✓ Key' : '⬚ —';
|
|
122
122
|
return [
|
|
123
123
|
'LLM CLI (orchestration):',
|
|
124
124
|
` Claude Code ${claudeRow}`,
|
|
125
125
|
` Codex (GPT) ${codexRow}`,
|
|
126
|
-
`
|
|
126
|
+
` Antigravity ${antigravityRow}`,
|
|
127
127
|
'',
|
|
128
128
|
'LLM API Key (direct):',
|
|
129
129
|
` GPT ${gptKey}`,
|
|
130
|
-
`
|
|
130
|
+
` Antigravity ${antigravityKey}`,
|
|
131
131
|
].join('\n');
|
|
132
132
|
}
|
|
133
133
|
//# 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,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* vibe codex 서브커맨드 핸들러
|
|
3
|
-
* Claude Code + OpenAI/
|
|
3
|
+
* Claude Code + OpenAI/Antigravity 호환 모델을 LLM으로 사용
|
|
4
4
|
*/
|
|
5
5
|
export declare function codexLaunch(model: string | undefined, claudeArgs: string[]): void;
|
|
6
6
|
export declare function codexShell(modelArg: string | undefined): void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* vibe codex 서브커맨드 핸들러
|
|
3
|
-
* Claude Code + OpenAI/
|
|
3
|
+
* Claude Code + OpenAI/Antigravity 호환 모델을 LLM으로 사용
|
|
4
4
|
*/
|
|
5
5
|
import fs from 'fs';
|
|
6
6
|
import os from 'os';
|
|
@@ -76,10 +76,10 @@ function detectAuth() {
|
|
|
76
76
|
if (process.env.OPENAI_API_KEY) {
|
|
77
77
|
return { provider: 'openai', label: 'OpenAI (OPENAI_API_KEY)', key: process.env.OPENAI_API_KEY };
|
|
78
78
|
}
|
|
79
|
-
if (process.env.
|
|
79
|
+
if (process.env.ANTIGRAVITY_API_KEY) {
|
|
80
80
|
return {
|
|
81
|
-
provider: '
|
|
82
|
-
key: process.env.
|
|
81
|
+
provider: 'antigravity', label: 'Antigravity (ANTIGRAVITY_API_KEY)',
|
|
82
|
+
key: process.env.ANTIGRAVITY_API_KEY,
|
|
83
83
|
url: 'https://generativelanguage.googleapis.com/v1beta/openai',
|
|
84
84
|
};
|
|
85
85
|
}
|
|
@@ -92,7 +92,7 @@ async function selectProvider() {
|
|
|
92
92
|
options: [
|
|
93
93
|
{ value: 'chatgpt-pro', label: 'ChatGPT Pro', hint: 'codex login 필요' },
|
|
94
94
|
{ value: 'openai', label: 'OpenAI API Key' },
|
|
95
|
-
{ value: '
|
|
95
|
+
{ value: 'antigravity', label: 'Antigravity API Key' },
|
|
96
96
|
{ value: 'custom', label: '커스텀 (OpenAI 호환)', hint: 'Groq, Together, Ollama 등' },
|
|
97
97
|
],
|
|
98
98
|
});
|
|
@@ -111,8 +111,8 @@ async function configureAuth(provider) {
|
|
|
111
111
|
const key = await textOrCancel('OpenAI API Key', 'sk-...');
|
|
112
112
|
return { key };
|
|
113
113
|
}
|
|
114
|
-
case '
|
|
115
|
-
const key = await textOrCancel('
|
|
114
|
+
case 'antigravity': {
|
|
115
|
+
const key = await textOrCancel('Antigravity API Key');
|
|
116
116
|
return { key, url: 'https://generativelanguage.googleapis.com/v1beta/openai' };
|
|
117
117
|
}
|
|
118
118
|
case 'custom': {
|
|
@@ -197,8 +197,8 @@ function saveConfig(provider, auth, model, alias) {
|
|
|
197
197
|
if (auth.key && provider === 'openai') {
|
|
198
198
|
patch.credentials = { gpt: { apiKey: auth.key, createdAt: new Date().toISOString() } };
|
|
199
199
|
}
|
|
200
|
-
if (auth.key && provider === '
|
|
201
|
-
patch.credentials = {
|
|
200
|
+
if (auth.key && provider === 'antigravity') {
|
|
201
|
+
patch.credentials = { antigravity: { apiKey: auth.key, createdAt: new Date().toISOString() } };
|
|
202
202
|
}
|
|
203
203
|
patchGlobalConfig(patch);
|
|
204
204
|
p.log.success('설정 저장 완료');
|
|
@@ -252,7 +252,7 @@ async function textOrCancel(message, placeholder) {
|
|
|
252
252
|
// ─── 도움말 ──────────────────────────────────────────────────
|
|
253
253
|
export function codexHelp() {
|
|
254
254
|
console.log(`
|
|
255
|
-
Codex Proxy — Claude Code + OpenAI/
|
|
255
|
+
Codex Proxy — Claude Code + OpenAI/Antigravity 호환 모델
|
|
256
256
|
|
|
257
257
|
사용법:
|
|
258
258
|
vibe codex --setup 설정 위자드 (인증, 모델, 셸 등록)
|
|
@@ -265,7 +265,7 @@ Codex Proxy — Claude Code + OpenAI/Gemini 호환 모델
|
|
|
265
265
|
|
|
266
266
|
설정 후:
|
|
267
267
|
cc 실행 (설정된 모델)
|
|
268
|
-
cc /
|
|
268
|
+
cc /antigravity-fast 모델 바꿔서 실행
|
|
269
269
|
`);
|
|
270
270
|
}
|
|
271
271
|
//# sourceMappingURL=codex-proxy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-proxy.js","sourceRoot":"","sources":["../../../src/cli/commands/codex-proxy.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"codex-proxy.js","sourceRoot":"","sources":["../../../src/cli/commands/codex-proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA8LH;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CA4CjC;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAWjC"}
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Sources (priority order):
|
|
5
5
|
* 1. Environment variables (highest)
|
|
6
|
-
* 2. Project config (.
|
|
6
|
+
* 2. Project config (.vibe/config.json)
|
|
7
7
|
* 3. Global config (~/.vibe/config.json)
|
|
8
8
|
*/
|
|
9
9
|
import fs from 'fs';
|
|
10
10
|
import chalk from 'chalk';
|
|
11
|
-
import { readGlobalConfig, getGlobalConfigPath, getProjectConfigPath, } from '../../infra/lib/config/GlobalConfigManager.js';
|
|
11
|
+
import { readGlobalConfig, getGlobalConfigPath, getProjectConfigPath, getProjectConfigPaths, } from '../../infra/lib/config/GlobalConfigManager.js';
|
|
12
12
|
// ============================================================================
|
|
13
13
|
// Constants
|
|
14
14
|
// ============================================================================
|
|
@@ -18,21 +18,19 @@ const SENSITIVE_PATTERNS = [
|
|
|
18
18
|
];
|
|
19
19
|
const ENV_KEY_MAP = {
|
|
20
20
|
'credentials.gpt.apiKey': 'OPENAI_API_KEY',
|
|
21
|
-
'credentials.
|
|
21
|
+
'credentials.antigravity.apiKey': 'ANTIGRAVITY_API_KEY',
|
|
22
22
|
'credentials.figma.accessToken': 'FIGMA_ACCESS_TOKEN',
|
|
23
23
|
'channels.telegram.botToken': 'TELEGRAM_BOT_TOKEN',
|
|
24
24
|
'channels.slack.botToken': 'SLACK_BOT_TOKEN',
|
|
25
25
|
'channels.slack.appToken': 'SLACK_APP_TOKEN',
|
|
26
26
|
'models.gpt': 'GPT_MODEL',
|
|
27
|
-
'models.
|
|
28
|
-
'models.geminiFlash': 'GEMINI_FLASH_MODEL',
|
|
29
|
-
'models.geminiSearch': 'GEMINI_SEARCH_MODEL',
|
|
27
|
+
'models.antigravity': 'ANTIGRAVITY_MODEL',
|
|
30
28
|
'models.claudeBackground': 'CLAUDE_BACKGROUND_MODEL',
|
|
31
29
|
'models.claudeResearch': 'CLAUDE_RESEARCH_MODEL',
|
|
32
30
|
'models.claudeReview': 'CLAUDE_REVIEW_MODEL',
|
|
33
31
|
'models.claudeArchitecture': 'CLAUDE_ARCHITECTURE_MODEL',
|
|
34
32
|
'models.embedding': 'EMBEDDING_MODEL',
|
|
35
|
-
'models.
|
|
33
|
+
'models.antigravityEmbedding': 'ANTIGRAVITY_EMBEDDING_MODEL',
|
|
36
34
|
'settings.workspaceDir': 'WORKSPACE_DIR',
|
|
37
35
|
};
|
|
38
36
|
// ============================================================================
|
|
@@ -70,19 +68,21 @@ function flattenObject(obj, prefix) {
|
|
|
70
68
|
// Source resolution
|
|
71
69
|
// ============================================================================
|
|
72
70
|
function readProjectConfigSafe(projectDir) {
|
|
73
|
-
const configPath
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
71
|
+
for (const configPath of getProjectConfigPaths(projectDir)) {
|
|
72
|
+
try {
|
|
73
|
+
if (!fs.existsSync(configPath))
|
|
74
|
+
continue;
|
|
75
|
+
const content = fs.readFileSync(configPath, 'utf-8');
|
|
76
|
+
const parsed = JSON.parse(content);
|
|
77
|
+
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed))
|
|
78
|
+
continue;
|
|
79
|
+
return parsed;
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
80
82
|
return {};
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
catch {
|
|
84
|
-
return {};
|
|
83
|
+
}
|
|
85
84
|
}
|
|
85
|
+
return {};
|
|
86
86
|
}
|
|
87
87
|
function resolveEnvOverride(configKey) {
|
|
88
88
|
const envKey = ENV_KEY_MAP[configKey];
|
|
@@ -142,7 +142,7 @@ function formatEntry(entry) {
|
|
|
142
142
|
function printSourceLegend() {
|
|
143
143
|
console.log(chalk.dim('Sources:'));
|
|
144
144
|
console.log(chalk.dim(` ${chalk.blue('[global]')} ~/.vibe/config.json`));
|
|
145
|
-
console.log(chalk.dim(` ${chalk.green('[project]')} .
|
|
145
|
+
console.log(chalk.dim(` ${chalk.green('[project]')} .vibe/config.json`));
|
|
146
146
|
console.log(chalk.dim(` ${chalk.yellow('[env]')} Environment variable`));
|
|
147
147
|
console.log('');
|
|
148
148
|
}
|
|
@@ -156,8 +156,9 @@ export function configShow() {
|
|
|
156
156
|
const projectDir = process.cwd();
|
|
157
157
|
const globalPath = getGlobalConfigPath();
|
|
158
158
|
const projectPath = getProjectConfigPath(projectDir);
|
|
159
|
+
const projectPaths = getProjectConfigPaths(projectDir);
|
|
159
160
|
const globalExists = fs.existsSync(globalPath);
|
|
160
|
-
const projectExists = fs.existsSync(
|
|
161
|
+
const projectExists = projectPaths.some(p => fs.existsSync(p));
|
|
161
162
|
console.log('');
|
|
162
163
|
console.log(chalk.bold('Vibe Configuration (merged)'));
|
|
163
164
|
console.log('');
|
|
@@ -200,7 +201,7 @@ Config Commands:
|
|
|
200
201
|
|
|
201
202
|
Sources (priority high → low):
|
|
202
203
|
1. Environment variables
|
|
203
|
-
2. Project config (.
|
|
204
|
+
2. Project config (.vibe/config.json)
|
|
204
205
|
3. Global config (~/.vibe/config.json)
|
|
205
206
|
`);
|
|
206
207
|
}
|