@su-record/vibe 2.6.52 → 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.
- package/.env.example +37 -54
- package/dist/cli/auth.d.ts +2 -6
- package/dist/cli/auth.d.ts.map +1 -1
- package/dist/cli/auth.js +9 -33
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli/commands/info.js +1 -1
- package/dist/cli/commands/slack.d.ts +1 -2
- package/dist/cli/commands/slack.d.ts.map +1 -1
- package/dist/cli/commands/slack.js +17 -27
- package/dist/cli/commands/slack.js.map +1 -1
- package/dist/cli/commands/telegram.d.ts +2 -0
- package/dist/cli/commands/telegram.d.ts.map +1 -1
- package/dist/cli/commands/telegram.js +24 -48
- package/dist/cli/commands/telegram.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +47 -41
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/llm/config.d.ts +4 -3
- package/dist/cli/llm/config.d.ts.map +1 -1
- package/dist/cli/llm/config.js +33 -37
- 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 +43 -24
- package/dist/cli/llm/gemini-commands.js.map +1 -1
- package/dist/cli/llm/gpt-commands.d.ts +1 -0
- package/dist/cli/llm/gpt-commands.d.ts.map +1 -1
- package/dist/cli/llm/gpt-commands.js +50 -37
- package/dist/cli/llm/gpt-commands.js.map +1 -1
- package/dist/cli/postinstall/main.d.ts.map +1 -1
- package/dist/cli/postinstall/main.js +9 -1
- package/dist/cli/postinstall/main.js.map +1 -1
- package/dist/cli/types.d.ts +59 -2
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/infra/lib/autonomy/AutonomyConfig.d.ts +3 -3
- package/dist/infra/lib/config/GlobalConfigManager.d.ts +29 -0
- package/dist/infra/lib/config/GlobalConfigManager.d.ts.map +1 -0
- package/dist/infra/lib/config/GlobalConfigManager.js +370 -0
- package/dist/infra/lib/config/GlobalConfigManager.js.map +1 -0
- package/dist/infra/lib/embedding/EmbeddingProvider.d.ts.map +1 -1
- package/dist/infra/lib/embedding/EmbeddingProvider.js +3 -2
- package/dist/infra/lib/embedding/EmbeddingProvider.js.map +1 -1
- package/dist/infra/lib/gemini/auth.d.ts +1 -1
- package/dist/infra/lib/gemini/auth.d.ts.map +1 -1
- package/dist/infra/lib/gemini/auth.js +21 -19
- package/dist/infra/lib/gemini/auth.js.map +1 -1
- package/dist/infra/lib/gemini/chat.d.ts.map +1 -1
- package/dist/infra/lib/gemini/chat.js +5 -4
- package/dist/infra/lib/gemini/chat.js.map +1 -1
- package/dist/infra/lib/gpt/auth.d.ts.map +1 -1
- package/dist/infra/lib/gpt/auth.js +6 -18
- package/dist/infra/lib/gpt/auth.js.map +1 -1
- package/dist/infra/lib/gpt/chat.d.ts.map +1 -1
- package/dist/infra/lib/gpt/chat.js +11 -4
- package/dist/infra/lib/gpt/chat.js.map +1 -1
- package/dist/infra/lib/gpt/oauth.d.ts.map +1 -1
- package/dist/infra/lib/gpt/oauth.js +3 -2
- package/dist/infra/lib/gpt/oauth.js.map +1 -1
- package/dist/infra/lib/llm/auth/ConfigManager.d.ts +4 -1
- package/dist/infra/lib/llm/auth/ConfigManager.d.ts.map +1 -1
- package/dist/infra/lib/llm/auth/ConfigManager.js +6 -6
- package/dist/infra/lib/llm/auth/ConfigManager.js.map +1 -1
- package/dist/infra/orchestrator/AgentExecutor.d.ts.map +1 -1
- package/dist/infra/orchestrator/AgentExecutor.js +2 -1
- package/dist/infra/orchestrator/AgentExecutor.js.map +1 -1
- package/dist/infra/orchestrator/AgentManager.d.ts.map +1 -1
- package/dist/infra/orchestrator/AgentManager.js +2 -1
- package/dist/infra/orchestrator/AgentManager.js.map +1 -1
- package/dist/infra/orchestrator/BackgroundManager.d.ts.map +1 -1
- package/dist/infra/orchestrator/BackgroundManager.js +2 -1
- package/dist/infra/orchestrator/BackgroundManager.js.map +1 -1
- package/dist/infra/orchestrator/SwarmOrchestrator.d.ts.map +1 -1
- package/dist/infra/orchestrator/SwarmOrchestrator.js +2 -1
- package/dist/infra/orchestrator/SwarmOrchestrator.js.map +1 -1
- package/dist/infra/orchestrator/parallelResearch.d.ts.map +1 -1
- package/dist/infra/orchestrator/parallelResearch.js +2 -1
- package/dist/infra/orchestrator/parallelResearch.js.map +1 -1
- package/hooks/scripts/llm-orchestrate.js +3 -2
- package/hooks/scripts/stop-notify.js +5 -3
- package/hooks/scripts/utils.js +17 -0
- package/package.json +2 -2
- package/.env +0 -52
package/.env.example
CHANGED
|
@@ -1,54 +1,37 @@
|
|
|
1
|
-
# ───
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
#
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
#
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
#
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
#
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
#
|
|
22
|
-
#
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
#
|
|
26
|
-
#
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
#
|
|
30
|
-
#
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
#
|
|
37
|
-
|
|
38
|
-
# Plus Plan Use: gpt-5.3-codex
|
|
39
|
-
# Pro Plan Use: gpt-5.3-codex-spark
|
|
40
|
-
|
|
41
|
-
# Gemini
|
|
42
|
-
GEMINI_MODEL=gemini-3-pro-preview
|
|
43
|
-
GEMINI_FLASH_MODEL=gemini-3-flash-preview
|
|
44
|
-
GEMINI_SEARCH_MODEL=gemini-3-flash-preview
|
|
45
|
-
|
|
46
|
-
GEMINI_OAUTH_MODEL=gemini-3-pro-high
|
|
47
|
-
GEMINI_OAUTH_FLASH_MODEL=gemini-3-flash
|
|
48
|
-
|
|
49
|
-
# Embedding (API Key 전용 — OAuth 미지원)
|
|
50
|
-
EMBEDDING_MODEL=text-embedding-3-large
|
|
51
|
-
GEMINI_EMBEDDING_MODEL=text-embedding-004
|
|
52
|
-
|
|
53
|
-
# ─── Workspace ───────────────────────────────────────────────────────
|
|
54
|
-
WORKSPACE_DIR=
|
|
1
|
+
# ─── VIBE Configuration ─────────────────────────────────────────────
|
|
2
|
+
#
|
|
3
|
+
# All credentials, channels, and model overrides are stored in:
|
|
4
|
+
# ~/.vibe/config.json
|
|
5
|
+
#
|
|
6
|
+
# Use CLI commands to configure:
|
|
7
|
+
# vibe setup Interactive setup wizard
|
|
8
|
+
# vibe gpt auth GPT OAuth (Plus/Pro)
|
|
9
|
+
# vibe gpt key <key> GPT API key
|
|
10
|
+
# vibe gemini auth Gemini OAuth
|
|
11
|
+
# vibe gemini key <key> Gemini API key
|
|
12
|
+
# vibe claude key <key> Claude API key
|
|
13
|
+
# vibe telegram setup <token> Telegram bot
|
|
14
|
+
# vibe slack setup <bot> <app> Slack bot
|
|
15
|
+
# vibe status Check all status
|
|
16
|
+
#
|
|
17
|
+
# Config structure (~/.vibe/config.json):
|
|
18
|
+
# {
|
|
19
|
+
# "version": "1",
|
|
20
|
+
# "credentials": {
|
|
21
|
+
# "gpt": { "apiKey": "sk-..." },
|
|
22
|
+
# "gemini": { "apiKey": "AIza..." }
|
|
23
|
+
# },
|
|
24
|
+
# "channels": {
|
|
25
|
+
# "telegram": { "botToken": "123:ABC", "allowedChatIds": ["-100..."] },
|
|
26
|
+
# "slack": { "botToken": "xoxb-...", "appToken": "xapp-..." }
|
|
27
|
+
# },
|
|
28
|
+
# "models": {
|
|
29
|
+
# "gpt": "gpt-5.2",
|
|
30
|
+
# "gemini": "gemini-3-pro-preview",
|
|
31
|
+
# "claudeBackground": "claude-sonnet-4-5"
|
|
32
|
+
# }
|
|
33
|
+
# }
|
|
34
|
+
#
|
|
35
|
+
# Environment variables are still supported as fallback:
|
|
36
|
+
# OPENAI_API_KEY, GEMINI_API_KEY, GPT_MODEL, etc.
|
|
37
|
+
# ────────────────────────────────────────────────────────────────────
|
package/dist/cli/auth.d.ts
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* LLM 인증 관련 함수 (
|
|
2
|
+
* LLM 인증 관련 함수 (config.json 기반)
|
|
3
3
|
*/
|
|
4
4
|
import { LLMAuthStatus, LLMStatusMap, ClaudeCodeStatus } from './types.js';
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
export declare function saveToGlobalEnv(key: string, value: string): void;
|
|
9
|
-
/**
|
|
10
|
-
* LLM 인증 상태 확인 (환경변수 전용)
|
|
6
|
+
* LLM 인증 상태 확인 (config.json 우선, process.env fallback)
|
|
11
7
|
*/
|
|
12
8
|
export declare function getLLMAuthStatus(): LLMStatusMap;
|
|
13
9
|
/**
|
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;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG3E;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,CAqB/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
|
@@ -1,50 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* LLM 인증 관련 함수 (
|
|
2
|
+
* LLM 인증 관련 함수 (config.json 기반)
|
|
3
3
|
*/
|
|
4
|
-
import os from 'os';
|
|
5
|
-
import path from 'path';
|
|
6
|
-
import fs from 'fs';
|
|
7
4
|
import { execSync } from 'child_process';
|
|
5
|
+
import { readGlobalConfig } from '../infra/lib/config/GlobalConfigManager.js';
|
|
8
6
|
/**
|
|
9
|
-
*
|
|
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 인증 상태 확인 (환경변수 전용)
|
|
7
|
+
* LLM 인증 상태 확인 (config.json 우선, process.env fallback)
|
|
33
8
|
*/
|
|
34
9
|
export function getLLMAuthStatus() {
|
|
35
10
|
const status = { claude: [], gpt: [], gemini: [] };
|
|
11
|
+
const config = readGlobalConfig();
|
|
36
12
|
// GPT
|
|
37
|
-
if (process.env.GPT_OAUTH_REFRESH_TOKEN) {
|
|
13
|
+
if (config.credentials?.gpt?.oauthRefreshToken || process.env.GPT_OAUTH_REFRESH_TOKEN) {
|
|
38
14
|
status.gpt.push({ type: 'oauth', valid: true });
|
|
39
15
|
}
|
|
40
|
-
if (process.env.OPENAI_API_KEY) {
|
|
16
|
+
if (config.credentials?.gpt?.apiKey || process.env.OPENAI_API_KEY) {
|
|
41
17
|
status.gpt.push({ type: 'apikey', valid: true });
|
|
42
18
|
}
|
|
43
|
-
// Gemini
|
|
44
|
-
if (process.env.ANTIGRAVITY_REFRESH_TOKEN || process.env.GEMINI_OAUTH_REFRESH_TOKEN) {
|
|
19
|
+
// Gemini
|
|
20
|
+
if (config.credentials?.gemini?.oauthRefreshToken || process.env.ANTIGRAVITY_REFRESH_TOKEN || process.env.GEMINI_OAUTH_REFRESH_TOKEN) {
|
|
45
21
|
status.gemini.push({ type: 'oauth', valid: true });
|
|
46
22
|
}
|
|
47
|
-
if (process.env.GEMINI_API_KEY) {
|
|
23
|
+
if (config.credentials?.gemini?.apiKey || process.env.GEMINI_API_KEY) {
|
|
48
24
|
status.gemini.push({ type: 'apikey', valid: true });
|
|
49
25
|
}
|
|
50
26
|
return status;
|
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,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,7 @@ LLM:
|
|
|
25
25
|
vibe claude <cmd> Claude (key, status, logout)
|
|
26
26
|
vibe gpt <cmd> GPT (auth, key, status, logout)
|
|
27
27
|
vibe gemini <cmd> Gemini (auth, key, status, logout)
|
|
28
|
-
vibe env import [path] .env → ~/.vibe
|
|
28
|
+
vibe env import [path] .env → ~/.vibe/config.json 가져오기
|
|
29
29
|
|
|
30
30
|
Channels:
|
|
31
31
|
vibe telegram <cmd> Telegram (setup, chat, status)
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
* CLI Commands: vibe slack <subcommand>
|
|
3
3
|
* Phase 4: External Interface
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* Similar pattern to vibe telegram setup.
|
|
5
|
+
* 설정은 ~/.vibe/config.json channels.slack에 통합 저장
|
|
7
6
|
*/
|
|
8
7
|
export declare function slackSetup(botToken?: string, appToken?: string): void;
|
|
9
8
|
export declare function slackChannel(channelId?: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/slack.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/slack.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH,wBAAgB,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAoBrE;AAED,wBAAgB,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAuBrD;AAED,wBAAgB,WAAW,IAAI,IAAI,CAelC;AAED,wBAAgB,SAAS,IAAI,IAAI,CAYhC"}
|
|
@@ -2,29 +2,14 @@
|
|
|
2
2
|
* CLI Commands: vibe slack <subcommand>
|
|
3
3
|
* Phase 4: External Interface
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* Similar pattern to vibe telegram setup.
|
|
5
|
+
* 설정은 ~/.vibe/config.json channels.slack에 통합 저장
|
|
7
6
|
*/
|
|
8
|
-
import
|
|
9
|
-
import * as path from 'node:path';
|
|
10
|
-
import * as os from 'node:os';
|
|
11
|
-
const VIBE_DIR = path.join(os.homedir(), '.vibe');
|
|
12
|
-
const SLACK_CONFIG_FILE = path.join(VIBE_DIR, 'slack.json');
|
|
7
|
+
import { readGlobalConfig, patchGlobalConfig, } from '../../infra/lib/config/GlobalConfigManager.js';
|
|
13
8
|
function loadConfig() {
|
|
14
|
-
|
|
15
|
-
if (!fs.existsSync(SLACK_CONFIG_FILE))
|
|
16
|
-
return null;
|
|
17
|
-
return JSON.parse(fs.readFileSync(SLACK_CONFIG_FILE, 'utf-8'));
|
|
18
|
-
}
|
|
19
|
-
catch {
|
|
20
|
-
return null;
|
|
21
|
-
}
|
|
9
|
+
return readGlobalConfig().channels?.slack ?? null;
|
|
22
10
|
}
|
|
23
11
|
function saveConfig(config) {
|
|
24
|
-
|
|
25
|
-
fs.mkdirSync(VIBE_DIR, { recursive: true, mode: 0o700 });
|
|
26
|
-
}
|
|
27
|
-
fs.writeFileSync(SLACK_CONFIG_FILE, JSON.stringify(config, null, 2), { mode: 0o600 });
|
|
12
|
+
patchGlobalConfig({ channels: { slack: config } });
|
|
28
13
|
}
|
|
29
14
|
export function slackSetup(botToken, appToken) {
|
|
30
15
|
if (!botToken || !appToken) {
|
|
@@ -41,7 +26,7 @@ export function slackSetup(botToken, appToken) {
|
|
|
41
26
|
};
|
|
42
27
|
saveConfig(config);
|
|
43
28
|
console.log('Slack tokens saved');
|
|
44
|
-
if (config.allowedChannelIds.length === 0) {
|
|
29
|
+
if ((config.allowedChannelIds ?? []).length === 0) {
|
|
45
30
|
console.log('No allowed channels set. Use: vibe slack channel <channel-id>');
|
|
46
31
|
}
|
|
47
32
|
}
|
|
@@ -56,11 +41,13 @@ export function slackChannel(channelId) {
|
|
|
56
41
|
console.log('Slack not configured. Run: vibe slack setup <bot-token> <app-token>');
|
|
57
42
|
return;
|
|
58
43
|
}
|
|
59
|
-
|
|
44
|
+
const channelIds = config.allowedChannelIds ?? [];
|
|
45
|
+
if (channelIds.includes(channelId)) {
|
|
60
46
|
console.log(`Channel ID "${channelId}" is already in the allow list`);
|
|
61
47
|
return;
|
|
62
48
|
}
|
|
63
|
-
|
|
49
|
+
channelIds.push(channelId);
|
|
50
|
+
config.allowedChannelIds = channelIds;
|
|
64
51
|
saveConfig(config);
|
|
65
52
|
console.log(`Channel ID "${channelId}" added to allow list`);
|
|
66
53
|
}
|
|
@@ -70,11 +57,14 @@ export function slackStatus() {
|
|
|
70
57
|
console.log('Slack: not configured');
|
|
71
58
|
return;
|
|
72
59
|
}
|
|
73
|
-
const
|
|
74
|
-
const
|
|
60
|
+
const bot = config.botToken ?? '';
|
|
61
|
+
const app = config.appToken ?? '';
|
|
62
|
+
const botPreview = bot.slice(0, 8) + '...' + bot.slice(-4);
|
|
63
|
+
const appPreview = app.slice(0, 8) + '...' + app.slice(-4);
|
|
75
64
|
console.log(`Slack Bot Token: configured (${botPreview})`);
|
|
76
65
|
console.log(`Slack App Token: configured (${appPreview})`);
|
|
77
|
-
|
|
66
|
+
const channelIds = config.allowedChannelIds ?? [];
|
|
67
|
+
console.log(`Allowed channels: ${channelIds.length > 0 ? channelIds.join(', ') : 'none'}`);
|
|
78
68
|
}
|
|
79
69
|
export function slackHelp() {
|
|
80
70
|
console.log(`
|
|
@@ -85,8 +75,8 @@ Vibe Slack Commands:
|
|
|
85
75
|
vibe slack help Show this help
|
|
86
76
|
|
|
87
77
|
Get tokens from https://api.slack.com/apps
|
|
88
|
-
Bot Token: OAuth & Permissions
|
|
89
|
-
App Token: Basic Information
|
|
78
|
+
Bot Token: OAuth & Permissions > Bot User OAuth Token (xoxb-)
|
|
79
|
+
App Token: Basic Information > App-Level Tokens (xapp-)
|
|
90
80
|
`);
|
|
91
81
|
}
|
|
92
82
|
//# sourceMappingURL=slack.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack.js","sourceRoot":"","sources":["../../../src/cli/commands/slack.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"slack.js","sourceRoot":"","sources":["../../../src/cli/commands/slack.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* CLI Commands: vibe telegram <subcommand>
|
|
3
3
|
* Phase 4: External Interface
|
|
4
|
+
*
|
|
5
|
+
* 설정은 ~/.vibe/config.json channels.telegram에 통합 저장
|
|
4
6
|
*/
|
|
5
7
|
export declare function telegramSetup(token?: string): void;
|
|
6
8
|
export declare function telegramChat(chatId?: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telegram.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/telegram.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"telegram.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/telegram.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwBH,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAkBlD;AAED,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAuBlD;AAED,wBAAgB,cAAc,IAAI,IAAI,CAYrC;AAiDD,wBAAgB,aAAa,IAAI,IAAI,CAmEpC;AAED,wBAAgB,YAAY,IAAI,IAAI,CA8BnC;AAED,wBAAgB,YAAY,IAAI,IAAI,CAcnC"}
|
|
@@ -1,31 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* CLI Commands: vibe telegram <subcommand>
|
|
3
3
|
* Phase 4: External Interface
|
|
4
|
+
*
|
|
5
|
+
* 설정은 ~/.vibe/config.json channels.telegram에 통합 저장
|
|
4
6
|
*/
|
|
5
7
|
import * as child_process from 'node:child_process';
|
|
6
8
|
import * as fs from 'node:fs';
|
|
7
9
|
import * as path from 'node:path';
|
|
8
|
-
import * as os from 'node:os';
|
|
9
10
|
import * as url from 'node:url';
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const TELEGRAM_LOG_DIR = path.join(VIBE_DIR, 'logs');
|
|
11
|
+
import { readGlobalConfig, patchGlobalConfig, getVibeDir, } from '../../infra/lib/config/GlobalConfigManager.js';
|
|
12
|
+
const TELEGRAM_PID_FILE = path.join(getVibeDir(), 'telegram.pid');
|
|
13
|
+
const TELEGRAM_LOG_DIR = path.join(getVibeDir(), 'logs');
|
|
14
14
|
function loadConfig() {
|
|
15
|
-
|
|
16
|
-
if (!fs.existsSync(TELEGRAM_CONFIG_FILE))
|
|
17
|
-
return null;
|
|
18
|
-
return JSON.parse(fs.readFileSync(TELEGRAM_CONFIG_FILE, 'utf-8'));
|
|
19
|
-
}
|
|
20
|
-
catch {
|
|
21
|
-
return null;
|
|
22
|
-
}
|
|
15
|
+
return readGlobalConfig().channels?.telegram ?? null;
|
|
23
16
|
}
|
|
24
17
|
function saveConfig(config) {
|
|
25
|
-
|
|
26
|
-
fs.mkdirSync(VIBE_DIR, { recursive: true, mode: 0o700 });
|
|
27
|
-
}
|
|
28
|
-
fs.writeFileSync(TELEGRAM_CONFIG_FILE, JSON.stringify(config, null, 2), { mode: 0o600 });
|
|
18
|
+
patchGlobalConfig({ channels: { telegram: config } });
|
|
29
19
|
}
|
|
30
20
|
export function telegramSetup(token) {
|
|
31
21
|
if (!token) {
|
|
@@ -36,11 +26,11 @@ export function telegramSetup(token) {
|
|
|
36
26
|
const existing = loadConfig();
|
|
37
27
|
const config = {
|
|
38
28
|
botToken: token,
|
|
39
|
-
allowedChatIds: existing?.allowedChatIds
|
|
29
|
+
allowedChatIds: existing?.allowedChatIds ?? [],
|
|
40
30
|
};
|
|
41
31
|
saveConfig(config);
|
|
42
32
|
console.log('Telegram bot token saved');
|
|
43
|
-
if (config.allowedChatIds.length === 0) {
|
|
33
|
+
if ((config.allowedChatIds ?? []).length === 0) {
|
|
44
34
|
console.log('No allowed chat IDs set. Use: vibe telegram chat <chat-id>');
|
|
45
35
|
}
|
|
46
36
|
}
|
|
@@ -55,11 +45,13 @@ export function telegramChat(chatId) {
|
|
|
55
45
|
console.log('Telegram not configured. Run: vibe telegram setup <bot-token>');
|
|
56
46
|
return;
|
|
57
47
|
}
|
|
58
|
-
|
|
48
|
+
const chatIds = config.allowedChatIds ?? [];
|
|
49
|
+
if (chatIds.includes(chatId)) {
|
|
59
50
|
console.log(`Chat ID "${chatId}" is already in the allow list`);
|
|
60
51
|
return;
|
|
61
52
|
}
|
|
62
|
-
|
|
53
|
+
chatIds.push(chatId);
|
|
54
|
+
config.allowedChatIds = chatIds;
|
|
63
55
|
saveConfig(config);
|
|
64
56
|
console.log(`Chat ID "${chatId}" added to allow list`);
|
|
65
57
|
}
|
|
@@ -69,9 +61,11 @@ export function telegramStatus() {
|
|
|
69
61
|
console.log('Telegram: not configured');
|
|
70
62
|
return;
|
|
71
63
|
}
|
|
72
|
-
const
|
|
64
|
+
const token = config.botToken ?? '';
|
|
65
|
+
const tokenPreview = token.slice(0, 8) + '...' + token.slice(-4);
|
|
73
66
|
console.log(`Telegram Bot: configured (${tokenPreview})`);
|
|
74
|
-
|
|
67
|
+
const chatIds = config.allowedChatIds ?? [];
|
|
68
|
+
console.log(`Allowed chats: ${chatIds.length > 0 ? chatIds.join(', ') : 'none'}`);
|
|
75
69
|
}
|
|
76
70
|
function readPid() {
|
|
77
71
|
try {
|
|
@@ -94,7 +88,6 @@ function isProcessRunning(pid) {
|
|
|
94
88
|
}
|
|
95
89
|
}
|
|
96
90
|
function ensurePlaywright() {
|
|
97
|
-
// Check if playwright exists in node_modules
|
|
98
91
|
const selfDir = path.dirname(url.fileURLToPath(import.meta.url));
|
|
99
92
|
const candidates = [
|
|
100
93
|
path.join(process.cwd(), 'node_modules', 'playwright'),
|
|
@@ -103,42 +96,36 @@ function ensurePlaywright() {
|
|
|
103
96
|
const found = candidates.some((p) => fs.existsSync(p));
|
|
104
97
|
if (found)
|
|
105
98
|
return true;
|
|
106
|
-
console.log('Playwright
|
|
107
|
-
console.log('(스크린샷/웹 캡처 기능에 필요합니다)');
|
|
99
|
+
console.log('Playwright not installed. Starting auto-install...');
|
|
108
100
|
try {
|
|
109
101
|
child_process.execSync('npm install playwright', {
|
|
110
102
|
stdio: 'inherit',
|
|
111
103
|
timeout: 120_000,
|
|
112
104
|
});
|
|
113
|
-
console.log('Playwright 설치 완료. Chromium 브라우저를 설치합니다...');
|
|
114
105
|
child_process.execSync('npx playwright install chromium', {
|
|
115
106
|
stdio: 'inherit',
|
|
116
107
|
timeout: 300_000,
|
|
117
108
|
});
|
|
118
|
-
console.log('
|
|
109
|
+
console.log('Playwright installed!');
|
|
119
110
|
return true;
|
|
120
111
|
}
|
|
121
|
-
catch
|
|
122
|
-
console.warn('Playwright
|
|
123
|
-
console.warn('수동 설치: npm install playwright && npx playwright install chromium');
|
|
112
|
+
catch {
|
|
113
|
+
console.warn('Playwright auto-install failed. Starting without screenshot support.');
|
|
124
114
|
return false;
|
|
125
115
|
}
|
|
126
116
|
}
|
|
127
117
|
export function telegramStart() {
|
|
128
|
-
// Check if already running
|
|
129
118
|
const existingPid = readPid();
|
|
130
119
|
if (existingPid !== null && isProcessRunning(existingPid)) {
|
|
131
120
|
console.log(`Telegram bridge is already running (PID: ${existingPid})`);
|
|
132
121
|
return;
|
|
133
122
|
}
|
|
134
|
-
// Clean stale PID
|
|
135
123
|
if (existingPid !== null) {
|
|
136
124
|
try {
|
|
137
125
|
fs.unlinkSync(TELEGRAM_PID_FILE);
|
|
138
126
|
}
|
|
139
127
|
catch { /* ignore */ }
|
|
140
128
|
}
|
|
141
|
-
// Validate config
|
|
142
129
|
const config = loadConfig();
|
|
143
130
|
if (!config) {
|
|
144
131
|
console.log('Telegram not configured. Run: vibe telegram setup <bot-token>');
|
|
@@ -152,9 +139,7 @@ export function telegramStart() {
|
|
|
152
139
|
console.log('No allowed chat IDs. Run: vibe telegram chat <chat-id>');
|
|
153
140
|
return;
|
|
154
141
|
}
|
|
155
|
-
// Auto-install Playwright if missing (non-blocking: starts even if install fails)
|
|
156
142
|
ensurePlaywright();
|
|
157
|
-
// Find bridge entry point
|
|
158
143
|
const __dirname = path.dirname(url.fileURLToPath(import.meta.url));
|
|
159
144
|
const bridgePath = path.resolve(__dirname, '..', '..', 'bridge', 'telegram-assistant-bridge.js');
|
|
160
145
|
if (!fs.existsSync(bridgePath)) {
|
|
@@ -162,27 +147,23 @@ export function telegramStart() {
|
|
|
162
147
|
console.error('Run "npm run build" first.');
|
|
163
148
|
return;
|
|
164
149
|
}
|
|
165
|
-
// Ensure log directory
|
|
166
150
|
if (!fs.existsSync(TELEGRAM_LOG_DIR)) {
|
|
167
151
|
fs.mkdirSync(TELEGRAM_LOG_DIR, { recursive: true, mode: 0o700 });
|
|
168
152
|
}
|
|
169
153
|
const logFile = path.join(TELEGRAM_LOG_DIR, 'telegram.log');
|
|
170
154
|
const out = fs.openSync(logFile, 'a');
|
|
171
155
|
const err = fs.openSync(logFile, 'a');
|
|
172
|
-
// Fork bridge as detached process
|
|
173
156
|
const child = child_process.fork(bridgePath, [], {
|
|
174
157
|
detached: true,
|
|
175
158
|
stdio: ['ignore', out, err, 'ipc'],
|
|
176
159
|
env: { ...process.env, VIBE_TELEGRAM: '1' },
|
|
177
160
|
});
|
|
178
|
-
// Save PID
|
|
179
161
|
const pid = child.pid;
|
|
180
162
|
if (pid) {
|
|
181
163
|
fs.writeFileSync(TELEGRAM_PID_FILE, String(pid), { mode: 0o600 });
|
|
182
164
|
}
|
|
183
165
|
child.unref();
|
|
184
166
|
child.disconnect();
|
|
185
|
-
// Verify after brief wait
|
|
186
167
|
setTimeout(() => {
|
|
187
168
|
const savedPid = readPid();
|
|
188
169
|
if (savedPid !== null && isProcessRunning(savedPid)) {
|
|
@@ -198,7 +179,6 @@ export function telegramStop() {
|
|
|
198
179
|
const pid = readPid();
|
|
199
180
|
if (pid === null || !isProcessRunning(pid)) {
|
|
200
181
|
console.log('Telegram bridge is not running');
|
|
201
|
-
// Clean stale PID
|
|
202
182
|
if (pid !== null) {
|
|
203
183
|
try {
|
|
204
184
|
fs.unlinkSync(TELEGRAM_PID_FILE);
|
|
@@ -211,10 +191,7 @@ export function telegramStop() {
|
|
|
211
191
|
try {
|
|
212
192
|
process.kill(pid, 'SIGTERM');
|
|
213
193
|
}
|
|
214
|
-
catch {
|
|
215
|
-
// Process already gone
|
|
216
|
-
}
|
|
217
|
-
// Wait for process to exit
|
|
194
|
+
catch { /* Process already gone */ }
|
|
218
195
|
let checks = 0;
|
|
219
196
|
const interval = setInterval(() => {
|
|
220
197
|
checks++;
|
|
@@ -228,7 +205,6 @@ export function telegramStop() {
|
|
|
228
205
|
}
|
|
229
206
|
else if (checks >= 10) {
|
|
230
207
|
clearInterval(interval);
|
|
231
|
-
// Force kill
|
|
232
208
|
try {
|
|
233
209
|
process.kill(pid, 'SIGKILL');
|
|
234
210
|
}
|
|
@@ -250,8 +226,8 @@ Vibe Telegram Commands:
|
|
|
250
226
|
vibe telegram help Show this help
|
|
251
227
|
|
|
252
228
|
Start/Stop:
|
|
253
|
-
vibe start
|
|
254
|
-
vibe interface enable telegram
|
|
229
|
+
vibe start Start daemon + all interfaces
|
|
230
|
+
vibe interface enable telegram Enable telegram only
|
|
255
231
|
|
|
256
232
|
Get a bot token from @BotFather on Telegram.
|
|
257
233
|
`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../../src/cli/commands/telegram.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../../src/cli/commands/telegram.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;GAEG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;GAEG;AAgDH,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,qBAAqB,IAAI,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAErF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAE7E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC"}
|