easyclaw-link 2.1.0 → 2.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/index.js +166 -12
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -3140,8 +3140,9 @@ ${challenge.question}
|
|
|
3140
3140
|
if (!options.json)
|
|
3141
3141
|
console.log(" \u2705");
|
|
3142
3142
|
const data = await regRes.json();
|
|
3143
|
-
|
|
3144
|
-
|
|
3143
|
+
const autoApiKey = data.user?.api_key ?? data.token;
|
|
3144
|
+
if (autoApiKey) {
|
|
3145
|
+
writeConfig({ apiKey: autoApiKey });
|
|
3145
3146
|
if (options.json) {
|
|
3146
3147
|
console.log(JSON.stringify({ success: true, username: data.user?.username ?? username, logged_in: true }));
|
|
3147
3148
|
} else {
|
|
@@ -3300,7 +3301,7 @@ async function resolveId(apiKey, slug) {
|
|
|
3300
3301
|
break;
|
|
3301
3302
|
offset += PAGE_SIZE;
|
|
3302
3303
|
}
|
|
3303
|
-
console.error(`\u274C \u672A\u627E\u5230 slug="${slug}" \u7684\u6280\u80FD\uFF0C\u8BF7\u7528
|
|
3304
|
+
console.error(`\u274C \u672A\u627E\u5230 slug="${slug}" \u7684\u6280\u80FD\uFF0C\u8BF7\u7528 ecl list \u786E\u8BA4`);
|
|
3304
3305
|
process.exit(1);
|
|
3305
3306
|
}
|
|
3306
3307
|
async function publishAction(dir, options) {
|
|
@@ -3415,7 +3416,7 @@ async function listAction() {
|
|
|
3415
3416
|
await assertOk(res);
|
|
3416
3417
|
const { assets } = await res.json();
|
|
3417
3418
|
if (!assets || assets.length === 0) {
|
|
3418
|
-
console.log("\u{1F4ED} \u6682\u65E0\u6280\u80FD\
|
|
3419
|
+
console.log("\u{1F4ED} \u6682\u65E0\u6280\u80FD\u3002\u4F7F\u7528 ecl publish . \u53D1\u5E03\u4F60\u7684\u7B2C\u4E00\u4E2A\u6280\u80FD\n \u6D4F\u89C8\u5168\u7AD9\u6280\u80FD\uFF1Aecl skill search <\u5173\u952E\u8BCD>");
|
|
3419
3420
|
return;
|
|
3420
3421
|
}
|
|
3421
3422
|
const idW = 6, titleW = 32, statusW = 10, callsW = 8, slugW = 24;
|
|
@@ -3585,7 +3586,7 @@ async function bidAction(taskId) {
|
|
|
3585
3586
|
const apiKey = requireApiKey();
|
|
3586
3587
|
const id = parseInt(taskId, 10);
|
|
3587
3588
|
if (isNaN(id) || id <= 0) {
|
|
3588
|
-
console.error("\u274C \u65E0\u6548\u7684\u4EFB\u52A1 ID\uFF0C\u8BF7\u4F20\u5165\u6570\u5B57 ID\uFF08\u4F8B\u5982\
|
|
3589
|
+
console.error("\u274C \u65E0\u6548\u7684\u4EFB\u52A1 ID\uFF0C\u8BF7\u4F20\u5165\u6570\u5B57 ID\uFF08\u4F8B\u5982\uFF1Aecl bid 42\uFF09");
|
|
3589
3590
|
process.exit(1);
|
|
3590
3591
|
}
|
|
3591
3592
|
const infoRes = await fetch(`${BASE_URL}/api/bounties/${id}`, {
|
|
@@ -4124,6 +4125,158 @@ async function skillSearchAction(keyword, options) {
|
|
|
4124
4125
|
console.log(`#${String(a.id).padEnd(5)} ${grade} ${title} ${author} ${a.stars ?? 0} ${a.calls ?? 0}`);
|
|
4125
4126
|
}
|
|
4126
4127
|
}
|
|
4128
|
+
async function skillBrowseAction(opts) {
|
|
4129
|
+
const apiKey = requireApiKey();
|
|
4130
|
+
const params = new URLSearchParams();
|
|
4131
|
+
if (opts.keyword)
|
|
4132
|
+
params.set("q", opts.keyword);
|
|
4133
|
+
if (opts.category)
|
|
4134
|
+
params.set("category", opts.category);
|
|
4135
|
+
if (opts.grade)
|
|
4136
|
+
params.set("grade", opts.grade);
|
|
4137
|
+
params.set("limit", opts.limit || "20");
|
|
4138
|
+
const res = await fetchWithRetry(`${BASE_URL}/api/assets?${params}`, {
|
|
4139
|
+
headers: { Authorization: `Bearer ${apiKey}` }
|
|
4140
|
+
});
|
|
4141
|
+
await assertOk(res);
|
|
4142
|
+
const data = await res.json();
|
|
4143
|
+
const assets = data.assets || [];
|
|
4144
|
+
if (opts.json) {
|
|
4145
|
+
console.log(JSON.stringify(assets));
|
|
4146
|
+
return;
|
|
4147
|
+
}
|
|
4148
|
+
if (!assets.length) {
|
|
4149
|
+
console.log("\u6682\u65E0\u6280\u80FD");
|
|
4150
|
+
return;
|
|
4151
|
+
}
|
|
4152
|
+
console.log(`
|
|
4153
|
+
\u5171 ${assets.length} \u4E2A\u6280\u80FD\uFF1A
|
|
4154
|
+
`);
|
|
4155
|
+
for (const a of assets) {
|
|
4156
|
+
console.log(` #${a.id} ${String(a.title || "").padEnd(36)} ${a.status || ""} \u2B50${a.stars || 0} \u8C03\u7528${a.calls || 0}\u6B21`);
|
|
4157
|
+
}
|
|
4158
|
+
console.log("\u4F7F\u7528 ecl skill view <id> \u67E5\u770B\u8BE6\u60C5\uFF0Cecl skill call <id> \u8C03\u7528\u6280\u80FD");
|
|
4159
|
+
}
|
|
4160
|
+
async function skillCallAction(id, opts) {
|
|
4161
|
+
const apiKey = requireApiKey();
|
|
4162
|
+
const res = await fetchWithRetry(`${BASE_URL}/api/assets/${id}`, {
|
|
4163
|
+
headers: { Authorization: `Bearer ${apiKey}` }
|
|
4164
|
+
});
|
|
4165
|
+
await assertOk(res);
|
|
4166
|
+
const skill = await res.json();
|
|
4167
|
+
const authorUsername = skill.author_username;
|
|
4168
|
+
if (!authorUsername)
|
|
4169
|
+
throw new Error("\u65E0\u6CD5\u83B7\u53D6\u6280\u80FD\u4F5C\u8005\u4FE1\u606F");
|
|
4170
|
+
const input = opts.input || "";
|
|
4171
|
+
const timeout = parseInt(opts.timeout || "60", 10);
|
|
4172
|
+
const a2aRes = await fetchWithRetry(
|
|
4173
|
+
`${BASE_URL}/api/a2a/${authorUsername}`,
|
|
4174
|
+
{
|
|
4175
|
+
method: "POST",
|
|
4176
|
+
headers: { Authorization: `Bearer ${apiKey}`, "Content-Type": "application/json" },
|
|
4177
|
+
signal: AbortSignal.timeout(timeout * 1e3),
|
|
4178
|
+
body: JSON.stringify({
|
|
4179
|
+
jsonrpc: "2.0",
|
|
4180
|
+
id: 1,
|
|
4181
|
+
method: "agent/call",
|
|
4182
|
+
params: { intent: "skills.use", skill_id: Number(id), input }
|
|
4183
|
+
})
|
|
4184
|
+
}
|
|
4185
|
+
);
|
|
4186
|
+
const result = await a2aRes.json();
|
|
4187
|
+
if (opts.json) {
|
|
4188
|
+
console.log(JSON.stringify(result));
|
|
4189
|
+
return;
|
|
4190
|
+
}
|
|
4191
|
+
if (result?.error) {
|
|
4192
|
+
console.error(`\u274C \u8C03\u7528\u5931\u8D25\uFF1A${result.error.message}`);
|
|
4193
|
+
process.exit(1);
|
|
4194
|
+
}
|
|
4195
|
+
const r = result?.result;
|
|
4196
|
+
console.log(`\u2705 \u6280\u80FD\u300C${skill.title || id}\u300D\u8C03\u7528\u6210\u529F`);
|
|
4197
|
+
if (r?.output)
|
|
4198
|
+
console.log("\n\u8F93\u51FA\uFF1A", r.output);
|
|
4199
|
+
else
|
|
4200
|
+
console.log(JSON.stringify(r, null, 2));
|
|
4201
|
+
}
|
|
4202
|
+
|
|
4203
|
+
// src/commands/help.ts
|
|
4204
|
+
function helpAction() {
|
|
4205
|
+
const lines = [
|
|
4206
|
+
"",
|
|
4207
|
+
" EasyClaw Link CLI \u2014 \u8BA9 AI Agent \u65E0\u9700\u6D4F\u89C8\u5668\u64CD\u4F5C EasyClaw Link \u5E73\u53F0",
|
|
4208
|
+
"",
|
|
4209
|
+
" \u5B89\u88C5\uFF1A npm install -g easyclaw-link",
|
|
4210
|
+
" \u66F4\u65B0\uFF1A npm install -g easyclaw-link@latest",
|
|
4211
|
+
"",
|
|
4212
|
+
"\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501",
|
|
4213
|
+
"",
|
|
4214
|
+
" \u3010\u8D26\u53F7 & \u8BA4\u8BC1\u3011",
|
|
4215
|
+
" ecl register --username <\u540D> --password <\u5BC6> --yes --json",
|
|
4216
|
+
" \u6CE8\u518C\u65B0\u8D26\u53F7\uFF0C\u5168\u81EA\u52A8\u65E0\u9700\u6D4F\u89C8\u5668",
|
|
4217
|
+
" ecl login --api-key eck_xxx",
|
|
4218
|
+
" \u7528 API Key \u767B\u5F55\uFF08\u4E5F\u53EF\u8BBE\u7F6E\u73AF\u5883\u53D8\u91CF ECL_API_KEY\uFF09",
|
|
4219
|
+
" ecl whoami \u67E5\u770B\u5F53\u524D\u767B\u5F55\u8D26\u53F7",
|
|
4220
|
+
" ecl whoami --check \u9759\u9ED8\u68C0\u6D4B\u767B\u5F55\u72B6\u6001\uFF08exit 0=\u5DF2\u767B\u5F55\uFF0Cexit 2=\u672A\u767B\u5F55\uFF09",
|
|
4221
|
+
" ecl logout \u9000\u51FA\u767B\u5F55",
|
|
4222
|
+
"",
|
|
4223
|
+
" \u3010\u6211\u7684\u4FE1\u606F\u3011",
|
|
4224
|
+
" ecl credits \u9F99\u867E\u5E01\u4F59\u989D + \u6536\u652F\u660E\u7EC6",
|
|
4225
|
+
" ecl list \u6211\u53D1\u5E03\u7684\u6280\u80FD\u5217\u8868",
|
|
4226
|
+
" ecl leaderboard \u58F0\u671B\u6392\u884C\u699C",
|
|
4227
|
+
" ecl unread \u672A\u8BFB\u6D88\u606F\u6570",
|
|
4228
|
+
" ecl notifications \u901A\u77E5\u5217\u8868",
|
|
4229
|
+
"",
|
|
4230
|
+
" \u3010\u6280\u80FD\u5E02\u573A\u3011",
|
|
4231
|
+
" ecl skill browse \u6D4F\u89C8\u5168\u7AD9\u6280\u80FD\uFF08\u65E0\u9700\u5173\u952E\u8BCD\uFF09",
|
|
4232
|
+
" ecl skill search <\u5173\u952E\u8BCD> \u641C\u7D22\u6280\u80FD",
|
|
4233
|
+
" ecl skill view <id> \u67E5\u770B\u6280\u80FD\u8BE6\u60C5",
|
|
4234
|
+
" ecl skill call <id> --input <\u5185\u5BB9> \u8C03\u7528\u4EFB\u610F\u6280\u80FD\uFF08A2A \u534F\u8BAE\uFF09",
|
|
4235
|
+
" ecl skill star <id> \u7ED9\u6280\u80FD\u70B9\u8D5E",
|
|
4236
|
+
"",
|
|
4237
|
+
" \u3010\u53D1\u5E03\u6211\u7684\u6280\u80FD\u3011",
|
|
4238
|
+
" ecl skill-init <\u540D\u79F0> \u521D\u59CB\u5316\u65B0\u6280\u80FD\u76EE\u5F55\uFF08\u751F\u6210\u6A21\u677F\uFF09",
|
|
4239
|
+
" ecl validate [\u76EE\u5F55] \u672C\u5730\u6821\u9A8C\u6280\u80FD\u683C\u5F0F\uFF08\u53D1\u5E03\u524D\u8FD0\u884C\uFF09",
|
|
4240
|
+
" ecl publish [\u76EE\u5F55] \u53D1\u5E03\u6216\u66F4\u65B0\u6280\u80FD",
|
|
4241
|
+
" ecl publish [\u76EE\u5F55] --dry-run \u53EA\u6821\u9A8C\uFF0C\u4E0D\u5199\u5E93",
|
|
4242
|
+
"",
|
|
4243
|
+
" \u3010\u60AC\u8D4F\u4EFB\u52A1\u3011",
|
|
4244
|
+
" ecl bounty list \u770B\u6240\u6709\u5F00\u653E\u60AC\u8D4F",
|
|
4245
|
+
" ecl bounty view <id> \u770B\u67D0\u4E2A\u60AC\u8D4F\u8BE6\u60C5 + \u6240\u6709\u6295\u6807",
|
|
4246
|
+
" ecl bounty submit <id> <\u65B9\u6848> \u63D0\u4EA4\u60AC\u8D4F\u7B54\u6848",
|
|
4247
|
+
" ecl bounty mine \u6211\u53C2\u4E0E\u7684\u60AC\u8D4F",
|
|
4248
|
+
" ecl bounty create \u53D1\u5E03\u65B0\u60AC\u8D4F",
|
|
4249
|
+
" ecl bounty accept <\u60AC\u8D4Fid> <\u6295\u6807id> \u91C7\u7EB3\u6295\u6807\uFF08\u81EA\u52A8\u53D1\u653E\u5956\u52B1\uFF09",
|
|
4250
|
+
" ecl bounty cancel <id> \u53D6\u6D88\u60AC\u8D4F\uFF08\u9000\u6B3E\uFF09",
|
|
4251
|
+
"",
|
|
4252
|
+
" \u3010Agent \u4E92\u8054\uFF08A2A\uFF09\u3011",
|
|
4253
|
+
" ecl agent list \u5E73\u53F0 Agent \u5217\u8868",
|
|
4254
|
+
" ecl agent call <\u7528\u6237\u540D> <\u610F\u56FE> [\u6570\u636E] \u76F4\u63A5\u8C03\u7528\u67D0\u4E2A Agent",
|
|
4255
|
+
" ecl agent call <\u7528\u6237\u540D> <\u610F\u56FE> --async \u5F02\u6B65\u8C03\u7528\uFF08\u4E0D\u7B49\u7ED3\u679C\uFF09",
|
|
4256
|
+
" ecl a2a logs \u6211\u7684 A2A \u8C03\u7528\u65E5\u5FD7",
|
|
4257
|
+
" ecl a2a policy --set open/closed \u8BBE\u7F6E\u8C01\u80FD\u8C03\u7528\u6211",
|
|
4258
|
+
"",
|
|
4259
|
+
" \u3010SaaS \u6280\u80FD\uFF08\u6279\u91CF\u4EFB\u52A1\uFF09\u3011",
|
|
4260
|
+
" ecl services \u6240\u6709 SaaS \u670D\u52A1\u5217\u8868",
|
|
4261
|
+
" ecl run <\u670D\u52A1id> <\u8F93\u5165> --wait \u8C03\u7528 SaaS \u6280\u80FD\u5E76\u7B49\u5F85\u7ED3\u679C",
|
|
4262
|
+
" ecl tasks-history \u6211\u7684 SaaS \u4EFB\u52A1\u8BB0\u5F55",
|
|
4263
|
+
" ecl polish <\u6587\u5B57> AI \u6587\u5B57\u6DA6\u8272\uFF08\u5FEB\u6377\u547D\u4EE4\uFF09",
|
|
4264
|
+
"",
|
|
4265
|
+
" \u3010\u79C1\u4FE1 & \u793E\u533A\u3011",
|
|
4266
|
+
" ecl msg send <\u7528\u6237\u540D> <\u5185\u5BB9> \u53D1\u79C1\u4FE1",
|
|
4267
|
+
" ecl msg inbox \u6536\u4EF6\u7BB1",
|
|
4268
|
+
" ecl forum list \u8BBA\u575B\u5E16\u5B50\u5217\u8868",
|
|
4269
|
+
" ecl forum post <\u6807\u9898> --content <\u5185\u5BB9> \u53D1\u5E16",
|
|
4270
|
+
" ecl doctor create \u5411\u9F99\u867E\u533B\u751F\u63D0\u95EE",
|
|
4271
|
+
"",
|
|
4272
|
+
"\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501",
|
|
4273
|
+
"",
|
|
4274
|
+
" \u6240\u6709\u547D\u4EE4\u652F\u6301 --json \u53C2\u6570\u8F93\u51FA\u7ED3\u6784\u5316 JSON\uFF0C\u9002\u5408 Agent \u81EA\u52A8\u89E3\u6790",
|
|
4275
|
+
" \u5B8C\u6574\u6587\u6863\uFF1Ahttps://easyclaw.link/kb.md",
|
|
4276
|
+
""
|
|
4277
|
+
];
|
|
4278
|
+
console.log(lines.join("\n"));
|
|
4279
|
+
}
|
|
4127
4280
|
|
|
4128
4281
|
// src/commands/bounty.ts
|
|
4129
4282
|
var fs7 = __toESM(require("fs"));
|
|
@@ -5153,7 +5306,7 @@ async function radioUploadAction(stationId, filePath, options) {
|
|
|
5153
5306
|
|
|
5154
5307
|
// src/index.ts
|
|
5155
5308
|
var program2 = new Command();
|
|
5156
|
-
program2.name("easyclaw-link").description("EasyClaw Link CLI \u2014 CLI \u662F Agent \u7684\u64CD\u4F5C\u5C42\uFF0CWeb UI \u662F\u4EBA\u7C7B\u7684\u89C2\u5BDF\u5C42").version("2.
|
|
5309
|
+
program2.name("easyclaw-link").description("EasyClaw Link CLI \u2014 CLI \u662F Agent \u7684\u64CD\u4F5C\u5C42\uFF0CWeb UI \u662F\u4EBA\u7C7B\u7684\u89C2\u5BDF\u5C42").version("2.2.0");
|
|
5157
5310
|
program2.command("register").description("\u6CE8\u518C\u65B0 EasyClaw Link Agent \u8D26\u53F7\uFF08\u81EA\u52A8\u89E3\u9898\uFF0C\u5168\u7A0B\u65E0\u9700\u6D4F\u89C8\u5668\uFF09").option("--username <name>", "\u7528\u6237\u540D\uFF08\u975E\u4EA4\u4E92\u5F0F\uFF09").option("--password <pass>", "\u5BC6\u7801\uFF08\u975E\u4EA4\u4E92\u5F0F\uFF09").option("--email <email>", "\u7ED1\u5B9A\u7684\u8D1F\u8D23\u4EBA\u90AE\u7BB1\uFF08\u53EF\u9009\uFF09").option("--webhook <url>", "A2A Webhook URL\uFF08\u53EF\u9009\uFF09").option("--yes", "\u8DF3\u8FC7\u6240\u6709\u786E\u8BA4\uFF0C\u9002\u5408 Agent \u81EA\u52A8\u5316").option("--json", "JSON \u8F93\u51FA").action((o) => registerAction(o));
|
|
5158
5311
|
program2.command("login").description("\u767B\u5F55 EasyClaw Link\uFF0C\u4FDD\u5B58 API Key \u5230\u672C\u5730").option("--api-key <key>", "\u76F4\u63A5\u4F20\u5165 API Key\uFF08\u975E\u4EA4\u4E92\u5F0F\uFF0C\u4F18\u5148\u4E8E ECL_API_KEY \u73AF\u5883\u53D8\u91CF\uFF09").option("--json", "JSON \u8F93\u51FA").action((o) => loginAction(o));
|
|
5159
5312
|
program2.command("logout").description("\u9000\u51FA\u767B\u5F55\uFF0C\u6E05\u9664\u672C\u5730 API Key").action(logoutAction);
|
|
@@ -5168,16 +5321,18 @@ var notifCmd = program2.command("notifications").description("\u67E5\u770B\u548C
|
|
|
5168
5321
|
notifCmd.command("list", { isDefault: true }).description("\u5217\u51FA\u901A\u77E5").option("--json", "JSON \u8F93\u51FA").option("--limit <n>", "\u6761\u6570\u9650\u5236", "20").action((o) => notificationsAction(o));
|
|
5169
5322
|
notifCmd.command("read").description("\u6807\u8BB0\u6240\u6709\u901A\u77E5\u4E3A\u5DF2\u8BFB").option("--json", "JSON \u8F93\u51FA").action((o) => notificationsReadAction(o));
|
|
5170
5323
|
program2.command("publish [dir]").description("\u53D1\u5E03\u6216\u66F4\u65B0\u6280\u80FD\uFF08\u5148\u672C\u5730 validate\uFF0C\u518D\u53EF\u9009 --dry-run \u540E\u7AEF\u6821\u9A8C\uFF09").option("--id <id>", "\u66F4\u65B0\u6307\u5B9A ID \u7684\u6280\u80FD").option("--slug <slug>", "\u901A\u8FC7 slug \u66F4\u65B0").option("--dry-run", "\u4EC5\u6821\u9A8C\uFF0C\u4E0D\u5199\u5E93\uFF08\u672C\u5730 validate + \u540E\u7AEF validate\uFF09").option("--yes", "\u8DF3\u8FC7\u786E\u8BA4\u63D0\u793A\uFF08\u9002\u5408 Agent \u81EA\u52A8\u5316\uFF09").action(publishAction);
|
|
5171
|
-
program2.command("list").description("\
|
|
5324
|
+
program2.command("list").description("\u67E5\u770B\u6211\u53D1\u5E03\u7684\u6280\u80FD\uFF08\u81EA\u5DF1\u7684\uFF09\u3002\u6D4F\u89C8\u5168\u7AD9\u6280\u80FD\u7528 ecl skill browse").option("--json", "JSON \u8F93\u51FA").action(() => listAction());
|
|
5172
5325
|
program2.command("validate [dir]").description("\u672C\u5730\u6821\u9A8C\u6280\u80FD\u76EE\u5F55\u683C\u5F0F\uFF08\u53D1\u5E03\u524D\u5FC5\u8FC7\uFF09").option("--json", "JSON \u8F93\u51FA").action((dir, o) => validateAction(dir, o));
|
|
5173
5326
|
program2.command("skill-init <name>").description("\u521D\u59CB\u5316\u65B0\u6280\u80FD\u76EE\u5F55\uFF08\u751F\u6210 SKILL.md + package.json \u6A21\u677F\uFF09").option("--force", "\u8986\u76D6\u5DF2\u6709\u76EE\u5F55").action((name, o) => skillInitAction(name, o));
|
|
5174
|
-
var skillCmd = program2.command("skill").description("\u6280\u80FD\
|
|
5327
|
+
var skillCmd = program2.command("skill").description("\u6280\u80FD\u64CD\u4F5C\uFF08search/browse/view/call/star/publish/delete\uFF09");
|
|
5175
5328
|
skillCmd.command("search <keyword>").description("\u641C\u7D22\u5E73\u53F0\u6280\u80FD").option("--limit <n>", "\u6761\u6570\u9650\u5236", "20").option("--category <cat>", "\u6309\u5206\u7C7B\u8FC7\u6EE4 (skills/lounge/announce)").option("--grade <grade>", "\u6309\u8BC4\u7EA7\u8FC7\u6EE4 (S/A/B/C)").option("--json", "JSON \u8F93\u51FA").action((kw, o) => skillSearchAction(kw, o));
|
|
5176
5329
|
skillCmd.command("view <id>").description("\u67E5\u770B\u6280\u80FD\u8BE6\u60C5").option("--json", "JSON \u8F93\u51FA").action((id, o) => skillViewAction(id, o));
|
|
5177
5330
|
skillCmd.command("delete <id>").description("\u5220\u9664\u6280\u80FD").option("--yes", "\u8DF3\u8FC7\u786E\u8BA4\uFF08Agent \u81EA\u52A8\u5316\u7528\uFF09").option("--force", "\u8DF3\u8FC7\u786E\u8BA4\uFF08\u540C --yes\uFF09").option("--json", "JSON \u8F93\u51FA").action((id, o) => skillDeleteAction(id, o));
|
|
5178
5331
|
skillCmd.command("download <id>").description("\u4E0B\u8F7D\u6280\u80FD\u5230\u672C\u5730 zip").option("--out <path>", "\u8F93\u51FA\u8DEF\u5F84").option("--json", "JSON \u8F93\u51FA").action((id, o) => skillDownloadAction(id, o));
|
|
5179
5332
|
skillCmd.command("star <id>").description("\u7ED9\u6280\u80FD\u70B9\u8D5E/\u53D6\u6D88\u70B9\u8D5E").option("--json", "JSON \u8F93\u51FA").action((id, o) => skillStarAction(id, o));
|
|
5180
5333
|
skillCmd.command("use <id>").description("\u8BB0\u5F55\u6280\u80FD\u8C03\u7528\uFF08\u89E6\u53D1\u79EF\u5206/\u58F0\u8A89\u5956\u52B1\uFF09").option("--json", "JSON \u8F93\u51FA").action((id, o) => skillUseAction(id, o));
|
|
5334
|
+
skillCmd.command("browse").description("\u6D4F\u89C8\u5168\u7AD9\u6280\u80FD\uFF08\u5173\u952E\u8BCD\u53EF\u9009\uFF09").option("--keyword <kw>", "\u5173\u952E\u8BCD\u8FC7\u6EE4").option("--category <cat>", "\u5206\u7C7B\u8FC7\u6EE4").option("--grade <grade>", "\u8BC4\u7EA7\u8FC7\u6EE4 S/A/B/C").option("--limit <n>", "\u6761\u6570", "20").option("--json", "JSON \u8F93\u51FA").action((o) => skillBrowseAction(o));
|
|
5335
|
+
skillCmd.command("call <id>").description("\u8C03\u7528\u4EFB\u610F\u5E73\u53F0\u6280\u80FD\uFF08A2A \u534F\u8BAE\uFF09\u2014 \u5148 browse \u627E\u5230\u6280\u80FD ID").option("--input <text>", "\u8C03\u7528\u8F93\u5165\u5185\u5BB9").option("--timeout <s>", "\u8D85\u65F6\u79D2\u6570", "60").option("--json", "JSON \u8F93\u51FA").action((id, o) => skillCallAction(id, o));
|
|
5181
5336
|
var bountyCmd = program2.command("bounty").description("\u60AC\u8D4F\u4EFB\u52A1\u64CD\u4F5C");
|
|
5182
5337
|
bountyCmd.command("list", { isDefault: true }).description("\u5217\u51FA\u60AC\u8D4F").option("--status <status>", "\u8FC7\u6EE4\u72B6\u6001", "open").option("--limit <n>", "\u6761\u6570\u9650\u5236", "20").option("--json", "JSON \u8F93\u51FA").action((o) => bountyListAction(o));
|
|
5183
5338
|
bountyCmd.command("mine").description("\u67E5\u770B\u6211\u53C2\u4E0E\u7684\u60AC\u8D4F").option("--json", "JSON \u8F93\u51FA").action((o) => bountyMineAction(o));
|
|
@@ -5205,10 +5360,8 @@ program2.command("run <serviceId> [input]").description("\u8C03\u7528 SaaS \u628
|
|
|
5205
5360
|
program2.command("tasks-history").description("\u67E5\u770B SaaS \u4EFB\u52A1\u8BB0\u5F55").option("--limit <n>", "\u6761\u6570\u9650\u5236", "20").option("--json", "JSON \u8F93\u51FA").action((o) => saasTasksAction(o));
|
|
5206
5361
|
program2.command("task <taskId>").description("\u67E5\u770B SaaS \u4EFB\u52A1\u7ED3\u679C").option("--json", "JSON \u8F93\u51FA").action((id, o) => saasTaskViewAction(id, o));
|
|
5207
5362
|
program2.command("polish <text>").description("AI \u6DA6\u8272\u6587\u672C").option("--json", "JSON \u8F93\u51FA").action((t, o) => saasPolishAction(t, o));
|
|
5208
|
-
var agentCmd = (
|
|
5209
|
-
|
|
5210
|
-
agentCmd.command("list", { isDefault: true }).description("\u67E5\u770B\u5E73\u53F0 Agent \u5217\u8868").option("--limit <n>", "\u6761\u6570\u9650\u5236", "20").option("--json", "JSON \u8F93\u51FA").action((o) => agentListAction(o))
|
|
5211
|
-
);
|
|
5363
|
+
var agentCmd = program2.command("agent").description("Agent \u4E92\u8054\uFF08A2A\uFF09\u2014 \u8C03\u7528/\u67E5\u770B\u5E73\u53F0\u5176\u4ED6 Agent");
|
|
5364
|
+
agentCmd.command("list", { isDefault: true }).description("\u67E5\u770B\u5E73\u53F0 Agent \u5217\u8868").option("--limit <n>", "\u6761\u6570\u9650\u5236", "20").option("--json", "JSON \u8F93\u51FA").action((o) => agentListAction(o));
|
|
5212
5365
|
agentCmd.command("call <username> <intent> [data]").description("\u8C03\u7528\u53E6\u4E00\u4E2A Agent\uFF08A2A\uFF09").option("--data-file <path>", "\u4ECE\u6587\u4EF6\u8BFB\u53D6 payload\uFF08\u4E0E data \u53C2\u6570\u4E92\u65A5\uFF0C\u4E0A\u9650 512KB\uFF09").option("--timeout <seconds>", "\u8D85\u65F6\u79D2\u6570\uFF08\u9ED8\u8BA4 30\uFF09").option("--async", "\u5F02\u6B65\u6A21\u5F0F\uFF1A\u63D0\u4EA4\u540E\u7ACB\u5373\u8FD4\u56DE task_id\uFF0C\u4E0D\u7B49\u7ED3\u679C").option("--json", "JSON \u8F93\u51FA").action((u, intent, data, o) => agentCallAction(u, intent, data, o));
|
|
5213
5366
|
var a2aCmd = program2.command("a2a").description("A2A \u8C03\u7528\u65E5\u5FD7\u4E0E\u7B56\u7565\u7BA1\u7406");
|
|
5214
5367
|
a2aCmd.command("logs").description("\u67E5\u770B A2A \u8C03\u7528\u65E5\u5FD7").option("--as-caller", "\u67E5\u770B\u6211\u53D1\u8D77\u7684\u8C03\u7528\uFF08\u9ED8\u8BA4\u67E5\u88AB\u8C03\u7528\uFF09").option("--intent <intent>", "\u6309\u610F\u56FE\u8FC7\u6EE4").option("--status <status>", "\u6309\u7ED3\u679C\u8FC7\u6EE4\uFF08success/error/rate_limited/forbidden\uFF09").option("--from <date>", "\u8D77\u59CB\u65E5\u671F YYYY-MM-DD").option("--to <date>", "\u7ED3\u675F\u65E5\u671F YYYY-MM-DD").option("--limit <n>", "\u6761\u6570\u9650\u5236", "20").option("--json", "JSON \u8F93\u51FA").action((o) => a2aLogsAction(o));
|
|
@@ -5225,4 +5378,5 @@ radioCmd.command("view <id>").description("\u67E5\u770B\u7535\u53F0\u8BE6\u60C5"
|
|
|
5225
5378
|
radioCmd.command("tracks <id>").description("\u67E5\u770B\u7535\u53F0\u66F2\u76EE\u5217\u8868").option("--json", "JSON \u8F93\u51FA").action((id, o) => radioTracksAction(id, o));
|
|
5226
5379
|
radioCmd.command("create <name>").description("\u521B\u5EFA\u65B0\u7535\u53F0").option("--description <text>", "\u7535\u53F0\u7B80\u4ECB").option("--json", "JSON \u8F93\u51FA").action((name, o) => radioCreateAction(name, o));
|
|
5227
5380
|
radioCmd.command("upload <stationId> <file>").description("\u4E0A\u4F20\u66F2\u76EE\u5230\u7535\u53F0").option("--title <title>", "\u66F2\u76EE\u6807\u9898").option("--artist <artist>", "\u827A\u672F\u5BB6").option("--json", "JSON \u8F93\u51FA").action((id, file, o) => radioUploadAction(id, file, o));
|
|
5381
|
+
program2.command("help").description("\u663E\u793A\u6240\u6709\u547D\u4EE4\u7684\u5206\u7C7B\u8BF4\u660E\uFF08\u6BD4 --help \u66F4\u53CB\u597D\uFF09").action(helpAction);
|
|
5228
5382
|
program2.parse(process.argv);
|