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.
Files changed (65) hide show
  1. package/dist/difftastic-LICENSE-vvvada9m. +0 -0
  2. package/dist/hub-web/404.html +61 -0
  3. package/dist/hub-web/apple-touch-icon-180x180.png +0 -0
  4. package/dist/hub-web/assets/c-BIGW1oBm.js +1 -0
  5. package/dist/hub-web/assets/csharp-COcwbKMJ.js +1 -0
  6. package/dist/hub-web/assets/css-DPfMkruS.js +1 -0
  7. package/dist/hub-web/assets/diff-D97Zzqfu.js +1 -0
  8. package/dist/hub-web/assets/dockerfile-BcOcwvcX.js +1 -0
  9. package/dist/hub-web/assets/github-dark-DHJKELXO.js +1 -0
  10. package/dist/hub-web/assets/github-light-DAi9KRSo.js +1 -0
  11. package/dist/hub-web/assets/go-CxLEBnE3.js +1 -0
  12. package/dist/hub-web/assets/graphql-ChdNCCLP.js +1 -0
  13. package/dist/hub-web/assets/html-GMplVEZG.js +1 -0
  14. package/dist/hub-web/assets/index-0aqL8VXm.js +567 -0
  15. package/dist/hub-web/assets/index-4ZZB8Tlb.js +567 -0
  16. package/dist/hub-web/assets/index-B7irZTDK.js +567 -0
  17. package/dist/hub-web/assets/index-BXmgMqvR.js +567 -0
  18. package/dist/hub-web/assets/index-BlKY5jx3.css +1 -0
  19. package/dist/hub-web/assets/index-C1OMh9tk.js +567 -0
  20. package/dist/hub-web/assets/index-C8ydeZkH.js +567 -0
  21. package/dist/hub-web/assets/index-CIvUnoGv.css +1 -0
  22. package/dist/hub-web/assets/index-CJTpw75C.js +567 -0
  23. package/dist/hub-web/assets/index-CPl6oRKV.js +567 -0
  24. package/dist/hub-web/assets/index-Cs_fBMh6.css +1 -0
  25. package/dist/hub-web/assets/index-DBcOXTUF.css +1 -0
  26. package/dist/hub-web/assets/index-DUyAti-V.css +1 -0
  27. package/dist/hub-web/assets/index-Dj3J-3EQ.js +567 -0
  28. package/dist/hub-web/assets/index-h5hAGsle.js +567 -0
  29. package/dist/hub-web/assets/index-loRJ2ZgP.css +1 -0
  30. package/dist/hub-web/assets/ini-BEwlwnbL.js +1 -0
  31. package/dist/hub-web/assets/java-CylS5w8V.js +1 -0
  32. package/dist/hub-web/assets/javascript-wDzz0qaB.js +1 -0
  33. package/dist/hub-web/assets/json-Cp-IABpG.js +1 -0
  34. package/dist/hub-web/assets/jsx-g9-lgVsj.js +1 -0
  35. package/dist/hub-web/assets/kotlin-BdnUsdx6.js +1 -0
  36. package/dist/hub-web/assets/make-CHLpvVh8.js +1 -0
  37. package/dist/hub-web/assets/markdown-Cvjx9yec.js +1 -0
  38. package/dist/hub-web/assets/php-Dhbhpdrm.js +1 -0
  39. package/dist/hub-web/assets/powershell-Dpen1YoG.js +1 -0
  40. package/dist/hub-web/assets/python-B6aJPvgy.js +1 -0
  41. package/dist/hub-web/assets/rust-B1yitclQ.js +1 -0
  42. package/dist/hub-web/assets/scss-OYdSNvt2.js +1 -0
  43. package/dist/hub-web/assets/shellscript-Yzrsuije.js +1 -0
  44. package/dist/hub-web/assets/sql-BLtJtn59.js +1 -0
  45. package/dist/hub-web/assets/swift-D82vCrfD.js +1 -0
  46. package/dist/hub-web/assets/toml-vGWfd6FD.js +1 -0
  47. package/dist/hub-web/assets/tsx-COt5Ahok.js +1 -0
  48. package/dist/hub-web/assets/typescript-BPQ3VLAy.js +1 -0
  49. package/dist/hub-web/assets/workbox-window.prod.es5-BIl4cyR9.js +2 -0
  50. package/dist/hub-web/assets/xml-sdJ4AIDG.js +1 -0
  51. package/dist/hub-web/assets/yaml-Buea-lGh.js +1 -0
  52. package/dist/hub-web/favicon.ico +0 -0
  53. package/dist/hub-web/icon.svg +30 -0
  54. package/dist/hub-web/index.html +61 -0
  55. package/dist/hub-web/manifest.webmanifest +1 -0
  56. package/dist/hub-web/mask-icon.svg +3 -0
  57. package/dist/hub-web/maskable-icon-512x512.png +0 -0
  58. package/dist/hub-web/pwa-192x192.png +0 -0
  59. package/dist/hub-web/pwa-512x512.png +0 -0
  60. package/dist/hub-web/pwa-64x64.png +0 -0
  61. package/dist/hub-web/sw.js +2 -0
  62. package/dist/index.js +1702 -65
  63. package/dist/ripgrep-LICENSE-vvvada9m. +0 -0
  64. package/install.sh +101 -14
  65. 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
- else
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
- export BUN_INSTALL_MIRROR="https://registry.npmmirror.com/-/binary/bun"
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.1.49",
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:watch": "bun test --watch",
24
- "test:coverage": "bun test --coverage",
25
- "release": "bun run test:pre-release && bun scripts/bump.ts patch && npm publish --registry https://registry.npmjs.org && ./scripts/sync-gitee.sh",
26
- "prepublishOnly": "bun run build"
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
- "bun-types": "latest"
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
- "license": "UNLICENSED",
39
- "dependencies": {
40
- "@openpanel/sdk": "^1.0.4",
41
- "qrcode-terminal": "^0.12.0"
42
- }
74
+ "codex",
75
+ "gemini",
76
+ "agentic-coding"
77
+ ]
43
78
  }