@zshuangmu/agenthub 0.3.8 → 0.4.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 CHANGED
@@ -92,6 +92,9 @@ cd AgentHub && npm install && npm link
92
92
  # 1. 打包你的 OpenClaw workspace
93
93
  agenthub pack --workspace ./my-workspace --config openclaw.json
94
94
 
95
+ # 或指定版本号
96
+ agenthub pack --workspace ./my-workspace --config openclaw.json --version 2.0.0
97
+
95
98
  # 2. 发布到 Registry
96
99
  agenthub publish ./bundles/my-agent.agent --registry ./.registry
97
100
  ```
@@ -138,7 +141,7 @@ agenthub verify code-review-assistant --registry ./.registry --target-workspace
138
141
 
139
142
  | 命令 | 描述 |
140
143
  |------|------|
141
- | `pack` | 打包 workspace 为 Agent Bundle |
144
+ | `pack` | 打包 workspace 为 Agent Bundle(支持 `--version` 指定版本) |
142
145
  | `publish` | 发布到本地 Registry |
143
146
  | `publish-remote` | 发布到远程服务器 |
144
147
  | `search` | 搜索 Registry 中的 Agent |
@@ -150,6 +153,7 @@ agenthub verify code-review-assistant --registry ./.registry --target-workspace
150
153
  | `update` | 更新 Agent 到最新版 |
151
154
  | `rollback` | 回滚 Agent 到指定版本 |
152
155
  | `stats` | 查看 Agent 统计信息 |
156
+ | `doctor` | 诊断 AgentHub 安装和环境问题 |
153
157
  | `serve` | 启动 Web + API 服务 |
154
158
  | `api` | 仅启动 API 服务 |
155
159
  | `web` | 仅启动 Web 前端 |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zshuangmu/agenthub",
3
- "version": "0.3.8",
3
+ "version": "0.4.0",
4
4
  "description": "AI Agent 打包与分发平台 - 一句话打包上传,一键下载获得能力",
5
5
  "type": "module",
6
6
  "main": "src/index.js",
package/src/cli.js CHANGED
@@ -111,11 +111,13 @@ agenthub pack - 打包 Agent
111
111
  --workspace <dir> OpenClaw 工作区目录 (必需)
112
112
  --config <file> openclaw.json 配置文件路径 (必需)
113
113
  --output <dir> 输出目录 (默认: ./bundles)
114
+ --version <ver> 版本号 (默认: 1.0.0)
114
115
  --tags <tags> 标签,逗号分隔
115
116
  --category <cat> 分类
116
117
 
117
118
  示例:
118
119
  agenthub pack --workspace ./my-agent --config ./openclaw.json
120
+ agenthub pack --workspace ./my-agent --config ./openclaw.json --version 2.0.0
119
121
  `,
120
122
  publish: `
121
123
  agenthub publish - 发布 Agent
@@ -284,11 +286,7 @@ function parseArgs(argv) {
284
286
  const options = {};
285
287
  for (let index = 0; index < argv.length; index += 1) {
286
288
  const token = argv[index];
287
- if (token === "--help" || token === "-h") {
288
- options.help = true;
289
- } else if (token === "--version" || token === "-v") {
290
- options.version = true;
291
- } else if (token.startsWith("--")) {
289
+ if (token.startsWith("--")) {
292
290
  const rawKey = token.slice(2);
293
291
  const camelKey = rawKey.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
294
292
  const value = argv[index + 1];
@@ -300,6 +298,10 @@ function parseArgs(argv) {
300
298
  options[rawKey] = true;
301
299
  options[camelKey] = true;
302
300
  }
301
+ } else if (token === "-h") {
302
+ options.help = true;
303
+ } else if (token === "-v") {
304
+ options.version = true;
303
305
  } else {
304
306
  positionals.push(token);
305
307
  }
@@ -311,8 +313,8 @@ async function main() {
311
313
  const { positionals, options } = parseArgs(process.argv.slice(2));
312
314
  const [command, ...rest] = positionals;
313
315
 
314
- // 全局选项
315
- if (options.version) {
316
+ // 全局选项 - only show version if --version/-v is a boolean flag, not a string value
317
+ if (options.version === true) {
316
318
  console.log(`AgentHub v${VERSION}`);
317
319
  return;
318
320
  }
@@ -67,10 +67,11 @@ export async function packCommand(options) {
67
67
  const workspace = path.resolve(options.workspace || process.cwd());
68
68
  const output = path.resolve(options.output ?? "./bundles");
69
69
  const configPath = options.config ? path.resolve(options.config) : null;
70
+ const version = options.version || "1.0.0";
70
71
 
71
72
  // 从工作区名称生成 slug
72
73
  const slug = path.basename(workspace).toLowerCase().replace(/[^a-z0-9-]/g, "-");
73
- const bundleDir = path.join(output, `${slug}-1.0.0.agent`);
74
+ const bundleDir = path.join(output, `${slug}-${version}.agent`);
74
75
 
75
76
  // 1. 扫描工作区
76
77
  const workspaceFiles = await scanWorkspace(workspace);
@@ -99,6 +100,7 @@ export async function packCommand(options) {
99
100
  prompts: workspaceFiles.prompts,
100
101
  tags: options.tags ? options.tags.split(",").map((t) => t.trim()) : [],
101
102
  category: options.category,
103
+ version,
102
104
  });
103
105
 
104
106
  // 5. 验证 MANIFEST
@@ -5,7 +5,7 @@
5
5
 
6
6
  const WORKSPACE_FILES = ["AGENTS.md", "SOUL.md", "USER.md", "IDENTITY.md", "TOOLS.md", "HEARTBEAT.md", "BOOTSTRAP.md"];
7
7
 
8
- export function createManifest({ slug, name, description, author, memoryCounts, openclawTemplate, skills = [], prompts = [], tags = [], category, language = "zh-CN" }) {
8
+ export function createManifest({ slug, name, description, author, memoryCounts, openclawTemplate, skills = [], prompts = [], tags = [], category, language = "zh-CN", version = "1.0.0" }) {
9
9
  const hasModel = openclawTemplate?.agents?.defaults?.model?.primary;
10
10
  const totalMemory = memoryCounts.public + memoryCounts.portable + memoryCounts.private;
11
11
 
@@ -13,7 +13,7 @@ export function createManifest({ slug, name, description, author, memoryCounts,
13
13
  // 基本信息
14
14
  name: name || slug,
15
15
  slug,
16
- version: "1.0.0",
16
+ version,
17
17
  description: description || `OpenClaw agent bundle for ${name || slug}`,
18
18
  author: author || "anonymous",
19
19
  icon: undefined,