@su-record/vibe 2.6.50 → 2.6.52
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 +14 -24
- package/agents/review/git-history-reviewer.md +1 -1
- package/commands/vibe.analyze.md +5 -5
- package/commands/vibe.reason.md +4 -4
- package/commands/vibe.review.md +7 -8
- package/commands/vibe.run.md +11 -14
- package/commands/vibe.spec.md +7 -12
- package/commands/vibe.spec.review.md +2 -5
- package/commands/vibe.trace.md +2 -2
- package/commands/vibe.utils.md +2 -5
- package/commands/vibe.verify.md +4 -4
- package/commands/vibe.voice.md +2 -5
- package/dist/cli/auth.d.ts +5 -1
- package/dist/cli/auth.d.ts.map +1 -1
- package/dist/cli/auth.js +26 -24
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli/commands/info.d.ts.map +1 -1
- package/dist/cli/commands/info.js +9 -11
- package/dist/cli/commands/info.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +71 -34
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/llm/config.d.ts +1 -4
- package/dist/cli/llm/config.d.ts.map +1 -1
- package/dist/cli/llm/config.js +3 -9
- 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 +5 -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 -0
- package/dist/cli/llm/gpt-commands.js.map +1 -1
- package/dist/cli/postinstall/constants.js +1 -1
- package/dist/cli/postinstall/constants.js.map +1 -1
- package/dist/cli/postinstall/fs-utils.d.ts +3 -2
- package/dist/cli/postinstall/fs-utils.d.ts.map +1 -1
- package/dist/cli/postinstall/fs-utils.js +3 -8
- package/dist/cli/postinstall/fs-utils.js.map +1 -1
- package/dist/cli/postinstall/inline-skills.js +1 -1
- package/dist/cli/postinstall/main.js +3 -3
- package/dist/cli/postinstall/main.js.map +1 -1
- package/dist/cli/setup/GlobalInstaller.d.ts +3 -4
- package/dist/cli/setup/GlobalInstaller.d.ts.map +1 -1
- package/dist/cli/setup/GlobalInstaller.js +7 -13
- package/dist/cli/setup/GlobalInstaller.js.map +1 -1
- package/dist/cli/setup/ProjectSetup.js +3 -3
- package/dist/cli/setup/ProjectSetup.js.map +1 -1
- package/dist/cli/setup/index.d.ts.map +1 -1
- package/dist/cli/setup/index.js +0 -1
- package/dist/cli/setup/index.js.map +1 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +0 -1
- package/dist/cli/setup.js.map +1 -1
- package/dist/infra/lib/MemoryManager.d.ts.map +1 -1
- package/dist/infra/lib/MemoryManager.js +0 -2
- package/dist/infra/lib/MemoryManager.js.map +1 -1
- package/dist/infra/lib/claude/storage.d.ts.map +1 -1
- package/dist/infra/lib/claude/storage.js +3 -8
- package/dist/infra/lib/claude/storage.js.map +1 -1
- package/dist/infra/lib/gemini/auth.d.ts +0 -4
- package/dist/infra/lib/gemini/auth.d.ts.map +1 -1
- package/dist/infra/lib/gemini/auth.js +1 -8
- package/dist/infra/lib/gemini/auth.js.map +1 -1
- package/dist/infra/lib/gemini/index.d.ts +2 -1
- package/dist/infra/lib/gemini/index.d.ts.map +1 -1
- package/dist/infra/lib/gemini/index.js +2 -1
- package/dist/infra/lib/gemini/index.js.map +1 -1
- package/dist/infra/lib/gpt/auth.d.ts +0 -1
- package/dist/infra/lib/gpt/auth.d.ts.map +1 -1
- package/dist/infra/lib/gpt/auth.js +1 -7
- package/dist/infra/lib/gpt/auth.js.map +1 -1
- package/dist/infra/lib/gpt/chat.js +1 -1
- package/dist/infra/lib/llm/auth/ConfigManager.d.ts.map +1 -1
- package/dist/infra/lib/llm/auth/ConfigManager.js +2 -3
- package/dist/infra/lib/llm/auth/ConfigManager.js.map +1 -1
- package/dist/infra/types/tool.js +1 -1
- package/dist/infra/types/tool.js.map +1 -1
- package/dist/tools/evolution/dashboardTools.js +1 -1
- package/dist/tools/evolution/dashboardTools.js.map +1 -1
- package/dist/tools/evolution/index.js +2 -2
- package/dist/tools/evolution/index.js.map +1 -1
- package/dist/tools/evolution/insightTools.js +1 -1
- package/dist/tools/evolution/insightTools.js.map +1 -1
- package/dist/tools/index.js +1 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/interaction/askUser.d.ts +0 -2
- package/dist/tools/interaction/askUser.d.ts.map +1 -1
- package/dist/tools/interaction/askUser.js +0 -2
- package/dist/tools/interaction/askUser.js.map +1 -1
- package/dist/tools/interaction/index.d.ts +0 -2
- package/dist/tools/interaction/index.d.ts.map +1 -1
- package/dist/tools/interaction/index.js +0 -2
- package/dist/tools/interaction/index.js.map +1 -1
- package/dist/tools/memory/autoSaveContext.js +1 -1
- package/dist/tools/memory/autoSaveContext.js.map +1 -1
- package/dist/tools/memory/createMemoryTimeline.js +1 -1
- package/dist/tools/memory/createMemoryTimeline.js.map +1 -1
- package/dist/tools/memory/getMemoryGraph.js +1 -1
- package/dist/tools/memory/getMemoryGraph.js.map +1 -1
- package/dist/tools/memory/getSessionContext.js +1 -1
- package/dist/tools/memory/getSessionContext.js.map +1 -1
- package/dist/tools/memory/index.js +1 -1
- package/dist/tools/memory/index.js.map +1 -1
- package/dist/tools/memory/linkMemories.js +1 -1
- package/dist/tools/memory/linkMemories.js.map +1 -1
- package/dist/tools/memory/saveMemory.js +1 -1
- package/dist/tools/memory/saveMemory.js.map +1 -1
- package/dist/tools/memory/searchMemoriesAdvanced.js +1 -1
- package/dist/tools/memory/searchMemoriesAdvanced.js.map +1 -1
- package/dist/tools/memory/startSession.d.ts.map +1 -1
- package/dist/tools/memory/startSession.js +1 -2
- package/dist/tools/memory/startSession.js.map +1 -1
- package/dist/tools/semantic/analyzeDependencyGraph.js +1 -1
- package/dist/tools/semantic/analyzeDependencyGraph.js.map +1 -1
- package/dist/tools/semantic/findReferences.d.ts.map +1 -1
- package/dist/tools/semantic/findReferences.js +1 -2
- package/dist/tools/semantic/findReferences.js.map +1 -1
- package/dist/tools/semantic/findSymbol.d.ts.map +1 -1
- package/dist/tools/semantic/findSymbol.js +1 -2
- package/dist/tools/semantic/findSymbol.js.map +1 -1
- package/hooks/hooks.json +14 -14
- package/hooks/scripts/keyword-detector.js +1 -1
- package/hooks/scripts/post-tool-verify.js +1 -1
- package/hooks/scripts/pre-tool-guard.js +1 -1
- package/hooks/scripts/skill-injector.js +1 -1
- package/hooks/scripts/stop-notify.js +1 -1
- package/hooks/scripts/utils.js +6 -6
- package/languages/python-fastapi.md +1 -1
- package/package.json +1 -1
- package/skills/brand-assets/SKILL.md +1 -1
- package/skills/core-capabilities/SKILL.md +3 -3
- package/skills/parallel-research/SKILL.md +1 -1
package/.env
CHANGED
|
@@ -17,35 +17,25 @@ SLACK_ALLOWED_CHANNELS=
|
|
|
17
17
|
GEMINI_API_KEY=AIzaSyA6Xo4uTG-tqAs07CocKhEzs7LLixL1P9o
|
|
18
18
|
|
|
19
19
|
# ─── OpenAI ──────────────────────────────────────────────────────────
|
|
20
|
-
OPENAI_API_KEY=sk-proj-
|
|
21
|
-
|
|
22
|
-
# ─── GPT OAuth
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
#
|
|
26
|
-
# redirect: http://localhost:1455/auth/callback
|
|
27
|
-
# scope: openid profile email offline_access
|
|
28
|
-
GPT_OAUTH_REFRESH_TOKEN=rt_RW_twFiROvrUP612RH9nL68pZyOZH_Vyz3x4qLEesRE.gX6Hswde_zcubOF1jJpvROSmSr-pmXkL5ef-wg9pihE
|
|
29
|
-
|
|
30
|
-
# ─── Gemini OAuth (via Gemini CLI — @google/gemini-cli) ──────────────
|
|
31
|
-
# credentials: ~/.gemini/oauth_creds.json (auto-detected)
|
|
32
|
-
# client_id: 681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com
|
|
33
|
-
# auth order: gemini-cli → apikey
|
|
20
|
+
OPENAI_API_KEY=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
|
|
21
|
+
|
|
22
|
+
# ─── GPT OAuth ──────────────────────────────────────────────────────
|
|
23
|
+
GPT_OAUTH_REFRESH_TOKEN=rt_T4NTlgJtgqUpw5qpx2xvGwJ7_niAYQBEChutVs2-Vb0.zfksqi5wjRv-8Ww6QtUOCJGabA0aviDS2ggyRVAnKmI
|
|
24
|
+
|
|
25
|
+
# ─── Gemini OAuth ────────────────────────────────────────────────────
|
|
34
26
|
GEMINI_OAUTH_REFRESH_TOKEN=1//0eTG9YDGVchVOCgYIARAAGA4SNwF-L9IryFIeIUvne7lpgRK8QFUgRXuvL55MBHMzDnxsXDbltWwy4H38TMY6zVKcQM-3qgILcb4
|
|
35
27
|
|
|
36
28
|
# ─── Model Overrides (optional - uses hardcoded defaults if not set) ─
|
|
37
|
-
# Claude
|
|
38
|
-
CLAUDE_ARCHITECTURE_MODEL=claude-opus-4-6
|
|
39
|
-
CLAUDE_RESEARCH_MODEL=claude-haiku-4-5
|
|
40
|
-
CLAUDE_REVIEW_MODEL=claude-haiku-4-5
|
|
41
|
-
CLAUDE_BACKGROUND_MODEL=claude-sonnet-4-5
|
|
29
|
+
# Claude
|
|
30
|
+
CLAUDE_ARCHITECTURE_MODEL=claude-opus-4-6
|
|
31
|
+
CLAUDE_RESEARCH_MODEL=claude-haiku-4-5
|
|
32
|
+
CLAUDE_REVIEW_MODEL=claude-haiku-4-5
|
|
33
|
+
CLAUDE_BACKGROUND_MODEL=claude-sonnet-4-5
|
|
42
34
|
|
|
43
|
-
# GPT
|
|
35
|
+
# GPT
|
|
44
36
|
GPT_MODEL=gpt-5.2
|
|
45
|
-
# Plus Plan Use: gpt-5.3-codex
|
|
46
|
-
# Pro Plan Use: gpt-5.3-codex-spark
|
|
47
37
|
|
|
48
|
-
# Gemini
|
|
38
|
+
# Gemini
|
|
49
39
|
GEMINI_MODEL=gemini-3-pro-preview
|
|
50
40
|
GEMINI_FLASH_MODEL=gemini-3-flash-preview
|
|
51
41
|
GEMINI_SEARCH_MODEL=gemini-3-flash-preview
|
|
@@ -53,7 +43,7 @@ GEMINI_SEARCH_MODEL=gemini-3-flash-preview
|
|
|
53
43
|
GEMINI_OAUTH_MODEL=gemini-3-pro-high
|
|
54
44
|
GEMINI_OAUTH_FLASH_MODEL=gemini-3-flash
|
|
55
45
|
|
|
56
|
-
# Embedding
|
|
46
|
+
# Embedding
|
|
57
47
|
EMBEDDING_MODEL=text-embedding-3-large
|
|
58
48
|
GEMINI_EMBEDDING_MODEL=text-embedding-004
|
|
59
49
|
|
package/commands/vibe.analyze.md
CHANGED
|
@@ -233,7 +233,7 @@ Which approach would you like to use?
|
|
|
233
233
|
All tools are called via:
|
|
234
234
|
|
|
235
235
|
```bash
|
|
236
|
-
node -e "import('{{
|
|
236
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.TOOL_NAME({...args}).then(r => console.log(r.content[0].text)))"
|
|
237
237
|
```
|
|
238
238
|
|
|
239
239
|
### Recommended Tools for Analysis
|
|
@@ -251,25 +251,25 @@ node -e "import('{{CORE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index
|
|
|
251
251
|
**1. Find function definition:**
|
|
252
252
|
|
|
253
253
|
```bash
|
|
254
|
-
node -e "import('{{
|
|
254
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.findSymbol({symbolName: 'login', searchPath: 'src/'}).then(r => console.log(r.content[0].text)))"
|
|
255
255
|
```
|
|
256
256
|
|
|
257
257
|
**2. Analyze complexity:**
|
|
258
258
|
|
|
259
259
|
```bash
|
|
260
|
-
node -e "import('{{
|
|
260
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.analyzeComplexity({targetPath: 'src/services/', projectPath: process.cwd()}).then(r => console.log(r.content[0].text)))"
|
|
261
261
|
```
|
|
262
262
|
|
|
263
263
|
**3. Validate code quality:**
|
|
264
264
|
|
|
265
265
|
```bash
|
|
266
|
-
node -e "import('{{
|
|
266
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.validateCodeQuality({targetPath: 'src/', projectPath: process.cwd()}).then(r => console.log(r.content[0].text)))"
|
|
267
267
|
```
|
|
268
268
|
|
|
269
269
|
**4. Save analysis results:**
|
|
270
270
|
|
|
271
271
|
```bash
|
|
272
|
-
node -e "import('{{
|
|
272
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.saveMemory({key: 'analysis-login-module', value: 'Found 5 related files, complexity avg 6.2', category: 'analysis', projectPath: process.cwd()}).then(r => console.log(r.content[0].text)))"
|
|
273
273
|
```
|
|
274
274
|
|
|
275
275
|
---
|
package/commands/vibe.reason.md
CHANGED
|
@@ -189,7 +189,7 @@ AI: Analyzing with 9-step reasoning framework...
|
|
|
189
189
|
All tools are called via:
|
|
190
190
|
|
|
191
191
|
```bash
|
|
192
|
-
node -e "import('{{
|
|
192
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.TOOL_NAME({...args}).then(r => console.log(r.content[0].text)))"
|
|
193
193
|
```
|
|
194
194
|
|
|
195
195
|
### Recommended Tools for Reasoning
|
|
@@ -207,19 +207,19 @@ node -e "import('{{CORE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index
|
|
|
207
207
|
**1. Find potential problem source:**
|
|
208
208
|
|
|
209
209
|
```bash
|
|
210
|
-
node -e "import('{{
|
|
210
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.findSymbol({symbolName: 'getProfile', searchPath: 'src/'}).then(r => console.log(r.content[0].text)))"
|
|
211
211
|
```
|
|
212
212
|
|
|
213
213
|
**2. Trace references to understand flow:**
|
|
214
214
|
|
|
215
215
|
```bash
|
|
216
|
-
node -e "import('{{
|
|
216
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.findReferences({symbolName: 'sessionData', searchPath: 'src/'}).then(r => console.log(r.content[0].text)))"
|
|
217
217
|
```
|
|
218
218
|
|
|
219
219
|
**3. Save hypothesis verification result:**
|
|
220
220
|
|
|
221
221
|
```bash
|
|
222
|
-
node -e "import('{{
|
|
222
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.saveMemory({key: 'hypothesis-1-result', value: 'Session save timing issue confirmed - race condition in auth middleware', category: 'reasoning', projectPath: process.cwd()}).then(r => console.log(r.content[0].text)))"
|
|
223
223
|
```
|
|
224
224
|
|
|
225
225
|
---
|
package/commands/vibe.review.md
CHANGED
|
@@ -106,8 +106,7 @@ security-review:
|
|
|
106
106
|
2. Write JSON input file `[SCRATCHPAD]/review-input.json` (using Write tool):
|
|
107
107
|
- `{"prompt": "Review this code for [REVIEW_TYPE]. Return JSON: {issues: [{id, title, description, severity, suggestion}]}. Code: [CODE_CONTENT]"}`
|
|
108
108
|
- Where `[CODE_CONTENT]` is the code text (properly JSON-escaped inside the prompt string)
|
|
109
|
-
3.
|
|
110
|
-
- Save output as `[LLM_SCRIPT]`
|
|
109
|
+
3. Script path: `[LLM_SCRIPT]` = `{{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js`
|
|
111
110
|
4. Run GPT + Gemini in PARALLEL (two Bash tool calls at once):
|
|
112
111
|
|
|
113
112
|
```bash
|
|
@@ -147,13 +146,13 @@ Read CLAUDE.md -> Explicit tech stack declaration
|
|
|
147
146
|
|
|
148
147
|
**Execution via Orchestrator (12+ agents in parallel):**
|
|
149
148
|
```bash
|
|
150
|
-
node -e "import('{{
|
|
149
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/infra/orchestrator/index.js').then(o => o.review(['FILE_PATHS'], ['DETECTED_STACKS']).then(r => console.log(r.content[0].text)))"
|
|
151
150
|
```
|
|
152
151
|
|
|
153
152
|
**Example:**
|
|
154
153
|
```bash
|
|
155
154
|
# Review changed files with TypeScript + React stack
|
|
156
|
-
node -e "import('{{
|
|
155
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/infra/orchestrator/index.js').then(o => o.review(['src/api/users.ts', 'src/components/Login.tsx'], ['TypeScript', 'React']).then(r => console.log(r.content[0].text)))"
|
|
157
156
|
```
|
|
158
157
|
|
|
159
158
|
**Core Reviewers (Always Run):**
|
|
@@ -436,7 +435,7 @@ Which approach would you like to proceed with?
|
|
|
436
435
|
All tools are called via:
|
|
437
436
|
|
|
438
437
|
```bash
|
|
439
|
-
node -e "import('{{
|
|
438
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.TOOL_NAME({...args}).then(r => console.log(r.content[0].text)))"
|
|
440
439
|
```
|
|
441
440
|
|
|
442
441
|
### Recommended Tools for Review
|
|
@@ -454,19 +453,19 @@ node -e "import('{{CORE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index
|
|
|
454
453
|
**1. Validate code quality before review:**
|
|
455
454
|
|
|
456
455
|
```bash
|
|
457
|
-
node -e "import('{{
|
|
456
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.validateCodeQuality({targetPath: 'src/', projectPath: process.cwd()}).then(r => console.log(r.content[0].text)))"
|
|
458
457
|
```
|
|
459
458
|
|
|
460
459
|
**2. Analyze complexity of changed files:**
|
|
461
460
|
|
|
462
461
|
```bash
|
|
463
|
-
node -e "import('{{
|
|
462
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.analyzeComplexity({targetPath: 'src/api/users.ts', projectPath: process.cwd()}).then(r => console.log(r.content[0].text)))"
|
|
464
463
|
```
|
|
465
464
|
|
|
466
465
|
**3. Save critical finding for reference:**
|
|
467
466
|
|
|
468
467
|
```bash
|
|
469
|
-
node -e "import('{{
|
|
468
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.saveMemory({key: 'review-pr123-critical', value: 'SQL injection in users.py:42', category: 'review', projectPath: process.cwd()}).then(r => console.log(r.content[0].text)))"
|
|
470
469
|
```
|
|
471
470
|
|
|
472
471
|
---
|
package/commands/vibe.run.md
CHANGED
|
@@ -215,7 +215,7 @@ Like Sisyphus rolling the boulder, ULTRAWORK **keeps going until done**:
|
|
|
215
215
|
|
|
216
216
|
```bash
|
|
217
217
|
# Generate RTM for coverage verification
|
|
218
|
-
node -e "import('{{
|
|
218
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.generateTraceabilityMatrix('{feature-name}', {projectPath: process.cwd()}).then(r => console.log(JSON.stringify(r, null, 2))))"
|
|
219
219
|
```
|
|
220
220
|
|
|
221
221
|
**RTM provides automated metrics:**
|
|
@@ -573,9 +573,7 @@ When external LLMs are enabled in `.claude/vibe/config.json`:
|
|
|
573
573
|
# - If systemPrompt omitted, uses default
|
|
574
574
|
# - If systemPrompt is "-", uses default and treats next argument as prompt
|
|
575
575
|
|
|
576
|
-
#
|
|
577
|
-
node -e "console.log(require('path').join(process.env.APPDATA || require('os').homedir() + '/.config', 'vibe/hooks/scripts/llm-orchestrate.js'))"
|
|
578
|
-
# Save output as [LLM_SCRIPT]
|
|
576
|
+
# [LLM_SCRIPT] = {{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js
|
|
579
577
|
|
|
580
578
|
# GPT call (short prompt - CLI arg)
|
|
581
579
|
node "[LLM_SCRIPT]" gpt orchestrate-json "[question content]"
|
|
@@ -609,7 +607,7 @@ Use core tools for accurate codebase understanding and session continuity.
|
|
|
609
607
|
|
|
610
608
|
All tools are called via:
|
|
611
609
|
```bash
|
|
612
|
-
node -e "import('{{
|
|
610
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.TOOL_NAME({...args}).then(r => console.log(r.content[0].text)))"
|
|
613
611
|
```
|
|
614
612
|
|
|
615
613
|
### Semantic Analysis Tools
|
|
@@ -623,7 +621,7 @@ node -e "import('{{CORE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index
|
|
|
623
621
|
|
|
624
622
|
**Example - Find symbol:**
|
|
625
623
|
```bash
|
|
626
|
-
node -e "import('{{
|
|
624
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.findSymbol({symbolName: 'login', searchPath: '.'}).then(r => console.log(r.content[0].text)))"
|
|
627
625
|
```
|
|
628
626
|
|
|
629
627
|
### Memory Tools
|
|
@@ -636,7 +634,7 @@ node -e "import('{{CORE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index
|
|
|
636
634
|
|
|
637
635
|
**Example - Save important decision:**
|
|
638
636
|
```bash
|
|
639
|
-
node -e "import('{{
|
|
637
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.saveMemory({key: 'auth-pattern', value: 'Using JWT with refresh tokens', category: 'project'}).then(r => console.log(r.content[0].text)))"
|
|
640
638
|
```
|
|
641
639
|
|
|
642
640
|
### Session Management (Auto via Hooks)
|
|
@@ -853,10 +851,10 @@ Then: Login success + JWT token returned
|
|
|
853
851
|
**Launch background agents for next phase via Orchestrator:**
|
|
854
852
|
```bash
|
|
855
853
|
# Start background agent (doesn't block)
|
|
856
|
-
node -e "import('{{
|
|
854
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/infra/orchestrator/index.js').then(o => o.runAgent('Phase 2 prep: Analyze auth API endpoints', 'phase2-prep').then(r => console.log(r.content[0].text)))"
|
|
857
855
|
|
|
858
856
|
# Multiple backgrounds in parallel
|
|
859
|
-
node -e "import('{{
|
|
857
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/infra/orchestrator/index.js').then(async o => {
|
|
860
858
|
await Promise.all([
|
|
861
859
|
o.runAgent('Phase 2 prep: Analyze auth API endpoints', 'phase2-prep'),
|
|
862
860
|
o.runAgent('Pre-generate test cases for login form', 'test-prep'),
|
|
@@ -868,12 +866,12 @@ node -e "import('{{CORE_PATH_URL}}/node_modules/@su-record/vibe/dist/infra/orche
|
|
|
868
866
|
|
|
869
867
|
**Check background agent status:**
|
|
870
868
|
```bash
|
|
871
|
-
node -e "import('{{
|
|
869
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/infra/orchestrator/index.js').then(o => console.log(o.status().content[0].text))"
|
|
872
870
|
```
|
|
873
871
|
|
|
874
872
|
**Get result when ready:**
|
|
875
873
|
```bash
|
|
876
|
-
node -e "import('{{
|
|
874
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/infra/orchestrator/index.js').then(o => o.getResult('SESSION_ID').then(r => console.log(r.content[0].text)))"
|
|
877
875
|
```
|
|
878
876
|
|
|
879
877
|
**Why Background Agents Matter:**
|
|
@@ -1481,7 +1479,7 @@ Brand:
|
|
|
1481
1479
|
|
|
1482
1480
|
**Manual Generation:**
|
|
1483
1481
|
```bash
|
|
1484
|
-
# [LLM_SCRIPT] =
|
|
1482
|
+
# [LLM_SCRIPT] = {{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js
|
|
1485
1483
|
node "[LLM_SCRIPT]" gemini image "App icon for MyApp, primary color #2F6BFF, square format 1:1, simple recognizable design, works well at small sizes, no text or letters, solid or gradient background, modern minimalist" --output "./public/app-icon.png"
|
|
1486
1484
|
```
|
|
1487
1485
|
|
|
@@ -1535,8 +1533,7 @@ After all scenarios are implemented, **GPT and Gemini review in parallel with cr
|
|
|
1535
1533
|
2. Write JSON input file `[SCRATCHPAD]/review-input.json` (using Write tool):
|
|
1536
1534
|
- `{"prompt": "Review this code for security, performance, and best practices. Return JSON: {issues: [{id, title, description, severity, suggestion}]}. Code: [CODE_CONTENT]"}`
|
|
1537
1535
|
- Where `[CODE_CONTENT]` is the code text (properly JSON-escaped inside the prompt string)
|
|
1538
|
-
3.
|
|
1539
|
-
- Save output as `[LLM_SCRIPT]`
|
|
1536
|
+
3. Script path: `[LLM_SCRIPT]` = `{{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js`
|
|
1540
1537
|
4. Run GPT + Gemini in PARALLEL (two Bash tool calls at once):
|
|
1541
1538
|
|
|
1542
1539
|
```bash
|
package/commands/vibe.spec.md
CHANGED
|
@@ -102,7 +102,7 @@ When image files (`.png`, `.jpg`, `.jpeg`, `.webp`) are provided as input, analy
|
|
|
102
102
|
**Gemini enabled - analyze via llm-orchestrate.js:**
|
|
103
103
|
|
|
104
104
|
```bash
|
|
105
|
-
# [LLM_SCRIPT] =
|
|
105
|
+
# [LLM_SCRIPT] = {{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js
|
|
106
106
|
node "[LLM_SCRIPT]" gemini analyze-image "./designs/login-wireframe.png" "Analyze this UI design image. Identify all UI elements, layout structure, colors, typography, and component hierarchy. Output a structured breakdown."
|
|
107
107
|
```
|
|
108
108
|
|
|
@@ -405,13 +405,8 @@ Read ~/.claude/vibe/languages/typescript-react.md
|
|
|
405
405
|
|
|
406
406
|
**→ IMMEDIATELY run these 6 Bash commands IN PARALLEL (all at once):**
|
|
407
407
|
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
**Step 0: Resolve script path (once per session, using Bash tool):**
|
|
411
|
-
```bash
|
|
412
|
-
node -e "console.log(require('path').join(process.env.APPDATA || require('os').homedir() + '/.config', 'vibe/hooks/scripts/llm-orchestrate.js'))"
|
|
413
|
-
```
|
|
414
|
-
Save the output as `[LLM_SCRIPT]` for use in all subsequent calls.
|
|
408
|
+
**Step 0: Script path:**
|
|
409
|
+
- `[LLM_SCRIPT]` = `{{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js`
|
|
415
410
|
|
|
416
411
|
**Run all 4 in PARALLEL (each as separate Bash tool call):**
|
|
417
412
|
```bash
|
|
@@ -1154,7 +1149,7 @@ Claude: Thank you. SPEC has been refined.
|
|
|
1154
1149
|
### Tool Invocation
|
|
1155
1150
|
All tools are called via:
|
|
1156
1151
|
```bash
|
|
1157
|
-
node -e "import('{{
|
|
1152
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.TOOL_NAME({...args}).then(r => console.log(r.content[0].text)))"
|
|
1158
1153
|
```
|
|
1159
1154
|
|
|
1160
1155
|
### Recommended Tools for SPEC Creation
|
|
@@ -1171,17 +1166,17 @@ node -e "import('{{CORE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index
|
|
|
1171
1166
|
|
|
1172
1167
|
**1. Find existing auth implementation:**
|
|
1173
1168
|
```bash
|
|
1174
|
-
node -e "import('{{
|
|
1169
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.findSymbol({symbolName: 'login', searchPath: 'src/'}).then(r => console.log(r.content[0].text)))"
|
|
1175
1170
|
```
|
|
1176
1171
|
|
|
1177
1172
|
**2. Save confirmed requirements:**
|
|
1178
1173
|
```bash
|
|
1179
|
-
node -e "import('{{
|
|
1174
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.saveMemory({key: 'brick-game-requirements', value: 'Platform: Web, Stack: Phaser.js, Style: Neon', category: 'spec', projectPath: process.cwd()}).then(r => console.log(r.content[0].text)))"
|
|
1180
1175
|
```
|
|
1181
1176
|
|
|
1182
1177
|
**3. Recall previous decisions:**
|
|
1183
1178
|
```bash
|
|
1184
|
-
node -e "import('{{
|
|
1179
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.recallMemory({key: 'brick-game-requirements', projectPath: process.cwd()}).then(r => console.log(r.content[0].text)))"
|
|
1185
1180
|
```
|
|
1186
1181
|
|
|
1187
1182
|
## Next Step
|
|
@@ -200,11 +200,8 @@ Score: 96/100 ✅ PASSED
|
|
|
200
200
|
```
|
|
201
201
|
- Where `[SPEC_CONTENT]` is the full SPEC text (properly JSON-escaped inside the prompt string)
|
|
202
202
|
|
|
203
|
-
**Step B:
|
|
204
|
-
|
|
205
|
-
node -e "console.log(require('path').join(process.env.APPDATA || require('os').homedir() + '/.config', 'vibe/hooks/scripts/llm-orchestrate.js'))"
|
|
206
|
-
```
|
|
207
|
-
- Save the output as `[LLM_SCRIPT]` for use in all subsequent calls.
|
|
203
|
+
**Step B: Script path:**
|
|
204
|
+
- `[LLM_SCRIPT]` = `{{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js`
|
|
208
205
|
|
|
209
206
|
**Step C: Run GPT + Gemini in PARALLEL (two separate Bash tool calls at once):**
|
|
210
207
|
|
package/commands/vibe.trace.md
CHANGED
|
@@ -181,10 +181,10 @@ The RTM generation uses core tools:
|
|
|
181
181
|
|
|
182
182
|
```bash
|
|
183
183
|
# Generate RTM
|
|
184
|
-
node -e "import('{{
|
|
184
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.generateTraceabilityMatrix('login').then(m => console.log(t.formatMatrixAsMarkdown(m))))"
|
|
185
185
|
|
|
186
186
|
# Generate HTML
|
|
187
|
-
node -e "import('{{
|
|
187
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.generateTraceabilityMatrix('login').then(m => console.log(t.formatMatrixAsHtml(m))))"
|
|
188
188
|
```
|
|
189
189
|
|
|
190
190
|
## Options
|
package/commands/vibe.utils.md
CHANGED
|
@@ -93,11 +93,8 @@ Generate images using Gemini Image API.
|
|
|
93
93
|
|
|
94
94
|
**CRITICAL: You MUST use the following command to generate images. Do NOT search for scripts, do NOT use gcloud, do NOT use any other method.**
|
|
95
95
|
|
|
96
|
-
**Step 0:
|
|
97
|
-
|
|
98
|
-
node -e "console.log(require('path').join(process.env.APPDATA || require('os').homedir() + '/.config', 'vibe/hooks/scripts/llm-orchestrate.js'))"
|
|
99
|
-
```
|
|
100
|
-
Save the output as `[LLM_SCRIPT]` for use in all subsequent calls.
|
|
96
|
+
**Step 0: Script path:**
|
|
97
|
+
- `[LLM_SCRIPT]` = `{{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js`
|
|
101
98
|
|
|
102
99
|
**General image generation (Nano Banana):**
|
|
103
100
|
```bash
|
package/commands/vibe.verify.md
CHANGED
|
@@ -270,7 +270,7 @@ Claude:
|
|
|
270
270
|
All tools are called via:
|
|
271
271
|
|
|
272
272
|
```bash
|
|
273
|
-
node -e "import('{{
|
|
273
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.TOOL_NAME({...args}).then(r => console.log(r.content[0].text)))"
|
|
274
274
|
```
|
|
275
275
|
|
|
276
276
|
### Recommended Tools for Verification
|
|
@@ -287,19 +287,19 @@ node -e "import('{{CORE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index
|
|
|
287
287
|
**1. Validate code quality:**
|
|
288
288
|
|
|
289
289
|
```bash
|
|
290
|
-
node -e "import('{{
|
|
290
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.validateCodeQuality({targetPath: 'src/auth/', projectPath: process.cwd()}).then(r => console.log(r.content[0].text)))"
|
|
291
291
|
```
|
|
292
292
|
|
|
293
293
|
**2. Analyze complexity of implementation:**
|
|
294
294
|
|
|
295
295
|
```bash
|
|
296
|
-
node -e "import('{{
|
|
296
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.analyzeComplexity({targetPath: 'src/auth/login.ts', projectPath: process.cwd()}).then(r => console.log(r.content[0].text)))"
|
|
297
297
|
```
|
|
298
298
|
|
|
299
299
|
**3. Find implemented feature:**
|
|
300
300
|
|
|
301
301
|
```bash
|
|
302
|
-
node -e "import('{{
|
|
302
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.findSymbol({symbolName: 'handleLogin', searchPath: 'src/'}).then(r => console.log(r.content[0].text)))"
|
|
303
303
|
```
|
|
304
304
|
|
|
305
305
|
## Next Step
|
package/commands/vibe.voice.md
CHANGED
|
@@ -31,11 +31,8 @@ argument-hint: "--pro for high accuracy, --lang ko for Korean"
|
|
|
31
31
|
|
|
32
32
|
### Step 2: 음성 녹음 및 변환
|
|
33
33
|
|
|
34
|
-
**스크립트
|
|
35
|
-
|
|
36
|
-
node -e "console.log(require('path').join(process.env.APPDATA || require('os').homedir() + '/.config', 'vibe/hooks/scripts/llm-orchestrate.js'))"
|
|
37
|
-
```
|
|
38
|
-
출력값을 `[LLM_SCRIPT]`로 저장.
|
|
34
|
+
**스크립트 경로:**
|
|
35
|
+
- `[LLM_SCRIPT]` = `{{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js`
|
|
39
36
|
|
|
40
37
|
```bash
|
|
41
38
|
node "[LLM_SCRIPT]" gemini voice $ARGUMENTS
|
package/dist/cli/auth.d.ts
CHANGED
|
@@ -3,7 +3,11 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { LLMAuthStatus, LLMStatusMap, ClaudeCodeStatus } from './types.js';
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* ~/.vibe/.env 에 환경변수 저장 (upsert)
|
|
7
|
+
*/
|
|
8
|
+
export declare function saveToGlobalEnv(key: string, value: string): void;
|
|
9
|
+
/**
|
|
10
|
+
* LLM 인증 상태 확인 (환경변수 전용)
|
|
7
11
|
*/
|
|
8
12
|
export declare function getLLMAuthStatus(): LLMStatusMap;
|
|
9
13
|
/**
|
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;AAMH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE3E;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE3E;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAsBhE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,CAoB/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,GAAG,MAAM,CAOhE;AAED,wBAAgB,eAAe,CAAC,YAAY,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAYvE"}
|
package/dist/cli/auth.js
CHANGED
|
@@ -6,7 +6,30 @@ import path from 'path';
|
|
|
6
6
|
import fs from 'fs';
|
|
7
7
|
import { execSync } from 'child_process';
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* ~/.vibe/.env 에 환경변수 저장 (upsert)
|
|
10
|
+
*/
|
|
11
|
+
export function saveToGlobalEnv(key, value) {
|
|
12
|
+
const envDir = path.join(os.homedir(), '.vibe');
|
|
13
|
+
const envPath = path.join(envDir, '.env');
|
|
14
|
+
if (!fs.existsSync(envDir)) {
|
|
15
|
+
fs.mkdirSync(envDir, { recursive: true });
|
|
16
|
+
}
|
|
17
|
+
let content = '';
|
|
18
|
+
if (fs.existsSync(envPath)) {
|
|
19
|
+
content = fs.readFileSync(envPath, 'utf-8');
|
|
20
|
+
}
|
|
21
|
+
const regex = new RegExp(`^${key}=.*$`, 'm');
|
|
22
|
+
if (regex.test(content)) {
|
|
23
|
+
content = content.replace(regex, `${key}=${value}`);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
content = content.trimEnd() + (content ? '\n' : '') + `${key}=${value}\n`;
|
|
27
|
+
}
|
|
28
|
+
fs.writeFileSync(envPath, content, { mode: 0o600 });
|
|
29
|
+
process.env[key] = value;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* LLM 인증 상태 확인 (환경변수 전용)
|
|
10
33
|
*/
|
|
11
34
|
export function getLLMAuthStatus() {
|
|
12
35
|
const status = { claude: [], gpt: [], gemini: [] };
|
|
@@ -17,31 +40,10 @@ export function getLLMAuthStatus() {
|
|
|
17
40
|
if (process.env.OPENAI_API_KEY) {
|
|
18
41
|
status.gpt.push({ type: 'apikey', valid: true });
|
|
19
42
|
}
|
|
20
|
-
// Gemini
|
|
21
|
-
if (process.env.ANTIGRAVITY_REFRESH_TOKEN) {
|
|
22
|
-
status.gemini.push({ type: 'oauth', valid: true });
|
|
23
|
-
}
|
|
24
|
-
else if (process.env.GEMINI_OAUTH_REFRESH_TOKEN) {
|
|
43
|
+
// Gemini (환경변수 전용)
|
|
44
|
+
if (process.env.ANTIGRAVITY_REFRESH_TOKEN || process.env.GEMINI_OAUTH_REFRESH_TOKEN) {
|
|
25
45
|
status.gemini.push({ type: 'oauth', valid: true });
|
|
26
46
|
}
|
|
27
|
-
else {
|
|
28
|
-
try {
|
|
29
|
-
const geminiCliPaths = [
|
|
30
|
-
path.join(os.homedir(), '.gemini', 'oauth_creds.json'),
|
|
31
|
-
path.join(os.homedir(), '.config', 'gemini-cli', 'oauth_creds.json'),
|
|
32
|
-
];
|
|
33
|
-
for (const credPath of geminiCliPaths) {
|
|
34
|
-
if (fs.existsSync(credPath)) {
|
|
35
|
-
const data = JSON.parse(fs.readFileSync(credPath, 'utf-8'));
|
|
36
|
-
if (data.access_token && data.refresh_token) {
|
|
37
|
-
status.gemini.push({ type: 'oauth', valid: true });
|
|
38
|
-
break;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
catch { /* ignore */ }
|
|
44
|
-
}
|
|
45
47
|
if (process.env.GEMINI_API_KEY) {
|
|
46
48
|
status.gemini.push({ type: 'apikey', valid: true });
|
|
47
49
|
}
|
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,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC;;GAEG;AACH,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/info.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH;;GAEG;AACH,wBAAgB,QAAQ,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/info.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH;;GAEG;AACH,wBAAgB,QAAQ,IAAI,IAAI,CAmC/B;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CA0FjC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAGlC"}
|
|
@@ -13,25 +13,23 @@ export function showHelp() {
|
|
|
13
13
|
console.log(`
|
|
14
14
|
VIBE - Personalized AI Agent (Claude Code exclusive)
|
|
15
15
|
|
|
16
|
-
Lifecycle:
|
|
17
|
-
vibe setup 셋업 위자드 (인증, 채널, 설정 한번에)
|
|
18
|
-
vibe start 데몬 시작 + 인터페이스 활성화
|
|
19
|
-
vibe stop 데몬 중지
|
|
20
|
-
vibe restart 데몬 재시작
|
|
21
|
-
vibe status 전체 상태 확인
|
|
22
|
-
|
|
23
16
|
Commands:
|
|
17
|
+
vibe setup 셋업 위자드 (인증, 채널, 설정 한번에)
|
|
24
18
|
vibe init [project] 프로젝트 초기화
|
|
25
19
|
vibe update 설정 업데이트
|
|
26
|
-
|
|
27
|
-
vibe
|
|
28
|
-
vibe
|
|
20
|
+
vibe upgrade 최신 버전으로 업그레이드
|
|
21
|
+
vibe remove 프로젝트에서 제거
|
|
22
|
+
vibe status 전체 상태 확인
|
|
29
23
|
|
|
30
24
|
LLM:
|
|
31
25
|
vibe claude <cmd> Claude (key, status, logout)
|
|
32
26
|
vibe gpt <cmd> GPT (auth, key, status, logout)
|
|
33
27
|
vibe gemini <cmd> Gemini (auth, key, status, logout)
|
|
34
|
-
vibe
|
|
28
|
+
vibe env import [path] .env → ~/.vibe/.env 복사
|
|
29
|
+
|
|
30
|
+
Channels:
|
|
31
|
+
vibe telegram <cmd> Telegram (setup, chat, status)
|
|
32
|
+
vibe slack <cmd> Slack (setup, channel, status)
|
|
35
33
|
|
|
36
34
|
Slash Commands (Claude Code):
|
|
37
35
|
/vibe.spec "feature" SPEC 작성 + 리서치
|
|
@@ -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,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;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":"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"}
|