agent-resource-management 1.3.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 (30) hide show
  1. package/.claude/settings.local.json +8 -0
  2. package/README.md +196 -0
  3. package/bun.lock +32 -0
  4. package/data/skills/bad-name-skill/SKILL.md +8 -0
  5. package/data/skills/github-tool/SKILL.md +11 -0
  6. package/data/skills/invalid-skill/SKILL.md +3 -0
  7. package/data/skills/pdf-tool/SKILL.md +11 -0
  8. package/data/skills/pdf-tool.zip +0 -0
  9. package/dist/main.js +1330 -0
  10. package/dist//344/273/277/347/234/237/350/260/203/350/257/225/345/212/251/346/211/213/AGENT.md +18 -0
  11. package/dist//344/273/277/347/234/237/350/260/203/350/257/225/345/212/251/346/211/213/knowledges//344/273/277/347/234/237/345/271/263/345/217/260Loki/346/227/245/345/277/227/346/216/222/346/237/245/346/226/271/346/263/225.md +27 -0
  12. package/dist//344/273/277/347/234/237/350/260/203/350/257/225/345/212/251/346/211/213/knowledges//344/273/277/347/234/237/345/271/263/345/217/260/344/273/273/345/212/241/350/247/246/345/217/221/345/220/270/346/224/266/345/231/250/344/270/216/345/215/240/344/275/215/350/247/246/345/217/221/345/220/270/346/224/266/345/231/250/344/275/277/347/224/250/345/234/272/346/231/257.md +18 -0
  13. package/dist//344/273/277/347/234/237/350/260/203/350/257/225/345/212/251/346/211/213/knowledges//344/273/277/347/234/237/345/271/263/345/217/260/345/220/216/347/253/257Swagger/346/216/245/345/217/243/346/226/207/346/241/243.md +22 -0
  14. package/dist//344/273/277/347/234/237/350/260/203/350/257/225/345/212/251/346/211/213/knowledges//344/273/277/347/234/237/345/271/263/345/217/260/345/275/223/345/211/215/350/277/220/350/241/214/345/256/236/344/276/213/345/217/212/345/256/236/344/276/213/350/277/220/350/241/214/346/227/245/345/277/227/346/216/222/346/237/245.md +39 -0
  15. package/dist//344/273/277/347/234/237/350/260/203/350/257/225/345/212/251/346/211/213/knowledges//344/273/277/347/234/237/345/271/263/345/217/260/346/216/245/345/217/243/346/216/222/346/237/245/350/203/214/346/231/257/347/237/245/350/257/206.md +49 -0
  16. package/dist//344/273/277/347/234/237/350/260/203/350/257/225/345/212/251/346/211/213/knowledges//344/273/277/347/234/237/350/264/247/350/275/275/347/224/237/345/221/275/345/221/250/346/234/237/346/237/245/350/257/242/346/265/201/347/250/213.md +165 -0
  17. package/dist//344/273/277/347/234/237/350/260/203/350/257/225/345/212/251/346/211/213/knowledges//345/244/251/350/275/246/350/260/203/345/272/246/347/263/273/347/273/237/351/207/215/347/273/204/346/216/245/345/217/243/350/260/203/347/224/250/344/270/216/346/227/245/345/277/227/345/210/206/346/236/220/346/226/271/346/263/225.md +137 -0
  18. package/package.json +20 -0
  19. package/src/cmd/agent.ts +137 -0
  20. package/src/cmd/auth.ts +50 -0
  21. package/src/cmd/knowledge.ts +171 -0
  22. package/src/cmd/server.ts +11 -0
  23. package/src/cmd/skill.ts +220 -0
  24. package/src/lib/client.ts +274 -0
  25. package/src/lib/formatter.ts +196 -0
  26. package/src/lib/storage.ts +63 -0
  27. package/src/lib/validate.ts +210 -0
  28. package/src/main.ts +235 -0
  29. package/test-regression.sh +273 -0
  30. package/tsconfig.json +17 -0
@@ -0,0 +1,273 @@
1
+ #!/bin/bash
2
+
3
+ CLI_DIR="/Users/lk/Documents/Dev/aims/xuanwu/xuanwu-agents/agent-sdk/agent-skill-system/cli"
4
+ DATA_DIR="$CLI_DIR/data/skills"
5
+ SERVER_URL="http://localhost:3000"
6
+ API_KEY="4567c9e607564e91b3898c46d89cb68dc4e40ec4a52b456699b695cf800fd446"
7
+ ADK="/Users/lk/.bun/bin/bun run $CLI_DIR/src/main.ts"
8
+
9
+ RED='\033[0;31m'
10
+ GREEN='\033[0;32m'
11
+ YELLOW='\033[1;33m'
12
+ NC='\033[0m'
13
+
14
+ PASS=0
15
+ FAIL=0
16
+
17
+ pass() {
18
+ echo -e "${GREEN}✓ PASS${NC}: $1"
19
+ PASS=$((PASS + 1))
20
+ }
21
+
22
+ fail() {
23
+ echo -e "${RED}✗ FAIL${NC}: $1"
24
+ echo -e "${YELLOW} Expected: $2${NC}"
25
+ echo -e "${YELLOW} Actual: $3${NC}"
26
+ FAIL=$((FAIL + 1))
27
+ }
28
+
29
+ log() {
30
+ echo -e "${YELLOW}[TEST]${NC} $1"
31
+ }
32
+
33
+ cleanup() {
34
+ log "Cleaning up..."
35
+ rm -rf "$DATA_DIR/pdf-tool-downloaded"
36
+ rm -f "$DATA_DIR/test-skill.zip"
37
+ $ADK logout 2>/dev/null || true
38
+ }
39
+
40
+ check_output() {
41
+ local output="$1"
42
+ local expected="$2"
43
+ if echo "$output" | grep -q "$expected"; then
44
+ return 0
45
+ fi
46
+ return 1
47
+ }
48
+
49
+ wait_server() {
50
+ log "Waiting for server to be healthy..."
51
+ for i in {1..10}; do
52
+ if curl -s "$SERVER_URL/api/v1/health" | grep -q "healthy"; then
53
+ return 0
54
+ fi
55
+ sleep 1
56
+ done
57
+ echo -e "${RED}Server not healthy after 10 seconds${NC}"
58
+ exit 1
59
+ }
60
+
61
+ wait_server
62
+
63
+ log "========== Regression Test Suite =========="
64
+
65
+ cleanup
66
+
67
+ echo ""
68
+ log "=== TC-CLI-001: adk login 成功登录 ==="
69
+ output=$($ADK login $SERVER_URL $API_KEY 2>&1)
70
+ if echo "$output" | grep -q "登录成功"; then
71
+ pass "TC-CLI-001: Login successful"
72
+ else
73
+ fail "TC-CLI-001: Login failed" "登录成功" "$output"
74
+ fi
75
+
76
+ echo ""
77
+ log "=== Setup: Upload test skills ==="
78
+ $ADK skill upload $DATA_DIR/pdf-tool > /dev/null 2>&1
79
+ $ADK skill upload $DATA_DIR/github-tool > /dev/null 2>&1
80
+
81
+ echo ""
82
+ log "=== TC-CLI-002: adk login 失败 (无效 API Key) ==="
83
+ $ADK logout > /dev/null 2>&1
84
+ output=$($ADK login $SERVER_URL invalid-api-key 2>&1)
85
+ if echo "$output" | grep -q "登录失败"; then
86
+ pass "TC-CLI-002: Login with invalid key fails"
87
+ else
88
+ fail "TC-CLI-002: Should fail with invalid key" "登录失败" "$output"
89
+ fi
90
+
91
+ echo ""
92
+ log "=== TC-CLI-003: adk login 失败 (无效 Server URL) ==="
93
+ output=$($ADK login http://invalid:9999 $API_KEY 2>&1)
94
+ if echo "$output" | grep -q "登录失败"; then
95
+ pass "TC-CLI-003: Login with invalid server fails"
96
+ else
97
+ fail "TC-CLI-003: Should fail with invalid server" "登录失败" "$output"
98
+ fi
99
+
100
+ echo ""
101
+ log "=== TC-CLI-004: adk logout 登出 ==="
102
+ $ADK login $SERVER_URL $API_KEY > /dev/null 2>&1
103
+ output=$($ADK logout 2>&1)
104
+ if echo "$output" | grep -q "已退出登录"; then
105
+ pass "TC-CLI-004: Logout successful"
106
+ else
107
+ fail "TC-CLI-004: Logout failed" "已退出登录" "$output"
108
+ fi
109
+
110
+ echo ""
111
+ log "=== TC-CLI-005: adk logout 未登录时 ==="
112
+ $ADK logout > /dev/null 2>&1
113
+ output=$($ADK logout 2>&1)
114
+ if echo "$output" | grep -q "未登录"; then
115
+ pass "TC-CLI-005: Logout when not logged in"
116
+ else
117
+ fail "TC-CLI-005: Should show not logged in" "未登录" "$output"
118
+ fi
119
+
120
+ echo ""
121
+ log "=== TC-CLI-006: adk skill ls 列出所有 Skills ==="
122
+ $ADK login $SERVER_URL $API_KEY > /dev/null 2>&1
123
+ output=$($ADK skill ls 2>&1)
124
+ if echo "$output" | grep -qE "(Skill|暂无)"; then
125
+ pass "TC-CLI-006: List skills successful"
126
+ else
127
+ fail "TC-CLI-006: List skills failed" "Skill list" "$output"
128
+ fi
129
+
130
+ echo ""
131
+ log "=== TC-CLI-007: adk skill ls 未登录时 ==="
132
+ $ADK logout > /dev/null 2>&1
133
+ output=$($ADK skill ls 2>&1)
134
+ if echo "$output" | grep -qE "未登录|Please login"; then
135
+ pass "TC-CLI-007: List skills without login fails"
136
+ else
137
+ fail "TC-CLI-007: Should fail without login" "未登录" "$output"
138
+ fi
139
+
140
+ echo ""
141
+ log "=== TC-CLI-008: adk skill search 搜索 Skills ==="
142
+ $ADK login $SERVER_URL $API_KEY > /dev/null 2>&1
143
+ output=$($ADK skill search pdf 2>&1)
144
+ if echo "$output" | grep -qE "(找到|暂无)"; then
145
+ pass "TC-CLI-008: Search skills successful"
146
+ else
147
+ fail "TC-CLI-008: Search skills failed" "search result" "$output"
148
+ fi
149
+
150
+ echo ""
151
+ log "=== TC-CLI-009: adk skill info 查看 Skill 详情 ==="
152
+ $ADK login $SERVER_URL $API_KEY > /dev/null 2>&1
153
+ output=$($ADK skill info pdf-tool 2>&1)
154
+ if echo "$output" | grep -qE "(pdf-tool|Name:)"; then
155
+ pass "TC-CLI-009: Skill info successful"
156
+ else
157
+ fail "TC-CLI-009: Skill info failed" "pdf-tool" "$output"
158
+ fi
159
+
160
+ echo ""
161
+ log "=== TC-CLI-010: adk skill info Skill 不存在 ==="
162
+ output=$($ADK skill info non-existent-skill-xyz 2>&1)
163
+ if echo "$output" | grep -qE "(未找到|不存在|not found)"; then
164
+ pass "TC-CLI-010: Info for non-existent skill"
165
+ else
166
+ fail "TC-CLI-010: Should show not found" "not found" "$output"
167
+ fi
168
+
169
+ echo ""
170
+ log "=== TC-CLI-014: adk skill upload 上传 Skill ==="
171
+ output=$($ADK skill upload $DATA_DIR/pdf-tool 2>&1)
172
+ if echo "$output" | grep -qE "(上传成功|Published)"; then
173
+ pass "TC-CLI-014: Upload skill successful"
174
+ else
175
+ fail "TC-CLI-014: Upload skill failed" "upload success" "$output"
176
+ fi
177
+
178
+ echo ""
179
+ log "=== TC-CLI-015: adk skill upload 目录不存在 ==="
180
+ output=$($ADK skill upload $DATA_DIR/non-existent-dir-xyz 2>&1)
181
+ if echo "$output" | grep -qE "(目录不存在|不存在)"; then
182
+ pass "TC-CLI-015: Upload non-existent directory"
183
+ else
184
+ fail "TC-CLI-015: Should fail for non-existent dir" "not found" "$output"
185
+ fi
186
+
187
+ echo ""
188
+ log "=== TC-CLI-016: adk skill upload SKILL.md 缺失 ==="
189
+ output=$($ADK skill upload $DATA_DIR/invalid-skill 2>&1)
190
+ if echo "$output" | grep -qE "(缺少|无效|SKILL.md)"; then
191
+ pass "TC-CLI-016: Upload invalid skill without SKILL.md"
192
+ else
193
+ fail "TC-CLI-016: Should fail without SKILL.md" "SKILL.md" "$output"
194
+ fi
195
+
196
+ echo ""
197
+ log "=== TC-CLI-017: adk skill my 查看我的发布 ==="
198
+ output=$($ADK skill my 2>&1)
199
+ if echo "$output" | grep -qE "(发布|Skill|暂无)"; then
200
+ pass "TC-CLI-017: My skills listed"
201
+ else
202
+ fail "TC-CLI-017: My skills failed" "my skills" "$output"
203
+ fi
204
+
205
+ echo ""
206
+ log "=== TC-CLI-020: adk skill validate 验证有效 Skill ==="
207
+ output=$($ADK skill validate $DATA_DIR/pdf-tool 2>&1)
208
+ if echo "$output" | grep -qE "(通过|Valid)"; then
209
+ pass "TC-CLI-020: Validate valid skill"
210
+ else
211
+ fail "TC-CLI-020: Validate valid skill failed" "valid" "$output"
212
+ fi
213
+
214
+ echo ""
215
+ log "=== TC-CLI-021: adk skill validate 验证无效 Skill ==="
216
+ output=$($ADK skill validate $DATA_DIR/invalid-skill 2>&1)
217
+ if echo "$output" | grep -qE "(失败|Invalid|错误)"; then
218
+ pass "TC-CLI-021: Validate invalid skill"
219
+ else
220
+ fail "TC-CLI-021: Should detect invalid skill" "invalid" "$output"
221
+ fi
222
+
223
+ echo ""
224
+ log "=== TC-CLI-011: adk skill download 下载 Skill ==="
225
+ output=$($ADK skill download pdf-tool $DATA_DIR 2>&1)
226
+ if echo "$output" | grep -qE "(已下载)"; then
227
+ if [ -f "$DATA_DIR/pdf-tool.zip" ]; then
228
+ pass "TC-CLI-011: Download skill successful"
229
+ else
230
+ fail "TC-CLI-011: Download file not found" "pdf-tool.zip exists" "file not found"
231
+ fi
232
+ else
233
+ fail "TC-CLI-011: Download skill failed" "download success" "$output"
234
+ fi
235
+
236
+ echo ""
237
+ log "=== TC-CLI-013: adk skill download Skill 不存在 ==="
238
+ output=$($ADK skill download non-existent-skill-xyz 2>&1)
239
+ if echo "$output" | grep -qE "(未找到|不存在|not found)"; then
240
+ pass "TC-CLI-013: Download non-existent skill"
241
+ else
242
+ fail "TC-CLI-013: Should fail for non-existent" "not found" "$output"
243
+ fi
244
+
245
+ echo ""
246
+ log "=== TC-CLI-019: adk skill delete 无权限 (先上传自己的skill再删除) ==="
247
+ output=$($ADK skill upload $DATA_DIR/github-tool 2>&1)
248
+ if echo "$output" | grep -qE "(上传成功|Published)"; then
249
+ uploaded=true
250
+ else
251
+ uploaded=false
252
+ fi
253
+
254
+ if [ "$uploaded" = true ]; then
255
+ output=$($ADK skill delete github-tool 2>&1)
256
+ if echo "$output" | grep -qE "(已删除|删除成功|Deleted)"; then
257
+ pass "TC-CLI-019: Delete own skill"
258
+ else
259
+ fail "TC-CLI-019: Delete own skill failed" "deleted" "$output"
260
+ fi
261
+ else
262
+ fail "TC-CLI-019: Could not upload test skill" "upload success" "$output"
263
+ fi
264
+
265
+ echo ""
266
+ log "========== Test Summary =========="
267
+ echo -e "${GREEN}Passed: $PASS${NC}"
268
+ echo -e "${RED}Failed: $FAIL${NC}"
269
+
270
+ if [ $FAIL -gt 0 ]; then
271
+ exit 1
272
+ fi
273
+ exit 0
package/tsconfig.json ADDED
@@ -0,0 +1,17 @@
1
+ {
2
+ "compilerOptions": {
3
+ "lib": ["ESNext"],
4
+ "target": "ESNext",
5
+ "module": "ESNext",
6
+ "moduleResolution": "bundler",
7
+ "strict": true,
8
+ "esModuleInterop": true,
9
+ "skipLibCheck": true,
10
+ "resolveJsonModule": true,
11
+ "paths": {
12
+ "@pkg/*": ["../pkg/*"]
13
+ }
14
+ },
15
+ "include": ["src/**/*"],
16
+ "exclude": ["node_modules"]
17
+ }