agent-toolkit-cli 1.0.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/README.md +16 -0
- package/deploy-cli/bin/demo +232 -0
- package/package.json +13 -0
package/README.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# agent-toolbox-skill
|
|
2
|
+
|
|
3
|
+
当前仓库用于维护 `agent-toolbox-skill`,其中网站部署是第一大功能。
|
|
4
|
+
|
|
5
|
+
## 目录结构
|
|
6
|
+
|
|
7
|
+
- `deploy-cli/`:与 deploy CLI 相关的实现与文档(已聚类)
|
|
8
|
+
- `SKILL.md`:toolbox 顶层技能说明(含后续数据库与对象存储规划)
|
|
9
|
+
- `.cursor/skills/demo-deploy-skill/`:Cursor 本地技能配置
|
|
10
|
+
|
|
11
|
+
## Deploy CLI 快速入口
|
|
12
|
+
|
|
13
|
+
详见:
|
|
14
|
+
|
|
15
|
+
- `deploy-cli/README.md`
|
|
16
|
+
- `deploy-cli/SKILL.md`
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# ─── CLI 标识 ───
|
|
5
|
+
CLI_NAME="agent-toolkit-cli"
|
|
6
|
+
|
|
7
|
+
# ─── 内置凭证(Demo 用) ───
|
|
8
|
+
_BUILTIN_VERCEL_TOKEN="vcp_70vd1XjTvMW5V7SHsQlA1qnbtE00VK5R3o8DzVsPNlbK1mRFwn4b4BjY"
|
|
9
|
+
_BUILTIN_SUPABASE_URL="https://omcqqkquiwkfgrrgkhjl.supabase.co"
|
|
10
|
+
_BUILTIN_SUPABASE_ANON_KEY="sb_publishable_mJ-v0UilpWYxWsdWqfUgfg_G_wcUhoc"
|
|
11
|
+
_BUILTIN_SUPABASE_SERVICE_ROLE_KEY="sb_secret_DNsdDJpeDL8I0oK-yHwtCg_V-j2FUaP"
|
|
12
|
+
|
|
13
|
+
# ─── 颜色 ───
|
|
14
|
+
RED='\033[0;31m'
|
|
15
|
+
GREEN='\033[0;32m'
|
|
16
|
+
YELLOW='\033[1;33m'
|
|
17
|
+
CYAN='\033[0;36m'
|
|
18
|
+
BOLD='\033[1m'
|
|
19
|
+
RESET='\033[0m'
|
|
20
|
+
|
|
21
|
+
print_info() { echo -e "${CYAN}▸${RESET} $*"; }
|
|
22
|
+
print_success() { echo -e "${GREEN}✔${RESET} $*"; }
|
|
23
|
+
print_warn() { echo -e "${YELLOW}⚠${RESET} $*"; }
|
|
24
|
+
print_error() { echo -e "${RED}✘${RESET} $*" >&2; }
|
|
25
|
+
|
|
26
|
+
# ─── 加载 .env ───
|
|
27
|
+
load_env() {
|
|
28
|
+
local env_file="${1:-.env}"
|
|
29
|
+
if [[ -f "$env_file" ]]; then
|
|
30
|
+
while IFS='=' read -r key value || [[ -n "$key" ]]; do
|
|
31
|
+
[[ -z "$key" || "$key" =~ ^# ]] && continue
|
|
32
|
+
value="${value%\"}"
|
|
33
|
+
value="${value#\"}"
|
|
34
|
+
export "$key=$value"
|
|
35
|
+
done < "$env_file"
|
|
36
|
+
fi
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
# ─── 确保 Vercel CLI 已安装 ───
|
|
40
|
+
ensure_vercel() {
|
|
41
|
+
if ! command -v vercel &>/dev/null; then
|
|
42
|
+
print_info "正在安装 Vercel CLI..."
|
|
43
|
+
npm install -g vercel --silent
|
|
44
|
+
print_success "Vercel CLI 安装完成"
|
|
45
|
+
fi
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
mask_secret() {
|
|
49
|
+
local value="${1:-}"
|
|
50
|
+
local prefix_len="${2:-8}"
|
|
51
|
+
local suffix_len="${3:-4}"
|
|
52
|
+
if [[ -z "$value" ]]; then
|
|
53
|
+
echo "(未设置)"
|
|
54
|
+
return
|
|
55
|
+
fi
|
|
56
|
+
local value_len="${#value}"
|
|
57
|
+
if (( value_len <= prefix_len + suffix_len )); then
|
|
58
|
+
echo "****"
|
|
59
|
+
return
|
|
60
|
+
fi
|
|
61
|
+
echo "${value:0:prefix_len}...${value: -suffix_len}"
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
load_builtin_credentials() {
|
|
65
|
+
# 兼容历史拼写:SUPABSE_ANON_KEY(缺少 A)
|
|
66
|
+
if [[ -z "${SUPABASE_ANON_KEY:-}" && -n "${SUPABSE_ANON_KEY:-}" ]]; then
|
|
67
|
+
SUPABASE_ANON_KEY="${SUPABSE_ANON_KEY}"
|
|
68
|
+
fi
|
|
69
|
+
|
|
70
|
+
[[ -z "${VERCEL_TOKEN:-}" ]] && VERCEL_TOKEN="${_BUILTIN_VERCEL_TOKEN}"
|
|
71
|
+
[[ -z "${SUPABASE_URL:-}" ]] && SUPABASE_URL="${_BUILTIN_SUPABASE_URL}"
|
|
72
|
+
[[ -z "${SUPABASE_ANON_KEY:-}" ]] && SUPABASE_ANON_KEY="${_BUILTIN_SUPABASE_ANON_KEY}"
|
|
73
|
+
[[ -z "${SUPABASE_SERVICE_ROLE_KEY:-}" ]] && SUPABASE_SERVICE_ROLE_KEY="${_BUILTIN_SUPABASE_SERVICE_ROLE_KEY}"
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
# ─── 版本 ───
|
|
77
|
+
VERSION="1.0.0"
|
|
78
|
+
|
|
79
|
+
show_version() {
|
|
80
|
+
echo "Agent Toolkit CLI v${VERSION}"
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
# ─── 帮助信息 ───
|
|
84
|
+
show_help() {
|
|
85
|
+
cat <<EOF
|
|
86
|
+
${BOLD}Agent Toolkit CLI${RESET} v${VERSION}
|
|
87
|
+
一键部署你的项目
|
|
88
|
+
|
|
89
|
+
${BOLD}用法:${RESET}
|
|
90
|
+
${CLI_NAME} deploy [目录] [选项] 部署项目
|
|
91
|
+
${CLI_NAME} env 查看当前部署环境配置
|
|
92
|
+
${CLI_NAME} help 显示帮助信息
|
|
93
|
+
${CLI_NAME} version 显示版本
|
|
94
|
+
|
|
95
|
+
${BOLD}部署选项:${RESET}
|
|
96
|
+
--prod 部署到生产环境
|
|
97
|
+
--force 强制重新部署
|
|
98
|
+
--yes 跳过确认提示
|
|
99
|
+
|
|
100
|
+
${BOLD}示例:${RESET}
|
|
101
|
+
${CLI_NAME} deploy 部署当前目录
|
|
102
|
+
${CLI_NAME} deploy ./my-app --prod 部署 my-app 到生产环境
|
|
103
|
+
${CLI_NAME} deploy . --prod --yes 部署到生产环境并跳过确认
|
|
104
|
+
|
|
105
|
+
EOF
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
# ─── deploy 命令 ───
|
|
109
|
+
cmd_deploy() {
|
|
110
|
+
local target_dir="."
|
|
111
|
+
local vercel_args=()
|
|
112
|
+
|
|
113
|
+
while [[ $# -gt 0 ]]; do
|
|
114
|
+
case "$1" in
|
|
115
|
+
--prod) vercel_args+=("--prod"); shift ;;
|
|
116
|
+
--force) vercel_args+=("--force"); shift ;;
|
|
117
|
+
--yes) vercel_args+=("--yes"); shift ;;
|
|
118
|
+
--help|-h) show_help; exit 0 ;;
|
|
119
|
+
-*)
|
|
120
|
+
print_error "未知选项: $1"
|
|
121
|
+
echo "运行 '${CLI_NAME} help' 查看帮助"
|
|
122
|
+
exit 1
|
|
123
|
+
;;
|
|
124
|
+
*)
|
|
125
|
+
target_dir="$1"
|
|
126
|
+
shift
|
|
127
|
+
;;
|
|
128
|
+
esac
|
|
129
|
+
done
|
|
130
|
+
|
|
131
|
+
if [[ ! -d "$target_dir" ]]; then
|
|
132
|
+
print_error "目录不存在: $target_dir"
|
|
133
|
+
exit 1
|
|
134
|
+
fi
|
|
135
|
+
|
|
136
|
+
# Token 优先级:环境变量 > .env 文件 > 内置默认值
|
|
137
|
+
load_env ".env"
|
|
138
|
+
[[ "$target_dir" != "." && -f "${target_dir}/.env" ]] && load_env "${target_dir}/.env"
|
|
139
|
+
|
|
140
|
+
load_builtin_credentials
|
|
141
|
+
|
|
142
|
+
if [[ -z "${VERCEL_TOKEN:-}" ]]; then
|
|
143
|
+
print_error "未找到部署令牌"
|
|
144
|
+
exit 1
|
|
145
|
+
fi
|
|
146
|
+
|
|
147
|
+
ensure_vercel
|
|
148
|
+
|
|
149
|
+
local abs_dir
|
|
150
|
+
abs_dir="$(cd "$target_dir" && pwd)"
|
|
151
|
+
local dir_name
|
|
152
|
+
dir_name="$(basename "$abs_dir")"
|
|
153
|
+
|
|
154
|
+
echo ""
|
|
155
|
+
echo -e "${BOLD}Agent Toolkit CLI${RESET} — 项目部署"
|
|
156
|
+
echo -e "────────────────────────────"
|
|
157
|
+
print_info "项目目录: ${abs_dir}"
|
|
158
|
+
[[ ${#vercel_args[@]} -gt 0 ]] && print_info "部署参数: ${vercel_args[*]}"
|
|
159
|
+
echo ""
|
|
160
|
+
|
|
161
|
+
print_info "正在部署 ${BOLD}${dir_name}${RESET} ..."
|
|
162
|
+
echo ""
|
|
163
|
+
|
|
164
|
+
vercel deploy "${vercel_args[@]}" --token "$VERCEL_TOKEN" --cwd "$target_dir"
|
|
165
|
+
|
|
166
|
+
echo ""
|
|
167
|
+
print_success "部署完成!"
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
# ─── env 命令 ───
|
|
171
|
+
cmd_env() {
|
|
172
|
+
load_env ".env"
|
|
173
|
+
load_builtin_credentials
|
|
174
|
+
|
|
175
|
+
echo -e "${BOLD}当前部署环境配置${RESET}"
|
|
176
|
+
echo "────────────────────────────"
|
|
177
|
+
|
|
178
|
+
if [[ -n "${VERCEL_TOKEN:-}" ]]; then
|
|
179
|
+
print_success "VERCEL_TOKEN: $(mask_secret "$VERCEL_TOKEN")"
|
|
180
|
+
else
|
|
181
|
+
print_warn "VERCEL_TOKEN: 未设置"
|
|
182
|
+
fi
|
|
183
|
+
|
|
184
|
+
if [[ -n "${SUPABASE_URL:-}" ]]; then
|
|
185
|
+
print_success "SUPABASE_URL: ${SUPABASE_URL}"
|
|
186
|
+
else
|
|
187
|
+
print_warn "SUPABASE_URL: 未设置"
|
|
188
|
+
fi
|
|
189
|
+
|
|
190
|
+
if [[ -n "${SUPABASE_ANON_KEY:-}" ]]; then
|
|
191
|
+
print_success "SUPABASE_ANON_KEY: $(mask_secret "$SUPABASE_ANON_KEY")"
|
|
192
|
+
else
|
|
193
|
+
print_warn "SUPABASE_ANON_KEY: 未设置"
|
|
194
|
+
fi
|
|
195
|
+
|
|
196
|
+
if [[ -n "${SUPABASE_SERVICE_ROLE_KEY:-}" ]]; then
|
|
197
|
+
print_success "SUPABASE_SERVICE_ROLE_KEY: $(mask_secret "$SUPABASE_SERVICE_ROLE_KEY")"
|
|
198
|
+
else
|
|
199
|
+
print_warn "SUPABASE_SERVICE_ROLE_KEY: 未设置"
|
|
200
|
+
fi
|
|
201
|
+
|
|
202
|
+
if command -v vercel &>/dev/null; then
|
|
203
|
+
print_success "Vercel CLI: $(vercel --version 2>/dev/null | head -1)"
|
|
204
|
+
else
|
|
205
|
+
print_warn "Vercel CLI: 未安装"
|
|
206
|
+
fi
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
# ─── 主入口 ───
|
|
210
|
+
main() {
|
|
211
|
+
if [[ $# -eq 0 ]]; then
|
|
212
|
+
show_help
|
|
213
|
+
exit 0
|
|
214
|
+
fi
|
|
215
|
+
|
|
216
|
+
local command="$1"
|
|
217
|
+
shift
|
|
218
|
+
|
|
219
|
+
case "$command" in
|
|
220
|
+
deploy) cmd_deploy "$@" ;;
|
|
221
|
+
env) cmd_env ;;
|
|
222
|
+
help) show_help ;;
|
|
223
|
+
version) show_version ;;
|
|
224
|
+
*)
|
|
225
|
+
print_error "未知命令: $command"
|
|
226
|
+
echo "运行 '${CLI_NAME} help' 查看帮助"
|
|
227
|
+
exit 1
|
|
228
|
+
;;
|
|
229
|
+
esac
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
main "$@"
|
package/package.json
ADDED