choavis-agent 1.5.18 → 1.5.19
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/package.json +23 -2
- package/scripts/afterPack.cjs +37 -0
- package/scripts/install.command +65 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "choavis-agent",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.19",
|
|
4
4
|
"description": "Slack ↔ Claude Code bridge agent",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist-electron/main.js",
|
|
@@ -87,7 +87,28 @@
|
|
|
87
87
|
}
|
|
88
88
|
],
|
|
89
89
|
"category": "public.app-category.developer-tools"
|
|
90
|
-
}
|
|
90
|
+
},
|
|
91
|
+
"dmg": {
|
|
92
|
+
"icon": "build/install.icns",
|
|
93
|
+
"iconSize": 80,
|
|
94
|
+
"window": {
|
|
95
|
+
"width": 300,
|
|
96
|
+
"height": 260
|
|
97
|
+
},
|
|
98
|
+
"contents": [
|
|
99
|
+
{
|
|
100
|
+
"x": 900,
|
|
101
|
+
"y": 900
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"x": 150,
|
|
105
|
+
"y": 120,
|
|
106
|
+
"type": "file",
|
|
107
|
+
"path": "Install.command"
|
|
108
|
+
}
|
|
109
|
+
]
|
|
110
|
+
},
|
|
111
|
+
"afterPack": "scripts/afterPack.cjs"
|
|
91
112
|
},
|
|
92
113
|
"engines": {
|
|
93
114
|
"node": ">=20"
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const { execSync } = require('child_process');
|
|
4
|
+
|
|
5
|
+
// afterPack: appOutDir에 Install.command를 복사하고 커스텀 아이콘 적용
|
|
6
|
+
exports.default = async function afterPack(context) {
|
|
7
|
+
const src = path.join(__dirname, 'install.command');
|
|
8
|
+
const dest = path.join(context.appOutDir, 'Install.command');
|
|
9
|
+
const iconPng = path.join(__dirname, '..', 'build', 'install-icon-512.png');
|
|
10
|
+
|
|
11
|
+
if (fs.existsSync(src)) {
|
|
12
|
+
fs.copyFileSync(src, dest);
|
|
13
|
+
fs.chmodSync(dest, 0o755);
|
|
14
|
+
console.log('[afterPack] install.command →', dest);
|
|
15
|
+
|
|
16
|
+
// macOS 커스텀 아이콘 설정 (sips + DeRez + Rez + SetFile)
|
|
17
|
+
if (process.platform === 'darwin' && fs.existsSync(iconPng)) {
|
|
18
|
+
try {
|
|
19
|
+
const tmpIcon = path.join(context.appOutDir, '_tmp_icon.png');
|
|
20
|
+
const tmpRsrc = path.join(context.appOutDir, '_tmp_icon.rsrc');
|
|
21
|
+
|
|
22
|
+
fs.copyFileSync(iconPng, tmpIcon);
|
|
23
|
+
execSync(`sips -i "${tmpIcon}"`, { stdio: 'pipe' });
|
|
24
|
+
execSync(`DeRez -only icns "${tmpIcon}" > "${tmpRsrc}"`, { stdio: 'pipe', shell: true });
|
|
25
|
+
execSync(`Rez -append "${tmpRsrc}" -o "${dest}"`, { stdio: 'pipe' });
|
|
26
|
+
execSync(`SetFile -a C "${dest}"`, { stdio: 'pipe' });
|
|
27
|
+
|
|
28
|
+
// 정리
|
|
29
|
+
fs.unlinkSync(tmpIcon);
|
|
30
|
+
fs.unlinkSync(tmpRsrc);
|
|
31
|
+
console.log('[afterPack] Custom icon applied to Install.command');
|
|
32
|
+
} catch (err) {
|
|
33
|
+
console.warn('[afterPack] Icon set failed (non-critical):', err.message);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Choavis Agent Dashboard 설치 스크립트
|
|
3
|
+
# 더블클릭으로 실행하세요.
|
|
4
|
+
|
|
5
|
+
APP_NAME="Choavis Agent Dashboard"
|
|
6
|
+
APP_FILE="$APP_NAME.app"
|
|
7
|
+
DEST="/Applications"
|
|
8
|
+
|
|
9
|
+
# 스크립트가 위치한 디렉토리 (DMG 마운트 포인트)
|
|
10
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
11
|
+
|
|
12
|
+
clear
|
|
13
|
+
echo ""
|
|
14
|
+
echo " ╔══════════════════════════════════════╗"
|
|
15
|
+
echo " ║ Choavis Agent Dashboard 설치기 ║"
|
|
16
|
+
echo " ╚══════════════════════════════════════╝"
|
|
17
|
+
echo ""
|
|
18
|
+
|
|
19
|
+
# 앱 파일 찾기
|
|
20
|
+
APP_PATH="$SCRIPT_DIR/$APP_FILE"
|
|
21
|
+
if [ ! -d "$APP_PATH" ]; then
|
|
22
|
+
echo " ❌ '$APP_FILE'을 찾을 수 없습니다."
|
|
23
|
+
echo " DMG 내의 설치 스크립트를 실행해주세요."
|
|
24
|
+
echo ""
|
|
25
|
+
read -n 1 -s -r -p " 아무 키나 누르면 종료합니다..."
|
|
26
|
+
exit 1
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
# 기존 앱 종료
|
|
30
|
+
if pgrep -f "$APP_NAME" > /dev/null 2>&1; then
|
|
31
|
+
echo " ⏳ 실행 중인 $APP_NAME 종료 중..."
|
|
32
|
+
pkill -f "$APP_NAME" 2>/dev/null
|
|
33
|
+
sleep 2
|
|
34
|
+
fi
|
|
35
|
+
|
|
36
|
+
# 기존 앱 제거
|
|
37
|
+
if [ -d "$DEST/$APP_FILE" ]; then
|
|
38
|
+
echo " 🗑 기존 버전 제거 중..."
|
|
39
|
+
rm -rf "$DEST/$APP_FILE"
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
# 앱 복사
|
|
43
|
+
echo " 📦 앱 설치 중..."
|
|
44
|
+
cp -R "$APP_PATH" "$DEST/"
|
|
45
|
+
|
|
46
|
+
# quarantine 속성 제거 (Gatekeeper 우회)
|
|
47
|
+
echo " 🔓 보안 설정 중..."
|
|
48
|
+
xattr -cr "$DEST/$APP_FILE"
|
|
49
|
+
|
|
50
|
+
echo ""
|
|
51
|
+
echo " ✅ 설치 완료!"
|
|
52
|
+
echo ""
|
|
53
|
+
|
|
54
|
+
# 앱 실행 여부 확인
|
|
55
|
+
read -n 1 -s -r -p " 앱을 지금 실행할까요? (Y/n) " answer
|
|
56
|
+
echo ""
|
|
57
|
+
if [[ "$answer" != "n" && "$answer" != "N" ]]; then
|
|
58
|
+
echo " 🚀 앱을 실행합니다..."
|
|
59
|
+
open "$DEST/$APP_FILE"
|
|
60
|
+
fi
|
|
61
|
+
|
|
62
|
+
echo ""
|
|
63
|
+
echo " 이 창을 닫아도 됩니다."
|
|
64
|
+
echo ""
|
|
65
|
+
exit 0
|