@su-record/vibe 2.6.51 → 2.6.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/.env.example +37 -54
  2. package/agents/review/git-history-reviewer.md +1 -1
  3. package/commands/vibe.analyze.md +5 -5
  4. package/commands/vibe.reason.md +4 -4
  5. package/commands/vibe.review.md +7 -8
  6. package/commands/vibe.run.md +11 -14
  7. package/commands/vibe.spec.md +7 -12
  8. package/commands/vibe.spec.review.md +2 -5
  9. package/commands/vibe.trace.md +2 -2
  10. package/commands/vibe.utils.md +2 -5
  11. package/commands/vibe.verify.md +4 -4
  12. package/commands/vibe.voice.md +2 -5
  13. package/dist/cli/auth.d.ts +2 -6
  14. package/dist/cli/auth.d.ts.map +1 -1
  15. package/dist/cli/auth.js +9 -33
  16. package/dist/cli/auth.js.map +1 -1
  17. package/dist/cli/commands/info.js +1 -1
  18. package/dist/cli/commands/slack.d.ts +1 -2
  19. package/dist/cli/commands/slack.d.ts.map +1 -1
  20. package/dist/cli/commands/slack.js +17 -27
  21. package/dist/cli/commands/slack.js.map +1 -1
  22. package/dist/cli/commands/telegram.d.ts +2 -0
  23. package/dist/cli/commands/telegram.d.ts.map +1 -1
  24. package/dist/cli/commands/telegram.js +24 -48
  25. package/dist/cli/commands/telegram.js.map +1 -1
  26. package/dist/cli/index.d.ts.map +1 -1
  27. package/dist/cli/index.js +47 -41
  28. package/dist/cli/index.js.map +1 -1
  29. package/dist/cli/llm/config.d.ts +4 -3
  30. package/dist/cli/llm/config.d.ts.map +1 -1
  31. package/dist/cli/llm/config.js +33 -37
  32. package/dist/cli/llm/config.js.map +1 -1
  33. package/dist/cli/llm/gemini-commands.d.ts.map +1 -1
  34. package/dist/cli/llm/gemini-commands.js +43 -24
  35. package/dist/cli/llm/gemini-commands.js.map +1 -1
  36. package/dist/cli/llm/gpt-commands.d.ts +1 -0
  37. package/dist/cli/llm/gpt-commands.d.ts.map +1 -1
  38. package/dist/cli/llm/gpt-commands.js +50 -37
  39. package/dist/cli/llm/gpt-commands.js.map +1 -1
  40. package/dist/cli/postinstall/constants.js +1 -1
  41. package/dist/cli/postinstall/constants.js.map +1 -1
  42. package/dist/cli/postinstall/inline-skills.js +1 -1
  43. package/dist/cli/postinstall/main.d.ts.map +1 -1
  44. package/dist/cli/postinstall/main.js +9 -1
  45. package/dist/cli/postinstall/main.js.map +1 -1
  46. package/dist/cli/setup/GlobalInstaller.js +4 -4
  47. package/dist/cli/setup/ProjectSetup.js +3 -3
  48. package/dist/cli/setup/ProjectSetup.js.map +1 -1
  49. package/dist/cli/setup/index.d.ts.map +1 -1
  50. package/dist/cli/setup/index.js +0 -1
  51. package/dist/cli/setup/index.js.map +1 -1
  52. package/dist/cli/setup.d.ts.map +1 -1
  53. package/dist/cli/setup.js +0 -1
  54. package/dist/cli/setup.js.map +1 -1
  55. package/dist/cli/types.d.ts +59 -2
  56. package/dist/cli/types.d.ts.map +1 -1
  57. package/dist/infra/lib/MemoryManager.d.ts.map +1 -1
  58. package/dist/infra/lib/MemoryManager.js +0 -2
  59. package/dist/infra/lib/MemoryManager.js.map +1 -1
  60. package/dist/infra/lib/autonomy/AutonomyConfig.d.ts +3 -3
  61. package/dist/infra/lib/config/GlobalConfigManager.d.ts +29 -0
  62. package/dist/infra/lib/config/GlobalConfigManager.d.ts.map +1 -0
  63. package/dist/infra/lib/config/GlobalConfigManager.js +370 -0
  64. package/dist/infra/lib/config/GlobalConfigManager.js.map +1 -0
  65. package/dist/infra/lib/embedding/EmbeddingProvider.d.ts.map +1 -1
  66. package/dist/infra/lib/embedding/EmbeddingProvider.js +3 -2
  67. package/dist/infra/lib/embedding/EmbeddingProvider.js.map +1 -1
  68. package/dist/infra/lib/gemini/auth.d.ts +1 -1
  69. package/dist/infra/lib/gemini/auth.d.ts.map +1 -1
  70. package/dist/infra/lib/gemini/auth.js +21 -19
  71. package/dist/infra/lib/gemini/auth.js.map +1 -1
  72. package/dist/infra/lib/gemini/chat.d.ts.map +1 -1
  73. package/dist/infra/lib/gemini/chat.js +5 -4
  74. package/dist/infra/lib/gemini/chat.js.map +1 -1
  75. package/dist/infra/lib/gpt/auth.d.ts.map +1 -1
  76. package/dist/infra/lib/gpt/auth.js +6 -18
  77. package/dist/infra/lib/gpt/auth.js.map +1 -1
  78. package/dist/infra/lib/gpt/chat.d.ts.map +1 -1
  79. package/dist/infra/lib/gpt/chat.js +12 -5
  80. package/dist/infra/lib/gpt/chat.js.map +1 -1
  81. package/dist/infra/lib/gpt/oauth.d.ts.map +1 -1
  82. package/dist/infra/lib/gpt/oauth.js +3 -2
  83. package/dist/infra/lib/gpt/oauth.js.map +1 -1
  84. package/dist/infra/lib/llm/auth/ConfigManager.d.ts +4 -1
  85. package/dist/infra/lib/llm/auth/ConfigManager.d.ts.map +1 -1
  86. package/dist/infra/lib/llm/auth/ConfigManager.js +6 -6
  87. package/dist/infra/lib/llm/auth/ConfigManager.js.map +1 -1
  88. package/dist/infra/orchestrator/AgentExecutor.d.ts.map +1 -1
  89. package/dist/infra/orchestrator/AgentExecutor.js +2 -1
  90. package/dist/infra/orchestrator/AgentExecutor.js.map +1 -1
  91. package/dist/infra/orchestrator/AgentManager.d.ts.map +1 -1
  92. package/dist/infra/orchestrator/AgentManager.js +2 -1
  93. package/dist/infra/orchestrator/AgentManager.js.map +1 -1
  94. package/dist/infra/orchestrator/BackgroundManager.d.ts.map +1 -1
  95. package/dist/infra/orchestrator/BackgroundManager.js +2 -1
  96. package/dist/infra/orchestrator/BackgroundManager.js.map +1 -1
  97. package/dist/infra/orchestrator/SwarmOrchestrator.d.ts.map +1 -1
  98. package/dist/infra/orchestrator/SwarmOrchestrator.js +2 -1
  99. package/dist/infra/orchestrator/SwarmOrchestrator.js.map +1 -1
  100. package/dist/infra/orchestrator/parallelResearch.d.ts.map +1 -1
  101. package/dist/infra/orchestrator/parallelResearch.js +2 -1
  102. package/dist/infra/orchestrator/parallelResearch.js.map +1 -1
  103. package/dist/infra/types/tool.js +1 -1
  104. package/dist/infra/types/tool.js.map +1 -1
  105. package/dist/tools/evolution/dashboardTools.js +1 -1
  106. package/dist/tools/evolution/dashboardTools.js.map +1 -1
  107. package/dist/tools/evolution/index.js +2 -2
  108. package/dist/tools/evolution/index.js.map +1 -1
  109. package/dist/tools/evolution/insightTools.js +1 -1
  110. package/dist/tools/evolution/insightTools.js.map +1 -1
  111. package/dist/tools/index.js +1 -1
  112. package/dist/tools/index.js.map +1 -1
  113. package/dist/tools/interaction/askUser.d.ts +0 -2
  114. package/dist/tools/interaction/askUser.d.ts.map +1 -1
  115. package/dist/tools/interaction/askUser.js +0 -2
  116. package/dist/tools/interaction/askUser.js.map +1 -1
  117. package/dist/tools/interaction/index.d.ts +0 -2
  118. package/dist/tools/interaction/index.d.ts.map +1 -1
  119. package/dist/tools/interaction/index.js +0 -2
  120. package/dist/tools/interaction/index.js.map +1 -1
  121. package/dist/tools/memory/autoSaveContext.js +1 -1
  122. package/dist/tools/memory/autoSaveContext.js.map +1 -1
  123. package/dist/tools/memory/createMemoryTimeline.js +1 -1
  124. package/dist/tools/memory/createMemoryTimeline.js.map +1 -1
  125. package/dist/tools/memory/getMemoryGraph.js +1 -1
  126. package/dist/tools/memory/getMemoryGraph.js.map +1 -1
  127. package/dist/tools/memory/getSessionContext.js +1 -1
  128. package/dist/tools/memory/getSessionContext.js.map +1 -1
  129. package/dist/tools/memory/index.js +1 -1
  130. package/dist/tools/memory/index.js.map +1 -1
  131. package/dist/tools/memory/linkMemories.js +1 -1
  132. package/dist/tools/memory/linkMemories.js.map +1 -1
  133. package/dist/tools/memory/saveMemory.js +1 -1
  134. package/dist/tools/memory/saveMemory.js.map +1 -1
  135. package/dist/tools/memory/searchMemoriesAdvanced.js +1 -1
  136. package/dist/tools/memory/searchMemoriesAdvanced.js.map +1 -1
  137. package/dist/tools/memory/startSession.d.ts.map +1 -1
  138. package/dist/tools/memory/startSession.js +1 -2
  139. package/dist/tools/memory/startSession.js.map +1 -1
  140. package/dist/tools/semantic/analyzeDependencyGraph.js +1 -1
  141. package/dist/tools/semantic/analyzeDependencyGraph.js.map +1 -1
  142. package/dist/tools/semantic/findReferences.d.ts.map +1 -1
  143. package/dist/tools/semantic/findReferences.js +1 -2
  144. package/dist/tools/semantic/findReferences.js.map +1 -1
  145. package/dist/tools/semantic/findSymbol.d.ts.map +1 -1
  146. package/dist/tools/semantic/findSymbol.js +1 -2
  147. package/dist/tools/semantic/findSymbol.js.map +1 -1
  148. package/hooks/hooks.json +14 -14
  149. package/hooks/scripts/keyword-detector.js +1 -1
  150. package/hooks/scripts/llm-orchestrate.js +3 -2
  151. package/hooks/scripts/post-tool-verify.js +1 -1
  152. package/hooks/scripts/pre-tool-guard.js +1 -1
  153. package/hooks/scripts/skill-injector.js +1 -1
  154. package/hooks/scripts/stop-notify.js +5 -3
  155. package/hooks/scripts/utils.js +23 -6
  156. package/languages/python-fastapi.md +1 -1
  157. package/package.json +2 -2
  158. package/skills/brand-assets/SKILL.md +1 -1
  159. package/skills/core-capabilities/SKILL.md +3 -3
  160. package/skills/parallel-research/SKILL.md +1 -1
  161. package/.env +0 -62
@@ -11,7 +11,7 @@
11
11
  import fs from 'fs';
12
12
  import path from 'path';
13
13
  import os from 'os';
14
- import { CORE_PATH, PROJECT_DIR } from './utils.js';
14
+ import { VIBE_PATH, PROJECT_DIR } from './utils.js';
15
15
  import { checkBinaryExists, checkPlatform, getInstallHint } from './skill-requirements.js';
16
16
 
17
17
  // Skill storage locations
@@ -23,7 +23,7 @@
23
23
 
24
24
  import fs from 'fs';
25
25
  import path from 'path';
26
- import { PROJECT_DIR, CORE_PATH } from './utils.js';
26
+ import { PROJECT_DIR, VIBE_PATH, readVibeConfig } from './utils.js';
27
27
 
28
28
  // Read hook input from stdin
29
29
  let input = '';
@@ -63,8 +63,10 @@ async function sendDiscord(message, summary) {
63
63
  }
64
64
 
65
65
  async function sendTelegram(message, summary) {
66
- const botToken = process.env.TELEGRAM_BOT_TOKEN;
67
- const chatId = process.env.TELEGRAM_CHAT_ID;
66
+ const vibeConfig = readVibeConfig();
67
+ const botToken = vibeConfig.channels?.telegram?.botToken || process.env.TELEGRAM_BOT_TOKEN;
68
+ const chatIds = vibeConfig.channels?.telegram?.allowedChatIds || [];
69
+ const chatId = chatIds[0] || process.env.TELEGRAM_CHAT_ID;
68
70
 
69
71
  if (!botToken || !chatId) return { sent: false, reason: 'no token or chat_id' };
70
72
 
@@ -11,14 +11,31 @@ import os from 'os';
11
11
  // 플랫폼 감지
12
12
  const IS_WINDOWS = os.platform() === 'win32';
13
13
 
14
- // 스크립트 위치에서 CORE_PATH 자동 감지
15
- // hooks/scripts/utils.js → hooks → CORE_PATH
14
+ // 스크립트 위치에서 VIBE_PATH 자동 감지
15
+ // hooks/scripts/utils.js → hooks → VIBE_PATH
16
16
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
17
- const DETECTED_CORE_PATH = path.resolve(__dirname, '..', '..');
17
+ const DETECTED_VIBE_PATH = path.resolve(__dirname, '..', '..');
18
18
 
19
- export const CORE_PATH = process.env.CORE_PATH || DETECTED_CORE_PATH;
19
+ export const VIBE_PATH = process.env.VIBE_PATH || DETECTED_VIBE_PATH;
20
20
  export const PROJECT_DIR = process.env.CLAUDE_PROJECT_DIR || '.';
21
21
 
22
+ // ~/.vibe/ 디렉토리 경로
23
+ const VIBE_HOME_DIR = path.join(os.homedir(), '.vibe');
24
+
25
+ /**
26
+ * ~/.vibe/config.json 읽기
27
+ * @returns {object} 파싱된 config 또는 빈 객체
28
+ */
29
+ export function readVibeConfig() {
30
+ const configPath = path.join(VIBE_HOME_DIR, 'config.json');
31
+ try {
32
+ if (fs.existsSync(configPath)) {
33
+ return JSON.parse(fs.readFileSync(configPath, 'utf-8'));
34
+ }
35
+ } catch { /* ignore */ }
36
+ return {};
37
+ }
38
+
22
39
  /**
23
40
  * 파일 시스템 경로를 file:// URL로 변환 (크로스 플랫폼)
24
41
  * - macOS/Linux: /Users/grove/... → file:///Users/grove/...
@@ -65,7 +82,7 @@ function getGlobalNpmPath() {
65
82
  * 우선순위: 로컬 빌드 → 전역 npm
66
83
  */
67
84
  export function getToolsBaseUrl() {
68
- const localDist = path.join(CORE_PATH, 'dist', 'tools');
85
+ const localDist = path.join(VIBE_PATH, 'dist', 'tools');
69
86
  const globalPackage = path.join(getGlobalNpmPath(), '@su-record', 'core', 'dist', 'tools');
70
87
 
71
88
  // 1. 로컬 빌드된 파일 확인 (개발 환경)
@@ -83,7 +100,7 @@ export function getToolsBaseUrl() {
83
100
  * 우선순위: 로컬 빌드 → 전역 npm
84
101
  */
85
102
  export function getLibBaseUrl() {
86
- const localDist = path.join(CORE_PATH, 'dist', 'infra', 'lib');
103
+ const localDist = path.join(VIBE_PATH, 'dist', 'infra', 'lib');
87
104
  const globalPackage = path.join(getGlobalNpmPath(), '@su-record', 'core', 'dist', 'infra', 'lib');
88
105
 
89
106
  // 1. 로컬 빌드된 파일 확인 (개발 환경)
@@ -179,7 +179,7 @@ class UserService:
179
179
  ### 6. Dependency Injection (FastAPI Depends)
180
180
 
181
181
  ```python
182
- # app/core/deps.py
182
+ # app/vibe/deps.py
183
183
  from sqlalchemy.ext.asyncio import AsyncSession
184
184
 
185
185
  async def get_db() -> AsyncSession:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@su-record/vibe",
3
- "version": "2.6.51",
3
+ "version": "2.6.53",
4
4
  "description": "Personalized AI agent for Claude Code — 46 agents, 41+ tools, multi-LLM orchestration",
5
5
  "type": "module",
6
6
  "main": "dist/cli/index.js",
@@ -41,7 +41,7 @@
41
41
  "vibe": "dist/cli/index.js"
42
42
  },
43
43
  "scripts": {
44
- "build": "tsc && test -f .env || cp .env.example .env && chmod +x dist/cli/index.js",
44
+ "build": "tsc && chmod +x dist/cli/index.js",
45
45
  "dev": "tsc --watch",
46
46
  "test": "vitest run",
47
47
  "test:watch": "vitest",
@@ -102,7 +102,7 @@ Requirements:
102
102
  ## Manual Usage
103
103
 
104
104
  ```bash
105
- # Resolve path first: node -e "console.log(require('path').join(process.env.APPDATA || require('os').homedir() + '/.config', 'vibe/hooks/scripts/llm-orchestrate.js'))"
105
+ # [LLM_SCRIPT] = {{CORE_PATH}}/hooks/scripts/llm-orchestrate.js
106
106
  # Generate via llm-orchestrate (when Gemini configured)
107
107
  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"
108
108
  ```
@@ -37,7 +37,7 @@ Complete guide to core's scenario-driven development framework.
37
37
  ### Semantic Code Analysis
38
38
 
39
39
  ```bash
40
- node -e "import('{{CORE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.TOOL_NAME({...}))"
40
+ node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.TOOL_NAME({...}))"
41
41
  ```
42
42
 
43
43
  | Tool | Purpose |
@@ -62,7 +62,7 @@ node -e "import('{{CORE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index
62
62
  ### Background Agents
63
63
 
64
64
  ```bash
65
- node -e "import('{{CORE_PATH_URL}}/node_modules/@su-record/vibe/dist/infra/orchestrator/index.js').then(o =>
65
+ node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/infra/orchestrator/index.js').then(o =>
66
66
  o.launchBackgroundAgent({ prompt: '...', agentName: '...' })
67
67
  )"
68
68
  ```
@@ -133,7 +133,7 @@ Add `ultrawork` or `ulw` for maximum performance:
133
133
  ├── languages/ # Language guides
134
134
  └── templates/ # Templates
135
135
 
136
- # Global (%APPDATA%/core/ or ~/.config/vibe/)
136
+ # Global (%APPDATA%/vibe/ or ~/.config/vibe/)
137
137
  core/
138
138
  ├── hooks/scripts/ # Hook scripts (llm-orchestrate.js)
139
139
  ├── gpt.json # GPT credentials
@@ -32,7 +32,7 @@ Parallel research patterns for solving complex problems.
32
32
  ### Method 1: Direct Orchestrator Call
33
33
 
34
34
  ```bash
35
- node -e "import('{{CORE_PATH_URL}}/node_modules/@su-record/vibe/dist/infra/orchestrator/index.js').then(o =>
35
+ node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/infra/orchestrator/index.js').then(o =>
36
36
  o.research('passkey authentication', ['React', 'Supabase'])
37
37
  .then(r => console.log(r.content[0].text))
38
38
  )"
package/.env DELETED
@@ -1,62 +0,0 @@
1
- # ─── Telegram ────────────────────────────────────────────────────────
2
- TELEGRAM_BOT_TOKEN=8351914914:AAEwjQHYG7hZA1_xVPpHFTI5uS4t9qF3Tm8
3
- TELEGRAM_ALLOWED_CHAT_IDS=8382889321
4
-
5
- # ─── Discord ─────────────────────────────────────────────────────────
6
- DISCORD_BOT_TOKEN=
7
- DISCORD_ALLOWED_GUILD_IDS=
8
- DISCORD_ALLOWED_CHANNEL_IDS=
9
-
10
- # ─── Slack ───────────────────────────────────────────────────────────
11
- SLACK_BOT_TOKEN=
12
- SLACK_APP_TOKEN=
13
- SLACK_ALLOWED_CHANNELS=
14
-
15
-
16
- # ─── Gemini (API key + Search grounding) ────────────────────────────
17
- GEMINI_API_KEY=AIzaSyA6Xo4uTG-tqAs07CocKhEzs7LLixL1P9o
18
-
19
- # ─── OpenAI ──────────────────────────────────────────────────────────
20
- OPENAI_API_KEY=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
21
-
22
- # ─── GPT OAuth (OpenAI Codex CLI PKCE) ──────────────────────────────
23
- # client_id: app_EMoamEEZ73f0CkXaXp7hrann
24
- # authorize: https://auth.openai.com/oauth/authorize
25
- # token: https://auth.openai.com/oauth/token
26
- # redirect: http://localhost:1455/auth/callback
27
- # scope: openid profile email offline_access
28
- GPT_OAUTH_REFRESH_TOKEN=rt_T4NTlgJtgqUpw5qpx2xvGwJ7_niAYQBEChutVs2-Vb0.zfksqi5wjRv-8Ww6QtUOCJGabA0aviDS2ggyRVAnKmI
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
34
- GEMINI_OAUTH_REFRESH_TOKEN=1//0eTG9YDGVchVOCgYIARAAGA4SNwF-L9IryFIeIUvne7lpgRK8QFUgRXuvL55MBHMzDnxsXDbltWwy4H38TMY6zVKcQM-3qgILcb4
35
-
36
- # ─── Model Overrides (optional - uses hardcoded defaults if not set) ─
37
- # Claude (역할별 — Claude Code 네이티브)
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 # 구현, 백그라운드 작업
42
-
43
- # GPT (Chat/Reasoning — OAuth: gpt-5.3-codex, OAuth Pro: codex-spark)
44
- GPT_MODEL=gpt-5.2
45
- # Plus Plan Use: gpt-5.3-codex
46
- # Pro Plan Use: gpt-5.3-codex-spark
47
-
48
- # Gemini (API Key + Gemini CLI 공용)
49
- GEMINI_MODEL=gemini-3-pro-preview
50
- GEMINI_FLASH_MODEL=gemini-3-flash-preview
51
- GEMINI_SEARCH_MODEL=gemini-3-flash-preview
52
-
53
- GEMINI_OAUTH_MODEL=gemini-3-pro-high
54
- GEMINI_OAUTH_FLASH_MODEL=gemini-3-flash
55
-
56
- # Embedding (API Key 전용 — OAuth 미지원)
57
- EMBEDDING_MODEL=text-embedding-3-large
58
- GEMINI_EMBEDDING_MODEL=text-embedding-004
59
-
60
- # ─── Workspace ───────────────────────────────────────────────────────
61
- WORKSPACE_DIR=C:/Users/endba/WorkSpace
62
-