siluzan-website-cli 1.0.1-beta.7 → 1.0.1-beta.8

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
@@ -14,15 +14,13 @@ siluzan-website login
14
14
 
15
15
  ## 开通建站
16
16
 
17
- 对话顺序:**先图文选模板,再一次性填站信息**(对齐 TSO)。
17
+ 对话顺序:**`templates catalog`(JSON)→ `present_website_templates` → `present_website_provision_form`(试用)→ create**。
18
18
 
19
19
  ```bash
20
- siluzan-website templates catalog # 套餐+封面+预览,开站第一步
20
+ siluzan-website templates catalog # JSON → present_website_templates
21
21
  siluzan-website templates get --id <siteTemplateId>
22
22
  siluzan-website trial status
23
- siluzan-website bills create --package <packageId> --channel Monthly
24
- siluzan-website bills get --id <billId>
25
- siluzan-website sites create --name "Acme" --region US --package <id> --template <id> --site-lang en_US --admin-lang en_US [--bill <billId>] [--wait]
23
+ siluzan-website sites create --name "Acme" --region US --package <id> --template <id> --site-lang en_US --admin-lang en_US [--wait]
26
24
  siluzan-website sites status --site <guid> --region US
27
25
  siluzan-website sites bind --site <guid> --region US --name "Acme"
28
26
  ```
package/dist/index.js CHANGED
@@ -4234,40 +4234,6 @@ function pickPreviewFields(t) {
4234
4234
  version: readString3(e, "version") || readString3(e, "Version") || "-"
4235
4235
  };
4236
4236
  }
4237
- function printCatalogMarkdown(groups) {
4238
- console.log("\n# \u5EFA\u7AD9\u6A21\u677F\u76EE\u5F55\uFF08\u8BF7\u5148\u9009\u6A21\u677F\uFF09\n");
4239
- console.log("\u5C55\u793A\u89C4\u5219\uFF1A\u6309\u5957\u9910\u5206\u7EC4\uFF1B\u6BCF\u6761\u542B\u5C01\u9762\u56FE\u4E0E\u5728\u7EBF\u9884\u89C8\u94FE\u63A5\uFF08\u4E0E TSO \u5EFA\u7AD9\u4E00\u81F4\uFF09\u3002");
4240
- console.log("\u8BF7\u7528\u6237\u9009\u5B9A **siteTemplateId**\uFF08\u53CA\u6240\u5C5E\u5957\u9910\uFF09\u540E\uFF0C\u518D\u4E00\u6B21\u6027\u6536\u96C6\u5EFA\u7AD9\u8868\u5355\u5B57\u6BB5\u3002\n");
4241
- for (const g of groups) {
4242
- const pkgId = readString3(g, "packageId");
4243
- const pkgName = readString3(g, "packageName") || pkgId;
4244
- const month = g.monthPriceUSD ?? g.MonthPriceUSD ?? "-";
4245
- const year = g.yearlyPriceUSD ?? g.YearlyPriceUSD ?? "-";
4246
- const templates = Array.isArray(g.templates) ? g.templates : [];
4247
- console.log(`## ${pkgName}\uFF08\`${pkgId}\`\uFF09`);
4248
- console.log(`\u6708\u4ED8 USD ${month} / \u5E74\u4ED8\u6708\u4EF7 USD ${year} \xB7 \u6A21\u677F ${templates.length} \u4E2A
4249
- `);
4250
- if (templates.length === 0) {
4251
- console.log("_\u672C\u5957\u9910\u6682\u65E0\u542F\u7528\u6A21\u677F_\n");
4252
- continue;
4253
- }
4254
- for (const raw of templates) {
4255
- const t = asRecord3(raw);
4256
- if (!t) continue;
4257
- const p = pickPreviewFields(t);
4258
- const tags = [p.hot === "true" ? "\u70ED\u95E8" : "", p.neu === "true" ? "\u65B0\u54C1" : ""].filter(Boolean).join(" \xB7 ");
4259
- console.log(`### ${p.name || p.id} \uFF08\`${p.id}\`\uFF09`);
4260
- if (tags) console.log(`\u6807\u7B7E\uFF1A${tags}`);
4261
- console.log(`\u884C\u4E1A\uFF1A${p.industry}`);
4262
- if (p.coverUrl) console.log(`![${p.name || p.id}](${p.coverUrl})`);
4263
- if (p.previewUrl) console.log(`\u5728\u7EBF\u9884\u89C8\uFF1A${p.previewUrl}`);
4264
- console.log("");
4265
- }
4266
- }
4267
- console.log("---");
4268
- console.log("\u4E0B\u4E00\u6B65\uFF1A\u7528\u6237\u786E\u8BA4\u6A21\u677F\u540E\uFF0C\u7528\u4E00\u6B21\u6027\u8868\u5355\u6536\u96C6\uFF1A\u7AD9\u540D\u3001\u533A\u57DF(US|CN)\u3001\u524D\u53F0\u8BED\u8A00\u3001\u540E\u53F0\u8BED\u8A00\u3001\u8BD5\u7528\u6216\u4ED8\u8D39\u3002");
4269
- console.log("\u786E\u8BA4\u8868\u5355\u540E\u6267\u884C\uFF1A`siluzan-website sites create ...`\n");
4270
- }
4271
4237
  async function composeCatalogLocally(config, verbose) {
4272
4238
  const [pkgRaw, tplRaw] = await Promise.all([
4273
4239
  apiFetch2(`${config.apiBaseUrl}/website-provision/packages`, config, {}, verbose),
@@ -4348,7 +4314,7 @@ async function runTemplatesList(opts) {
4348
4314
  \u6A21\u677F\u5217\u8868\uFF08\u5171 ${list.length} \u4E2A\uFF09
4349
4315
  `);
4350
4316
  printCliTable(rows, columns);
4351
- console.log("\n\u56FE\u6587\u76EE\u5F55\uFF1Asiluzan-website templates catalog");
4317
+ console.log("\n\u6A21\u677F\u76EE\u5F55\uFF1Asiluzan-website templates catalog");
4352
4318
  console.log("\u8BE6\u60C5\uFF1Asiluzan-website templates get --id <siteTemplateId>\n");
4353
4319
  }
4354
4320
  async function runTemplatesCatalog(opts) {
@@ -4388,7 +4354,7 @@ async function runTemplatesCatalog(opts) {
4388
4354
  const pkg = opts.package.trim();
4389
4355
  groups = groups.filter((g) => readString3(g, "packageId") === pkg);
4390
4356
  }
4391
- if (opts.json) {
4357
+ if (!opts.table) {
4392
4358
  console.log(
4393
4359
  JSON.stringify(
4394
4360
  {
@@ -4403,11 +4369,6 @@ async function runTemplatesCatalog(opts) {
4403
4369
  );
4404
4370
  return;
4405
4371
  }
4406
- if (opts.markdown !== false) {
4407
- if (usedFallback) console.log("\uFF08\u6570\u636E\u6E90\uFF1ACLI \u56DE\u9000\u62FC\u88C5\uFF09");
4408
- printCatalogMarkdown(groups);
4409
- return;
4410
- }
4411
4372
  for (const g of groups) {
4412
4373
  const pkgId = readString3(g, "packageId");
4413
4374
  const pkgName = readString3(g, "packageName") || pkgId;
@@ -4468,11 +4429,11 @@ async function runTemplatesGet(opts) {
4468
4429
  }
4469
4430
  function register7(program2) {
4470
4431
  const templates = program2.command("templates").description("\u5EFA\u7AD9\u6A21\u677F\uFF08website-provision\uFF09");
4471
- templates.command("catalog").description("\u5957\u9910+\u6A21\u677F\u56FE\u6587\u76EE\u5F55\uFF08\u5BF9\u9F50 TSO\uFF1B\u5BF9\u8BDD\u5F00\u7AD9\u7B2C\u4E00\u6B65\uFF09").option("--package <packageId>", "\u53EA\u663E\u793A\u67D0\u4E00\u5957\u9910").option("--json", "\u8F93\u51FA JSON", false).option("--table", "\u8868\u683C\u8F93\u51FA\uFF08\u9ED8\u8BA4 Markdown \u56FE\u6587\u753B\u5ECA\uFF09", false).option("--verbose", "\u8F93\u51FA\u8BF7\u6C42\u8BE6\u60C5", false).action(async (opts) => {
4432
+ templates.command("catalog").description("\u5957\u9910+\u6A21\u677F\u76EE\u5F55 JSON\uFF08\u4F9B DeerFlow present_website_templates\uFF1B\u5F00\u7AD9\u7B2C\u4E00\u6B65\uFF09").option("--package <packageId>", "\u53EA\u8FD4\u56DE\u67D0\u4E00\u5957\u9910").option("--json", "\u8F93\u51FA JSON\uFF08\u9ED8\u8BA4\u5DF2\u662F JSON\uFF0C\u4FDD\u7559\u517C\u5BB9\uFF09", false).option("--table", "\u7EC8\u7AEF\u8868\u683C\u8F93\u51FA\uFF08\u8C03\u8BD5\u7528\uFF09", false).option("--verbose", "\u8F93\u51FA\u8BF7\u6C42\u8BE6\u60C5", false).action(async (opts) => {
4472
4433
  await runTemplatesCatalog({
4473
4434
  package: opts.package,
4474
- json: opts.json,
4475
- markdown: !opts.table && !opts.json,
4435
+ json: true,
4436
+ table: opts.table,
4476
4437
  verbose: opts.verbose
4477
4438
  });
4478
4439
  });
@@ -40,7 +40,7 @@ Windows 注意:部分 Agent 通过 PowerShell / cmd 代执行时可能失败
40
40
  | `siluzan-website config show/set/clear` | 查看 / 写入凭据 | [references/setup.md](references/setup.md) |
41
41
  | `siluzan-website init` / `update` | 写入 / 刷新 Skill 文件 | [references/setup.md](references/setup.md) |
42
42
  | `siluzan-website packages list` | 可售套餐 | [references/provision.md](references/provision.md) |
43
- | `siluzan-website templates catalog` | **图文选模目录**(套餐+封面+预览,开站第一步) | [references/provision.md](references/provision.md) |
43
+ | `siluzan-website templates catalog` | 模板目录 JSON(开站第一步;交 `present_website_templates`) | [references/provision.md](references/provision.md) |
44
44
  | `siluzan-website templates list/get` | 建站模板列表 / 详情 | [references/provision.md](references/provision.md) |
45
45
  | `siluzan-website trial status` | 试用额度 | [references/provision.md](references/provision.md) |
46
46
  | `siluzan-website bills create/get` | 套餐账单与支付状态 | [references/provision.md](references/provision.md) |
@@ -62,7 +62,7 @@ Windows 注意:部分 Agent 通过 PowerShell / cmd 代执行时可能失败
62
62
  | 用户在做什么 | 先读 | 再执行 |
63
63
  |--------------|------|--------|
64
64
  | 首次安装 / 登录 | `references/setup.md` | `login` 或复用已有 CSO/TSO 凭据 |
65
- | **开通新站 / 选模板建站** | `references/provision.md` | **先** `templates catalog` 图文选模 → **再**一次性表单(站名/区域/语言/试用或付费)→ trial/bills → 确认 → `sites create` |
65
+ | **开通新站 / 选模板建站** | `references/provision.md` | **先** `templates catalog` → **`present_website_templates`** → **`present_website_provision_form`(试用)** → trial → 确认 → `sites create` |
66
66
  | 我有哪些网站 | `references/sites.md` | `sites list`,不要猜 guid |
67
67
  | 加一页 / 改一页正文 | `references/pages.md` | 先 `sites list` 再 `pages add/update` |
68
68
  | 改页面 slug / 状态 / 回收站 | `references/pages.md` | `pages meta` / `pages trash` |
@@ -85,8 +85,8 @@ Windows 注意:部分 Agent 通过 PowerShell / cmd 代执行时可能失败
85
85
  - 写操作(`bills create`、`sites create/bind`、`pages add/update/meta/trash`、`content add/update/trash`、`media upload`、`terms add/update/delete`、`plugins install/update/uninstall/update-helper`、`zasp set/sync`)会立刻生效,执行前必须复述目标与内容,获得用户确认。
86
86
  - 只读(`packages/templates/trial`、`bills get`、`sites list/status`、`pages list/get`、`content types/list/get`、`media list/get`、`terms taxonomies/list`、`search`、`plugins list/catalog/helper-status`、`zasp settings/schema/status/diagnostics`、`config show`)可直接跑。
87
87
  2. **不猜 ID**:站点用 `sites list` 的 `guid`;页面用 `pages list` 的 `id`;套餐/模板用 list 返回的 id。
88
- 3. **先查再写**:改页面前先 `pages list`;**开站必须先 `templates catalog` 选定模板**,再一次性收集站信息表单;创建前再查 `trial status` 或 `bills get`。
89
- 禁止未选模板就追问站名/区域/语言。
88
+ 3. **先查再写**:改页面前先 `pages list`;**开站必须先 `templates catalog` + `present_website_templates` 选定模板**,再 `present_website_provision_form` 收齐试用字段;创建前再查 `trial status`。
89
+ 禁止未选模板就追问站名/区域/语言;禁止在对话里贴 Markdown 封面画廊。
90
90
  4. **只认 API Key**:所有命令走 `x-api-key`。Agent 沙箱只注入 Key,不要向用户要 JWT,也不要设 `SILUZAN_AUTH_TOKEN`,不要直连 ussiteman。
91
91
  5. **命令透明**:用一句话说明意图;用户要细节时再给完整命令。
92
92
  6. **失败先自救**:401 → 重新 `login`;开站失败勿盲目重试 POST;`site_created_unbound` → `sites bind`;helper 404 → 自动升 helper。不要编造成功。
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "slug": "siluzan-website",
3
- "version": "1.0.1-beta.7",
4
- "publishedAt": 1790594348812,
3
+ "version": "1.0.1-beta.8",
4
+ "publishedAt": 1790660435749,
5
5
  "homepage": "https://www.siluzan.com",
6
6
  "source": "https://dev.azure.com/jack4it/Sammamish/_git/siluzan-skill",
7
7
  "requiredBinaries": [
@@ -1,74 +1,64 @@
1
1
  # 对话开通站点(provision)
2
2
 
3
- 通过主站 `website-provision` API 完成:**先选模板(图文)→ 一次性填站信息 → 试用/付费 → 创建**。
4
- 对齐 TSO 建站选模体验。**禁止**直连 ussiteman,**禁止**向用户要 JWT。只使用 API Key + 本 Skill CLI。
3
+ 通过主站 `website-provision` API 完成:**选模板 → 试用表单 → 创建**。
4
+ **禁止**直连 ussiteman,**禁止**向用户要 JWT。只使用 API Key + 本 Skill CLI。
5
+ **禁止**在对话里粘贴 Markdown 封面画廊;图文选模与表单由 DeerFlow `present_*` 工具渲染。
5
6
 
6
7
  ## 对话 SOP(必须按此顺序)
7
8
 
8
- ### 1. 图文选模板(先于任何站信息)
9
+ ### 1. 拉取模板目录(JSON)
9
10
 
10
11
  ```bash
11
12
  siluzan-website templates catalog
12
- # 或:siluzan-website templates catalog --json
13
13
  # 或只看某套餐:siluzan-website templates catalog --package BasicEdition
14
14
  ```
15
15
 
16
- Agent **必须**把目录以图文形式展示给用户(CLI 默认已输出 Markdown 画廊):
16
+ CLI **默认输出 JSON**(含 `groups[].templates[].coverUrl / previewUrl`)。
17
+ 拿到 JSON 后立刻调用内置工具(**不要**把 JSON/Markdown 图文贴进回复):
17
18
 
18
- - 按**套餐**分组(套餐名、价格、模板数)
19
- - 每个模板:`![封面](coverUrl)` + 名称 + `siteTemplateId` + 行业 + `previewUrl`(在线预览,与 TSO 一致)
20
- - **不要**先问站名/区域/语言;先让用户选定模板
21
-
22
- 用户确认后记下:
23
-
24
- | 字段 | 来源 |
25
- |------|------|
26
- | `siteTemplateId` | 用户点选的模板 |
27
- | `packageId` | 该模板所属套餐分组 |
28
-
29
- 可用 `templates get --id <id>` 再确认封面/预览(可选)。
30
-
31
- ### 2. 一次性建站表单(确认模板之后)
32
-
33
- 选定模板后,**一次性**向用户展示表单(可复制为 Markdown 表格让用户填),字段如下:
19
+ ```
20
+ present_website_templates(groups_json=<catalog.groups 的 JSON 字符串>)
21
+ ```
34
22
 
35
- | 字段 | 必填 | 说明 | 示例 |
36
- |------|------|------|------|
37
- | 站点名称 `name` | 是 | 广告主/站点显示名 | Acme Trading |
38
- | 区域 `region` | 是 | `US` 或 `CN` | US |
39
- | 前台语言 `siteLang` | 是 | 如 `en_US` / `zh_CN` | en_US |
40
- | 后台语言 `adminLang` | 是 | 通常与前台相同 | en_US |
41
- | 开通方式 | 是 | `试用` 或 `付费` | 试用 |
23
+ 用户在卡片上点选模板后,会回传 `packageId` + `siteTemplateId`。
42
24
 
43
- 规则:
25
+ ### 2. 试用建站表单(确认模板之后)
44
26
 
45
- - 套餐与模板**已由第 1 步锁定**,表单里不要再改(可只读展示)
46
- - 区域默认:未填时 `US` → 语言默认 `en_US`;`CN` → 默认 `zh_CN`
47
- - **禁止**拆成多轮零散追问(不要先问站名、再问区域、再问语言);一张表单收齐
27
+ 调用:
48
28
 
49
- 付费路径额外字段:
29
+ ```
30
+ present_website_provision_form(
31
+ package_id=…,
32
+ site_template_id=…,
33
+ package_name=…, template_name=…,
34
+ cover_url=…, preview_url=…, # 可选,用于卡片摘要
35
+ default_region=US|CN,
36
+ default_site_lang=…,
37
+ default_admin_lang=…
38
+ )
39
+ ```
50
40
 
51
- | 字段 | 说明 |
52
- |------|------|
53
- | 付费周期 | `Monthly` / `Yearly`(对应 `bills create --channel`) |
41
+ 表单字段(试用):站名、区域、前台语言、后台语言。
42
+ 套餐/模板已锁定,表单内只读展示。**本版不做付费/账单路径**。
54
43
 
55
- ### 3. 额度 / 支付
44
+ ### 3. 额度
56
45
 
57
- - 试用:`trial status`;若 `remaining=0` 引导付费,勿强行 create
58
- - 付费:`bills create --package <已锁定的 packageId>` → 把 `checkoutUrl` 给用户 → `bills get` 确认 Paid
46
+ 提交表单后:`trial status`;若 `remaining=0` 告知用户试用已满,勿强行 create。
59
47
 
60
48
  ### 4. 复述计划并确认后创建
61
49
 
62
- 复述:站名、区域、语种、套餐、模板、试用或账单号 → 用户明确同意后:
50
+ 复述:站名、区域、语种、套餐、模板、试用 → 用户明确同意后:
63
51
 
64
52
  ```bash
65
53
  siluzan-website sites create \
66
54
  --name "…" --region US|CN \
67
55
  --package <packageId> --template <siteTemplateId> \
68
56
  --site-lang … --admin-lang … \
69
- [--bill <billId>] [--wait]
57
+ [--wait]
70
58
  ```
71
59
 
60
+ 不要传 `--bill`。
61
+
72
62
  ### 5. 收尾
73
63
 
74
64
  - `site_created_unbound` → `sites bind --site <guid> --name <同名> --region …`
@@ -76,8 +66,8 @@ siluzan-website sites create \
76
66
 
77
67
  ## 写操作确认
78
68
 
79
- `bills create`、`sites create`、`sites bind` 执行前必须复述参数并获得用户明确同意。
80
- 创建站**不可盲目重试**;失败后先 `sites list` / `trial status` / `bills get` 排查。
69
+ `sites create`、`sites bind` 执行前必须复述参数并获得用户明确同意。
70
+ 创建站**不可盲目重试**;失败后先 `sites list` / `trial status` 排查。
81
71
 
82
72
  ## 命令速查
83
73
 
@@ -86,10 +76,7 @@ siluzan-website templates catalog
86
76
  siluzan-website templates catalog --package BasicEdition
87
77
  siluzan-website templates get --id <siteTemplateId>
88
78
  siluzan-website trial status
89
- siluzan-website bills create --package <packageId> --channel Monthly
90
- siluzan-website bills get --id <billId>
91
79
  siluzan-website sites create --name "Acme" --region US --package <id> --template <id> --site-lang en_US --admin-lang en_US
92
- siluzan-website sites create ... --bill <billId> --wait
93
80
  siluzan-website sites status --site <guid> --region US
94
81
  siluzan-website sites bind --site <guid> --region US --name "Acme"
95
82
  ```
@@ -98,15 +85,15 @@ siluzan-website sites bind --site <guid> --region US --name "Acme"
98
85
 
99
86
  | 现象 | 处理 |
100
87
  |------|------|
101
- | trial_exhausted / trials | 试用已满 3 次,引导付费账单路径 |
102
- | bill_unpaid / bill_owner_mismatch | 查 `bills get`;勿用他人账单号 |
88
+ | trial_exhausted / trials | 试用已满 3 次,告知用户 |
103
89
  | site_created_unbound | 跑 `sites bind`,再 `sites list` |
104
90
  | 503 disabled | 主站 WebsiteProvision 功能开关关闭 |
105
- | template-catalog 404 | 主站未部署 catalog 接口;可暂用 `packages list` + `templates list --package` 拼目录 |
91
+ | template-catalog 404 | CLI 会自动 packages+templates 拼装;仍用 JSON + `present_website_templates` |
106
92
 
107
93
  ## 明确不做
108
94
 
95
+ - 对话 Markdown 封面画廊 / 多轮零散追问建站字段
109
96
  - CLI 直连 SiteMan / 注入 `SILUZAN_AUTH_TOKEN` 开通
110
- - 未选模板就收集站名等建站字段
97
+ - 付费账单 / 收银台(本版仅试用)
111
98
  - 删除站、重启、绑域名、CDN、SSL
112
99
  - AI Sites / LPS 静态建站
@@ -9,7 +9,7 @@ $ErrorActionPreference = 'Stop'
9
9
  # -- Package info (injected at build time) ------------------------------------
10
10
  $PKG_NAME = 'siluzan-website-cli'
11
11
  # PKG_VERSION 锁定到与本脚本同批构建产物一致的版本,避免与 dist/skill 错位
12
- $PKG_VERSION = '1.0.1-beta.7'
12
+ $PKG_VERSION = '1.0.1-beta.8'
13
13
  $CLI_BIN = 'siluzan-website'
14
14
  $SKILL_LABEL = 'Siluzan Website'
15
15
  $INSTALL_CMD = 'npm install -g siluzan-website-cli@beta'
@@ -9,7 +9,7 @@ set -euo pipefail
9
9
  # -- Package info (injected at build time) ------------------------------------
10
10
  readonly PKG_NAME="siluzan-website-cli"
11
11
  # PKG_VERSION 锁定到与本脚本同批构建产物一致的版本,避免与 dist/skill 错位
12
- readonly PKG_VERSION="1.0.1-beta.7"
12
+ readonly PKG_VERSION="1.0.1-beta.8"
13
13
  readonly CLI_BIN="siluzan-website"
14
14
  readonly SKILL_LABEL="Siluzan Website"
15
15
  readonly INSTALL_CMD="npm install -g siluzan-website-cli@beta"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "siluzan-website-cli",
3
- "version": "1.0.1-beta.7",
3
+ "version": "1.0.1-beta.8",
4
4
  "description": "Siluzan WordPress 站点管理 Skill CLI — 列出站点、新增/编辑页面、安装/升级插件。",
5
5
  "keywords": [
6
6
  "ai-skill",