tako-cli 0.1.49 → 0.2.0
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/dist/difftastic-LICENSE-vvvada9m. +0 -0
- package/dist/hub-web/404.html +61 -0
- package/dist/hub-web/apple-touch-icon-180x180.png +0 -0
- package/dist/hub-web/assets/c-BIGW1oBm.js +1 -0
- package/dist/hub-web/assets/csharp-COcwbKMJ.js +1 -0
- package/dist/hub-web/assets/css-DPfMkruS.js +1 -0
- package/dist/hub-web/assets/diff-D97Zzqfu.js +1 -0
- package/dist/hub-web/assets/dockerfile-BcOcwvcX.js +1 -0
- package/dist/hub-web/assets/github-dark-DHJKELXO.js +1 -0
- package/dist/hub-web/assets/github-light-DAi9KRSo.js +1 -0
- package/dist/hub-web/assets/go-CxLEBnE3.js +1 -0
- package/dist/hub-web/assets/graphql-ChdNCCLP.js +1 -0
- package/dist/hub-web/assets/html-GMplVEZG.js +1 -0
- package/dist/hub-web/assets/index-0aqL8VXm.js +567 -0
- package/dist/hub-web/assets/index-4ZZB8Tlb.js +567 -0
- package/dist/hub-web/assets/index-B7irZTDK.js +567 -0
- package/dist/hub-web/assets/index-BXmgMqvR.js +567 -0
- package/dist/hub-web/assets/index-BlKY5jx3.css +1 -0
- package/dist/hub-web/assets/index-C1OMh9tk.js +567 -0
- package/dist/hub-web/assets/index-C8ydeZkH.js +567 -0
- package/dist/hub-web/assets/index-CIvUnoGv.css +1 -0
- package/dist/hub-web/assets/index-CJTpw75C.js +567 -0
- package/dist/hub-web/assets/index-CPl6oRKV.js +567 -0
- package/dist/hub-web/assets/index-Cs_fBMh6.css +1 -0
- package/dist/hub-web/assets/index-DBcOXTUF.css +1 -0
- package/dist/hub-web/assets/index-DUyAti-V.css +1 -0
- package/dist/hub-web/assets/index-Dj3J-3EQ.js +567 -0
- package/dist/hub-web/assets/index-h5hAGsle.js +567 -0
- package/dist/hub-web/assets/index-loRJ2ZgP.css +1 -0
- package/dist/hub-web/assets/ini-BEwlwnbL.js +1 -0
- package/dist/hub-web/assets/java-CylS5w8V.js +1 -0
- package/dist/hub-web/assets/javascript-wDzz0qaB.js +1 -0
- package/dist/hub-web/assets/json-Cp-IABpG.js +1 -0
- package/dist/hub-web/assets/jsx-g9-lgVsj.js +1 -0
- package/dist/hub-web/assets/kotlin-BdnUsdx6.js +1 -0
- package/dist/hub-web/assets/make-CHLpvVh8.js +1 -0
- package/dist/hub-web/assets/markdown-Cvjx9yec.js +1 -0
- package/dist/hub-web/assets/php-Dhbhpdrm.js +1 -0
- package/dist/hub-web/assets/powershell-Dpen1YoG.js +1 -0
- package/dist/hub-web/assets/python-B6aJPvgy.js +1 -0
- package/dist/hub-web/assets/rust-B1yitclQ.js +1 -0
- package/dist/hub-web/assets/scss-OYdSNvt2.js +1 -0
- package/dist/hub-web/assets/shellscript-Yzrsuije.js +1 -0
- package/dist/hub-web/assets/sql-BLtJtn59.js +1 -0
- package/dist/hub-web/assets/swift-D82vCrfD.js +1 -0
- package/dist/hub-web/assets/toml-vGWfd6FD.js +1 -0
- package/dist/hub-web/assets/tsx-COt5Ahok.js +1 -0
- package/dist/hub-web/assets/typescript-BPQ3VLAy.js +1 -0
- package/dist/hub-web/assets/workbox-window.prod.es5-BIl4cyR9.js +2 -0
- package/dist/hub-web/assets/xml-sdJ4AIDG.js +1 -0
- package/dist/hub-web/assets/yaml-Buea-lGh.js +1 -0
- package/dist/hub-web/favicon.ico +0 -0
- package/dist/hub-web/icon.svg +30 -0
- package/dist/hub-web/index.html +61 -0
- package/dist/hub-web/manifest.webmanifest +1 -0
- package/dist/hub-web/mask-icon.svg +3 -0
- package/dist/hub-web/maskable-icon-512x512.png +0 -0
- package/dist/hub-web/pwa-192x192.png +0 -0
- package/dist/hub-web/pwa-512x512.png +0 -0
- package/dist/hub-web/pwa-64x64.png +0 -0
- package/dist/hub-web/sw.js +2 -0
- package/dist/index.js +1702 -65
- package/dist/ripgrep-LICENSE-vvvada9m. +0 -0
- package/install.sh +101 -14
- package/package.json +54 -19
|
File without changes
|
package/install.sh
CHANGED
|
@@ -34,21 +34,51 @@ error() {
|
|
|
34
34
|
|
|
35
35
|
# 检测用户所在地区
|
|
36
36
|
detect_region() {
|
|
37
|
+
# Fast path: locale/timezone heuristic (instant, no network)
|
|
38
|
+
local lang="${LANG:-}${LC_ALL:-}${LANGUAGE:-}"
|
|
39
|
+
if echo "$lang" | grep -qi '^zh_CN'; then
|
|
40
|
+
REGION="cn"
|
|
41
|
+
info "检测到中文环境,使用国内镜像"
|
|
42
|
+
return 0
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
# Check timezone (CST or Asia/Shanghai variants)
|
|
46
|
+
local tz="${TZ:-}"
|
|
47
|
+
if [ -z "$tz" ]; then
|
|
48
|
+
tz=$(date +%Z 2>/dev/null || echo "")
|
|
49
|
+
fi
|
|
50
|
+
case "$tz" in
|
|
51
|
+
CST|Asia/Shanghai|Asia/Chongqing|Asia/Urumqi|Asia/Harbin)
|
|
52
|
+
REGION="cn"
|
|
53
|
+
info "检测到中国时区,使用国内镜像"
|
|
54
|
+
return 0
|
|
55
|
+
;;
|
|
56
|
+
esac
|
|
57
|
+
|
|
58
|
+
# Slow path: IP-based detection (with --max-time to cap total request time)
|
|
37
59
|
info "检测网络环境..."
|
|
38
60
|
|
|
39
61
|
local country=""
|
|
40
|
-
country=$(curl -s --connect-timeout 2 "http://ip-api.com/line/?fields=countryCode" 2>/dev/null || echo "")
|
|
62
|
+
country=$(curl -s --connect-timeout 2 --max-time 3 "http://ip-api.com/line/?fields=countryCode" 2>/dev/null || echo "")
|
|
41
63
|
|
|
42
64
|
if [ -z "$country" ]; then
|
|
43
|
-
country=$(curl -s --connect-timeout 2 "https://ipinfo.io/country" 2>/dev/null || echo "")
|
|
65
|
+
country=$(curl -s --connect-timeout 2 --max-time 3 "https://ipinfo.io/country" 2>/dev/null || echo "")
|
|
66
|
+
fi
|
|
67
|
+
|
|
68
|
+
if [ -z "$country" ]; then
|
|
69
|
+
country=$(curl -s --connect-timeout 2 --max-time 3 "https://api.ip.sb/geoip" 2>/dev/null | grep -o '"country_code":"[^"]*"' | head -1 | cut -d'"' -f4 || echo "")
|
|
44
70
|
fi
|
|
45
71
|
|
|
46
72
|
if [ "$country" = "CN" ]; then
|
|
47
73
|
REGION="cn"
|
|
48
74
|
info "检测到中国大陆网络,使用国内镜像"
|
|
49
|
-
|
|
75
|
+
elif [ -n "$country" ]; then
|
|
50
76
|
REGION="global"
|
|
51
77
|
info "使用国际源"
|
|
78
|
+
else
|
|
79
|
+
# 所有检测都失败,默认使用国内镜像(保守策略,与 TS 代码一致)
|
|
80
|
+
REGION="cn"
|
|
81
|
+
info "网络检测超时,默认使用国内镜像"
|
|
52
82
|
fi
|
|
53
83
|
}
|
|
54
84
|
|
|
@@ -88,6 +118,68 @@ install_dependencies() {
|
|
|
88
118
|
fi
|
|
89
119
|
}
|
|
90
120
|
|
|
121
|
+
# 从 npmmirror 直接下载安装 Bun(国内专用,不依赖 bun.sh 和 GitHub)
|
|
122
|
+
install_bun_from_npmmirror() {
|
|
123
|
+
local mirror="https://registry.npmmirror.com/-/binary/bun"
|
|
124
|
+
|
|
125
|
+
# 检测平台和架构
|
|
126
|
+
local os arch target
|
|
127
|
+
os=$(uname -s | tr '[:upper:]' '[:lower:]')
|
|
128
|
+
arch=$(uname -m)
|
|
129
|
+
|
|
130
|
+
case "$os" in
|
|
131
|
+
linux) os="linux" ;;
|
|
132
|
+
darwin) os="darwin" ;;
|
|
133
|
+
*) error "不支持的操作系统: $os" ;;
|
|
134
|
+
esac
|
|
135
|
+
|
|
136
|
+
case "$arch" in
|
|
137
|
+
x86_64|amd64) arch="x64" ;;
|
|
138
|
+
aarch64|arm64) arch="aarch64" ;;
|
|
139
|
+
*) error "不支持的架构: $arch" ;;
|
|
140
|
+
esac
|
|
141
|
+
|
|
142
|
+
# Alpine Linux 使用 musl 版本
|
|
143
|
+
target="bun-${os}-${arch}"
|
|
144
|
+
if [ "$os" = "linux" ] && [ -f /etc/alpine-release ]; then
|
|
145
|
+
target="${target}-musl"
|
|
146
|
+
fi
|
|
147
|
+
|
|
148
|
+
# 获取最新版本号
|
|
149
|
+
info "正在获取最新版本..."
|
|
150
|
+
local latest_version
|
|
151
|
+
latest_version=$(curl -s --connect-timeout 5 "$mirror/" 2>/dev/null \
|
|
152
|
+
| grep -o '"name":"bun-v[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*/"' \
|
|
153
|
+
| sed 's/"name":"bun-v//;s/\/"//' \
|
|
154
|
+
| sort -t. -k1,1rn -k2,2rn -k3,3rn \
|
|
155
|
+
| head -1)
|
|
156
|
+
|
|
157
|
+
if [ -z "$latest_version" ]; then
|
|
158
|
+
error "无法获取 Bun 最新版本号"
|
|
159
|
+
fi
|
|
160
|
+
|
|
161
|
+
# 补回前缀
|
|
162
|
+
latest_version="bun-v${latest_version}"
|
|
163
|
+
|
|
164
|
+
local download_url="${mirror}/${latest_version}/${target}.zip"
|
|
165
|
+
local zip_file="/tmp/bun-install-$$.zip"
|
|
166
|
+
|
|
167
|
+
info "下载 Bun (${latest_version}) from npmmirror..."
|
|
168
|
+
curl --fail --location --progress-bar --output "$zip_file" "$download_url" || \
|
|
169
|
+
error "下载失败: $download_url"
|
|
170
|
+
|
|
171
|
+
# 解压到目标目录
|
|
172
|
+
local bin_dir="$TAKO_BUN_DIR/bin"
|
|
173
|
+
mkdir -p "$bin_dir"
|
|
174
|
+
|
|
175
|
+
unzip -oq "$zip_file" -d /tmp/bun-install-$$ || error "解压失败"
|
|
176
|
+
mv "/tmp/bun-install-$$/${target}/bun" "$bin_dir/bun"
|
|
177
|
+
chmod +x "$bin_dir/bun"
|
|
178
|
+
|
|
179
|
+
# 清理临时文件
|
|
180
|
+
rm -rf "$zip_file" "/tmp/bun-install-$$"
|
|
181
|
+
}
|
|
182
|
+
|
|
91
183
|
# 安装 Tako 专属 Bun
|
|
92
184
|
install_bun() {
|
|
93
185
|
# 检查是否已安装
|
|
@@ -101,20 +193,15 @@ install_bun() {
|
|
|
101
193
|
|
|
102
194
|
mkdir -p "$TAKO_BUN_DIR"
|
|
103
195
|
|
|
104
|
-
# 设置环境变量确保 bun 安装到正确位置
|
|
105
|
-
export BUN_INSTALL="$TAKO_BUN_DIR"
|
|
106
|
-
|
|
107
|
-
# 国内用户使用镜像
|
|
108
196
|
if [ "$REGION" = "cn" ]; then
|
|
109
|
-
|
|
197
|
+
# 国内用户:直接从 npmmirror 下载二进制,完全不经过 bun.sh/GitHub
|
|
198
|
+
install_bun_from_npmmirror
|
|
199
|
+
else
|
|
200
|
+
# 海外用户:使用官方安装脚本
|
|
201
|
+
export BUN_INSTALL="$TAKO_BUN_DIR"
|
|
202
|
+
curl -fsSL https://bun.sh/install | bash
|
|
110
203
|
fi
|
|
111
204
|
|
|
112
|
-
# 执行 bun 安装脚本
|
|
113
|
-
curl -fsSL https://bun.sh/install | bash
|
|
114
|
-
|
|
115
|
-
# 清理环境变量
|
|
116
|
-
unset BUN_INSTALL_MIRROR
|
|
117
|
-
|
|
118
205
|
if [ ! -x "$TAKO_BUN_DIR/bin/bun" ]; then
|
|
119
206
|
error "Bun 安装失败,请检查网络连接"
|
|
120
207
|
fi
|
package/package.json
CHANGED
|
@@ -1,17 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tako-cli",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Tako CLI - AI coding tools launcher",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Tako CLI - AI coding tools launcher with agentic coding support",
|
|
5
|
+
"author": "Tako Team",
|
|
6
|
+
"license": "AGPL-3.0-only",
|
|
5
7
|
"type": "module",
|
|
6
|
-
"bin": {
|
|
7
|
-
"tako": "./dist/index.js"
|
|
8
|
-
},
|
|
9
8
|
"files": [
|
|
9
|
+
"dist/",
|
|
10
10
|
"install.sh",
|
|
11
|
-
"install.ps1"
|
|
12
|
-
"dist"
|
|
11
|
+
"install.ps1"
|
|
13
12
|
],
|
|
13
|
+
"imports": {
|
|
14
|
+
"#embedded-assets": {
|
|
15
|
+
"bun": "./src/runtime/embeddedAssets.bun.ts",
|
|
16
|
+
"default": "./src/runtime/embeddedAssets.stub.ts"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
14
19
|
"scripts": {
|
|
20
|
+
"typecheck": "tsc --noEmit",
|
|
21
|
+
"build:web": "cd ../hub/web && bun install && bun run build",
|
|
15
22
|
"build": "bun run scripts/build.ts",
|
|
16
23
|
"bump": "bun scripts/bump.ts",
|
|
17
24
|
"test": "bun test",
|
|
@@ -20,24 +27,52 @@
|
|
|
20
27
|
"test:platform": "bun test tests/platform.*.test.ts",
|
|
21
28
|
"test:pre-release": "bun test tests/pre-release.test.ts",
|
|
22
29
|
"test:e2e": "bash scripts/test-install.sh",
|
|
23
|
-
"test:
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
30
|
+
"test:lifecycle": "bash ../../scripts/test-cli-lifecycle.sh",
|
|
31
|
+
"release": "bun run test:pre-release && bun scripts/bump.ts patch && npm publish --registry https://registry.npmjs.org && cd ../desktop-bundles && bun run release && cd ../cli && ./scripts/sync-gitee.sh",
|
|
32
|
+
"prepublishOnly": "bun run build",
|
|
33
|
+
"dev": "bun src/index.ts"
|
|
34
|
+
},
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"@modelcontextprotocol/sdk": "^1.25.1",
|
|
37
|
+
"@openpanel/sdk": "^1.0.4",
|
|
38
|
+
"axios": "^1.13.2",
|
|
39
|
+
"chalk": "^5.6.2",
|
|
40
|
+
"cross-spawn": "^7.0.6",
|
|
41
|
+
"fastify": "^5.6.2",
|
|
42
|
+
"fastify-type-provider-zod": "6.1.0",
|
|
43
|
+
"ink": "^6.6.0",
|
|
44
|
+
"ps-list": "^9.0.0",
|
|
45
|
+
"react": "^19.2.3",
|
|
46
|
+
"socket.io-client": "^4.8.3",
|
|
47
|
+
"tar": "^7.5.2",
|
|
48
|
+
"yaml": "^2.8.2",
|
|
49
|
+
"zod": "^4.2.1"
|
|
27
50
|
},
|
|
28
51
|
"devDependencies": {
|
|
52
|
+
"@tako/installer": "workspace:*",
|
|
53
|
+
"@tako/protocol": "workspace:*",
|
|
54
|
+
"tako-hub": "workspace:*",
|
|
29
55
|
"@clack/prompts": "^0.7.0",
|
|
30
|
-
"
|
|
56
|
+
"@types/cross-spawn": "^6.0.6",
|
|
57
|
+
"@types/node": ">=25",
|
|
58
|
+
"@types/ps-list": "^6.2.1",
|
|
59
|
+
"@types/react": "^19.2.7",
|
|
60
|
+
"bun-types": "latest",
|
|
61
|
+
"dotenv": "^17.2.3",
|
|
62
|
+
"typescript": "^5",
|
|
63
|
+
"vitest": "^4.0.16"
|
|
64
|
+
},
|
|
65
|
+
"resolutions": {
|
|
66
|
+
"whatwg-url": "14.2.0",
|
|
67
|
+
"parse-path": "7.0.3",
|
|
68
|
+
"@types/parse-path": "7.0.3"
|
|
31
69
|
},
|
|
32
70
|
"keywords": [
|
|
33
71
|
"cli",
|
|
34
72
|
"ai",
|
|
35
73
|
"claude",
|
|
36
|
-
"codex"
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
"@openpanel/sdk": "^1.0.4",
|
|
41
|
-
"qrcode-terminal": "^0.12.0"
|
|
42
|
-
}
|
|
74
|
+
"codex",
|
|
75
|
+
"gemini",
|
|
76
|
+
"agentic-coding"
|
|
77
|
+
]
|
|
43
78
|
}
|