@page.su/ai-blog-cli 0.1.0-beta.15 → 0.1.0-beta.18

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 (41) hide show
  1. package/README.md +17 -4
  2. package/dist/cli.js +0 -2
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/code-repo.d.ts.map +1 -1
  5. package/dist/commands/code-repo.js +63 -1
  6. package/dist/commands/code-repo.js.map +1 -1
  7. package/dist/commands/confirm.d.ts +16 -0
  8. package/dist/commands/confirm.d.ts.map +1 -0
  9. package/dist/commands/confirm.js +41 -0
  10. package/dist/commands/confirm.js.map +1 -0
  11. package/dist/commands/confirm.test.d.ts +2 -0
  12. package/dist/commands/confirm.test.d.ts.map +1 -0
  13. package/dist/commands/confirm.test.js +95 -0
  14. package/dist/commands/confirm.test.js.map +1 -0
  15. package/dist/commands/delete-commands.test.d.ts +2 -0
  16. package/dist/commands/delete-commands.test.d.ts.map +1 -0
  17. package/dist/commands/delete-commands.test.js +164 -0
  18. package/dist/commands/delete-commands.test.js.map +1 -0
  19. package/dist/commands/demo.d.ts.map +1 -1
  20. package/dist/commands/demo.js +5 -0
  21. package/dist/commands/demo.js.map +1 -1
  22. package/dist/commands/knowledge.d.ts.map +1 -1
  23. package/dist/commands/knowledge.js +5 -0
  24. package/dist/commands/knowledge.js.map +1 -1
  25. package/dist/commands/post.d.ts.map +1 -1
  26. package/dist/commands/post.js +24 -4
  27. package/dist/commands/post.js.map +1 -1
  28. package/dist/commands/series.d.ts.map +1 -1
  29. package/dist/commands/series.js +32 -3
  30. package/dist/commands/series.js.map +1 -1
  31. package/dist/commands/skills.d.ts.map +1 -1
  32. package/dist/commands/skills.js +0 -4
  33. package/dist/commands/skills.js.map +1 -1
  34. package/dist/commands/taxonomy.d.ts.map +1 -1
  35. package/dist/commands/taxonomy.js +5 -0
  36. package/dist/commands/taxonomy.js.map +1 -1
  37. package/package.json +2 -2
  38. package/dist/commands/scout.d.ts +0 -4
  39. package/dist/commands/scout.d.ts.map +0 -1
  40. package/dist/commands/scout.js +0 -48
  41. package/dist/commands/scout.js.map +0 -1
package/README.md CHANGED
@@ -77,9 +77,6 @@ aib taxonomy list --json
77
77
 
78
78
  # Knowledge
79
79
  aib knowledge find "Promise"
80
-
81
- # Scout research
82
- aib scout search "LangGraph" --min-score 7 --json
83
80
  ```
84
81
 
85
82
  ## Commands
@@ -91,7 +88,6 @@ aib scout search "LangGraph" --min-score 7 --json
91
88
  | `aib code-repo` | Manage code repositories (N:1 sharing) |
92
89
  | `aib build` | Build advanced markdown syntax blocks |
93
90
  | `aib knowledge` | Manage knowledge entries (terms & math) |
94
- | `aib scout` | Search Scout collected tech items |
95
91
  | `aib series` | Manage article series |
96
92
  | `aib taxonomy` | Manage categories and tags |
97
93
  | `aib comment` | Create comments and manage AI bots |
@@ -106,6 +102,23 @@ aib scout search "LangGraph" --min-score 7 --json
106
102
  - Exit codes: failures (HTTP errors or `ok:false` business payloads) exit with code 1 — safe for `&&` chaining and CI checks
107
103
  - Call `aib <command> --help` for detailed usage
108
104
 
105
+ ### Deletion confirmation (breaking change)
106
+
107
+ All delete commands require a second confirmation:
108
+
109
+ - **Interactive terminal (TTY)**: shows a summary and asks `y/N` before deleting
110
+ - **Non-interactive contexts (agents / scripts / CI)**: deletion is **refused** unless you pass `--yes` (`-y`). `--yes` is the explicit consent that replaces the interactive prompt
111
+ - Affected commands: `post delete`, `post delete-section`, `series delete`, `knowledge delete`, `taxonomy delete`, `code-repo delete`, `code-repo delete-repos`, `demo delete`
112
+ - `aib post delete` accepts multiple ids: `aib post delete <id1> <id2> ...` (single id keeps the legacy endpoint and response)
113
+ - `aib series delete <id> --with-posts` deletes the series **and all its posts** (destructive; the confirmation summary lists every post title first)
114
+ - `aib code-repo delete-repos <repoId...>` deletes repositories by repo id (posts are kept; they only lose their code entry). Note the difference from `code-repo delete <postId>`, which only unlinks a post from its repo
115
+
116
+ ```bash
117
+ # Agent / CI usage
118
+ aib post delete <id> --yes
119
+ aib series delete <id> --with-posts --yes
120
+ ```
121
+
109
122
  ### Series semantics
110
123
 
111
124
  - `aib series create` is idempotent by slug: an existing slug returns the existing series with `alreadyExists=true` (no duplicate, no error)
package/dist/cli.js CHANGED
@@ -10,7 +10,6 @@ import { registerDemoCommands } from "./commands/demo.js";
10
10
  import { registerCodeRepoCommands } from "./commands/code-repo.js";
11
11
  import { registerBuildCommands } from "./commands/build.js";
12
12
  import { registerKnowledgeCommands } from "./commands/knowledge.js";
13
- import { registerScoutCommands } from "./commands/scout.js";
14
13
  import { registerSeriesCommands } from "./commands/series.js";
15
14
  import { registerTaxonomyCommands } from "./commands/taxonomy.js";
16
15
  import { registerCommentCommands } from "./commands/comments.js";
@@ -65,7 +64,6 @@ async function main() {
65
64
  registerCodeRepoCommands(program, api);
66
65
  registerBuildCommands(program, api);
67
66
  registerKnowledgeCommands(program, api);
68
- registerScoutCommands(program, api);
69
67
  registerSeriesCommands(program, api);
70
68
  registerTaxonomyCommands(program, api);
71
69
  registerCommentCommands(program, api);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"code-repo.d.ts","sourceRoot":"","sources":["../../src/commands/code-repo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CAiG/E"}
1
+ {"version":3,"file":"code-repo.d.ts","sourceRoot":"","sources":["../../src/commands/code-repo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIlD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CA8K/E"}
@@ -1,4 +1,5 @@
1
- import { run, readContent, isJson } from "./helpers.js";
1
+ import { run, readContent, isJson, handleError } from "./helpers.js";
2
+ import { confirmDelete } from "./confirm.js";
2
3
  export function registerCodeRepoCommands(program, api) {
3
4
  const repo = program.command("code-repo").description("Manage code repositories");
4
5
  // ── code-repo get ──
@@ -44,15 +45,38 @@ export function registerCodeRepoCommands(program, api) {
44
45
  repo
45
46
  .command("delete <postId>")
46
47
  .description("Unlink code repo from post. If post is sole owner, repo is also deleted.")
48
+ .option("-y, --yes", "Skip delete confirmation (explicit consent for non-interactive use)")
47
49
  .option("--json", "Output as JSON")
48
50
  .action(async (postId, opts) => {
51
+ const confirmed = await confirmDelete(`Will unlink the code repository from post ${postId}.\nIf this post is the sole owner, the repository itself will be deleted.`, opts);
52
+ if (!confirmed)
53
+ return;
49
54
  await run(() => api.delete(`/api/cli/posts/${encodeURIComponent(postId)}/code`), isJson(opts));
50
55
  });
56
+ // ── code-repo delete-repos ──
57
+ // 与 delete <postId>(解除文章关联)语义不同:本命令按仓库 id 批量删除仓库本体。
58
+ // 接收单个 id 时同样走批量端点(服务端部分成功语义,行为一致)。
59
+ repo
60
+ .command("delete-repos <repoIds...>")
61
+ .description("Permanently delete code repositories by repo ids. Posts are NOT deleted; they only lose their code entry.")
62
+ .option("-y, --yes", "Skip delete confirmation (explicit consent for non-interactive use)")
63
+ .option("--json", "Output as JSON")
64
+ .action(async (repoIds, opts) => {
65
+ const uniqueIds = [...new Set(repoIds)];
66
+ const idList = uniqueIds.length <= 10
67
+ ? uniqueIds.join(", ")
68
+ : `${uniqueIds.slice(0, 10).join(", ")} ... (${uniqueIds.length} total)`;
69
+ const confirmed = await confirmDelete(`Will permanently delete ${uniqueIds.length} code repo(s):\n ${idList}\nLinked posts will lose their code entry; posts themselves are NOT deleted.`, opts);
70
+ if (!confirmed)
71
+ return;
72
+ await run(() => api.post("/api/cli/code-repos/batch-delete", { repoIds: uniqueIds }), isJson(opts));
73
+ });
51
74
  // ── code-repo list ──
52
75
  repo
53
76
  .command("list")
54
77
  .description("List all code repositories (search and paginate)")
55
78
  .option("--search <keyword>", "Search by title")
79
+ .option("--orphans", "Only list repositories not linked to any post")
56
80
  .option("--page <n>", "Page number (default 1)")
57
81
  .option("--page-size <n>", "Page size (default 20, max 50)")
58
82
  .option("--json", "Output as JSON")
@@ -60,12 +84,50 @@ export function registerCodeRepoCommands(program, api) {
60
84
  const params = {};
61
85
  if (opts.search)
62
86
  params.search = opts.search;
87
+ if (opts.orphans)
88
+ params.orphans = "true";
63
89
  if (opts.page)
64
90
  params.page = parseInt(opts.page, 10);
65
91
  if (opts.pageSize)
66
92
  params.pageSize = parseInt(opts.pageSize, 10);
67
93
  await run(() => api.get("/api/cli/code-repos", params), isJson(opts));
68
94
  });
95
+ // ── code-repo delete-orphans ──
96
+ // 孤儿清理:列出未被任何文章引用的仓库,确认后批量删除(复用 batch-delete 端点)。
97
+ repo
98
+ .command("delete-orphans")
99
+ .description("Find code repositories not linked to any post and permanently delete them")
100
+ .option("-y, --yes", "Skip delete confirmation (explicit consent for non-interactive use)")
101
+ .option("--json", "Output as JSON")
102
+ .action(async (opts) => {
103
+ let orphans;
104
+ try {
105
+ const result = await api.get("/api/cli/code-repos", { orphans: "true", pageSize: 100 });
106
+ orphans = result.items ?? [];
107
+ }
108
+ catch (error) {
109
+ handleError(error);
110
+ return;
111
+ }
112
+ if (orphans.length === 0) {
113
+ if (isJson(opts)) {
114
+ console.log(JSON.stringify({ deletedCount: 0, deleted: [] }));
115
+ }
116
+ else {
117
+ console.log("No orphan code repositories found.");
118
+ }
119
+ return;
120
+ }
121
+ const idList = orphans
122
+ .slice(0, 10)
123
+ .map((r) => `${r.id} (${r.title || "untitled"})`)
124
+ .join("\n ");
125
+ const more = orphans.length > 10 ? `\n ... (${orphans.length} total)` : "";
126
+ const confirmed = await confirmDelete(`Found ${orphans.length} orphan code repo(s) (not linked to any post):\n ${idList}${more}\nThey will be permanently deleted.`, opts);
127
+ if (!confirmed)
128
+ return;
129
+ await run(() => api.post("/api/cli/code-repos/batch-delete", { repoIds: orphans.map((r) => r.id) }), isJson(opts));
130
+ });
69
131
  // ── code-repo link ──
70
132
  repo
71
133
  .command("link <postId> <repoId>")
@@ -1 +1 @@
1
- {"version":3,"file":"code-repo.js","sourceRoot":"","sources":["../../src/commands/code-repo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"code-repo.js","sourceRoot":"","sources":["../../src/commands/code-repo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * 删除类命令的二次确认 helper。
3
+ *
4
+ * 规则(spec docs/plans/2026-09-02 §2.5):
5
+ * - `--yes` / `-y` → 直接放行(Agent/脚本的显式确认)
6
+ * - 非 TTY(stdin 不是终端)且无 `--yes` → 拒绝执行,exit code = 1
7
+ * - TTY → 展示摘要 + y/N 交互确认;仅 y/yes 算确认,其余一律拒绝
8
+ *
9
+ * 输出约定:summary 与 prompt 均走 stderr,stdout 保持纯净(--json 模式不被污染)。
10
+ */
11
+ /** 统一注册到删除类命令的确认 flag */
12
+ export declare const CONFIRM_FLAGS: Array<[string, string]>;
13
+ export declare function confirmDelete(summary: string, opts: {
14
+ yes?: boolean;
15
+ }): Promise<boolean>;
16
+ //# sourceMappingURL=confirm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confirm.d.ts","sourceRoot":"","sources":["../../src/commands/confirm.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,yBAAyB;AACzB,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAEjD,CAAC;AAEF,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GACtB,OAAO,CAAC,OAAO,CAAC,CAyBlB"}
@@ -0,0 +1,41 @@
1
+ import { createInterface } from "node:readline/promises";
2
+ /**
3
+ * 删除类命令的二次确认 helper。
4
+ *
5
+ * 规则(spec docs/plans/2026-09-02 §2.5):
6
+ * - `--yes` / `-y` → 直接放行(Agent/脚本的显式确认)
7
+ * - 非 TTY(stdin 不是终端)且无 `--yes` → 拒绝执行,exit code = 1
8
+ * - TTY → 展示摘要 + y/N 交互确认;仅 y/yes 算确认,其余一律拒绝
9
+ *
10
+ * 输出约定:summary 与 prompt 均走 stderr,stdout 保持纯净(--json 模式不被污染)。
11
+ */
12
+ /** 统一注册到删除类命令的确认 flag */
13
+ export const CONFIRM_FLAGS = [
14
+ ["-y, --yes", "Skip delete confirmation (explicit consent for non-interactive use)"],
15
+ ];
16
+ export async function confirmDelete(summary, opts) {
17
+ if (opts.yes) {
18
+ return true;
19
+ }
20
+ if (process.stdin.isTTY !== true) {
21
+ console.error(summary);
22
+ console.error("Error: deletion requires confirmation. Re-run with --yes (non-interactive mode).");
23
+ process.exitCode = 1;
24
+ return false;
25
+ }
26
+ console.error(summary);
27
+ const rl = createInterface({ input: process.stdin, output: process.stderr });
28
+ try {
29
+ const answer = await rl.question("Proceed? (y/N) ");
30
+ const confirmed = answer.trim().toLowerCase();
31
+ if (confirmed === "y" || confirmed === "yes") {
32
+ return true;
33
+ }
34
+ console.error("Cancelled.");
35
+ return false;
36
+ }
37
+ finally {
38
+ rl.close();
39
+ }
40
+ }
41
+ //# sourceMappingURL=confirm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confirm.js","sourceRoot":"","sources":["../../src/commands/confirm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD;;;;;;;;;GASG;AAEH,yBAAyB;AACzB,MAAM,CAAC,MAAM,aAAa,GAA4B;IACpD,CAAC,WAAW,EAAE,qEAAqE,CAAC;CACrF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAe,EACf,IAAuB;IAEvB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,kFAAkF,CAAC,CAAC;QAClG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACvB,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC9C,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=confirm.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confirm.test.d.ts","sourceRoot":"","sources":["../../src/commands/confirm.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,95 @@
1
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
2
+ import { createInterface } from "node:readline/promises";
3
+ import { confirmDelete, CONFIRM_FLAGS } from "./confirm.js";
4
+ /**
5
+ * 验证删除二次确认 helper(spec docs/plans/2026-09-02 §2.5):
6
+ * - --yes 直接放行,不产生任何交互
7
+ * - 非 TTY 无 --yes → 拒绝执行,exit code = 1
8
+ * - TTY:仅 y/yes 算确认;空回车 / n / 其他输入一律拒绝
9
+ * - summary 与 prompt 走 stderr,stdout 不被污染
10
+ */
11
+ vi.mock("node:readline/promises", () => ({
12
+ createInterface: vi.fn(),
13
+ }));
14
+ describe("CONFIRM_FLAGS", () => {
15
+ it("注册 -y 短别名与 --yes 长选项", () => {
16
+ expect(CONFIRM_FLAGS).toContainEqual([
17
+ "-y, --yes",
18
+ expect.stringContaining("Skip delete confirmation"),
19
+ ]);
20
+ });
21
+ });
22
+ describe("confirmDelete", () => {
23
+ let errorSpy;
24
+ let logSpy;
25
+ let originalIsTTY;
26
+ let originalExitCode;
27
+ beforeEach(() => {
28
+ errorSpy = vi.spyOn(console, "error").mockImplementation(() => { });
29
+ logSpy = vi.spyOn(console, "log").mockImplementation(() => { });
30
+ originalIsTTY = process.stdin.isTTY;
31
+ originalExitCode = process.exitCode;
32
+ process.exitCode = undefined;
33
+ });
34
+ afterEach(() => {
35
+ errorSpy.mockRestore();
36
+ logSpy.mockRestore();
37
+ Object.defineProperty(process.stdin, "isTTY", {
38
+ value: originalIsTTY,
39
+ configurable: true,
40
+ });
41
+ process.exitCode = originalExitCode;
42
+ vi.mocked(createInterface).mockReset();
43
+ });
44
+ function setTTY(isTTY) {
45
+ Object.defineProperty(process.stdin, "isTTY", {
46
+ value: isTTY,
47
+ configurable: true,
48
+ });
49
+ }
50
+ function mockQuestion(answer) {
51
+ const rl = { question: vi.fn().mockResolvedValue(answer), close: vi.fn() };
52
+ vi.mocked(createInterface).mockReturnValue(rl);
53
+ return rl;
54
+ }
55
+ it("--yes 直接放行:无交互、无输出、exit code 不变", async () => {
56
+ setTTY(false);
57
+ const result = await confirmDelete("Will delete post X", { yes: true });
58
+ expect(result).toBe(true);
59
+ expect(createInterface).not.toHaveBeenCalled();
60
+ expect(errorSpy).not.toHaveBeenCalled();
61
+ expect(process.exitCode).toBeUndefined();
62
+ });
63
+ it("非 TTY 无 --yes:拒绝执行,exit code = 1,stderr 提示加 --yes", async () => {
64
+ setTTY(false);
65
+ const result = await confirmDelete("Will delete post X", {});
66
+ expect(result).toBe(false);
67
+ expect(process.exitCode).toBe(1);
68
+ expect(errorSpy).toHaveBeenCalledWith("Will delete post X");
69
+ expect(errorSpy).toHaveBeenCalledWith(expect.stringContaining("--yes"));
70
+ expect(logSpy).not.toHaveBeenCalled();
71
+ expect(createInterface).not.toHaveBeenCalled();
72
+ });
73
+ it.each(["y", "Y", "yes", "YES"])("TTY 答复 %s → 确认", async (answer) => {
74
+ setTTY(true);
75
+ const rl = mockQuestion(answer);
76
+ const result = await confirmDelete("Will delete post X", {});
77
+ expect(result).toBe(true);
78
+ expect(rl.question).toHaveBeenCalledWith("Proceed? (y/N) ");
79
+ expect(rl.close).toHaveBeenCalled();
80
+ expect(process.exitCode).toBeUndefined();
81
+ // 交互提示走 stderr,stdout 纯净
82
+ expect(logSpy).not.toHaveBeenCalled();
83
+ });
84
+ it.each(["", "n", "N", "no", "abort"])("TTY 答复 %j → 拒绝但不算错误", async (answer) => {
85
+ setTTY(true);
86
+ const rl = mockQuestion(answer);
87
+ const result = await confirmDelete("Will delete post X", {});
88
+ expect(result).toBe(false);
89
+ expect(rl.close).toHaveBeenCalled();
90
+ expect(errorSpy).toHaveBeenCalledWith("Cancelled.");
91
+ // 用户主动取消是正常退出路径,不设 exit code
92
+ expect(process.exitCode).toBeUndefined();
93
+ });
94
+ });
95
+ //# sourceMappingURL=confirm.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confirm.test.js","sourceRoot":"","sources":["../../src/commands/confirm.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE5D;;;;;;GAMG;AAEH,EAAE,CAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAAC,CAAC;IACvC,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE;CACzB,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,CAAC,aAAa,CAAC,CAAC,cAAc,CAAC;YACnC,WAAW;YACX,MAAM,CAAC,gBAAgB,CAAC,0BAA0B,CAAC;SACpD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,IAAI,QAAqC,CAAC;IAC1C,IAAI,MAAmC,CAAC;IACxC,IAAI,aAAkC,CAAC;IACvC,IAAI,gBAAoC,CAAC;IAEzC,UAAU,CAAC,GAAG,EAAE;QACd,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACnE,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC/D,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QACpC,gBAAgB,GAAG,OAAO,CAAC,QAA8B,CAAC;QAC1D,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,WAAW,EAAE,CAAC;QACvB,MAAM,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE;YAC5C,KAAK,EAAE,aAAa;YACpB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QACH,OAAO,CAAC,QAAQ,GAAG,gBAAgB,CAAC;QACpC,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,SAAS,MAAM,CAAC,KAA0B;QACxC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE;YAC5C,KAAK,EAAE,KAAK;YACZ,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;IACL,CAAC;IAED,SAAS,YAAY,CAAC,MAAc;QAClC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;QAC3E,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,eAAe,CAAC,EAAW,CAAC,CAAC;QACxD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,CAAC,KAAK,CAAC,CAAC;QACd,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QACxE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC/C,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,CAAC,KAAK,CAAC,CAAC;QACd,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;QAC5D,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;QACxE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACtC,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACnE,MAAM,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;QAC5D,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACpC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAC;QACzC,yBAAyB;QACzB,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,qBAAqB,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC7E,MAAM,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACpC,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;QACpD,6BAA6B;QAC7B,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=delete-commands.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-commands.test.d.ts","sourceRoot":"","sources":["../../src/commands/delete-commands.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,164 @@
1
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
2
+ import { Command } from "commander";
3
+ import { registerPostCommands } from "./post.js";
4
+ import { registerSeriesCommands } from "./series.js";
5
+ import { registerCodeRepoCommands } from "./code-repo.js";
6
+ /**
7
+ * 删除类命令的分支行为测试(spec docs/plans/2026-09-02 §3.4 / §4.4):
8
+ * - post delete:单 id 走旧单删端点(响应不变);多 id 去重后走批量端点
9
+ * - series delete:默认不带 query;--with-posts 拼 withPosts=true(GET 预取详情)
10
+ * - 非 TTY 无 --yes:confirmDelete 拒绝,不发出任何请求
11
+ */
12
+ function buildMockApi() {
13
+ return {
14
+ get: vi.fn().mockResolvedValue({ title: "Series X", posts: [] }),
15
+ post: vi.fn().mockResolvedValue({ ok: true }),
16
+ patch: vi.fn().mockResolvedValue({ ok: true }),
17
+ delete: vi.fn().mockResolvedValue({ ok: true }),
18
+ getText: vi.fn().mockResolvedValue(""),
19
+ };
20
+ }
21
+ function buildProgram(api) {
22
+ const program = new Command();
23
+ program.exitOverride(); // 把 commander 的 process.exit 转为异常,便于断言
24
+ registerPostCommands(program, api);
25
+ registerSeriesCommands(program, api);
26
+ registerCodeRepoCommands(program, api);
27
+ return program;
28
+ }
29
+ /** commander argv 前导:[nodePath, scriptPath, ...真实参数] */
30
+ function argv(...args) {
31
+ return ["node", "aib", ...args];
32
+ }
33
+ describe("post delete - variadic 分支", () => {
34
+ let api;
35
+ let logSpy;
36
+ let originalIsTTY;
37
+ beforeEach(() => {
38
+ api = buildMockApi();
39
+ logSpy = vi.spyOn(console, "log").mockImplementation(() => { });
40
+ vi.spyOn(console, "error").mockImplementation(() => { });
41
+ originalIsTTY = process.stdin.isTTY;
42
+ // 命令级测试聚焦端点分支,confirm 统一以 --yes 放行
43
+ Object.defineProperty(process.stdin, "isTTY", { value: false, configurable: true });
44
+ });
45
+ afterEach(() => {
46
+ logSpy.mockRestore();
47
+ vi.restoreAllMocks();
48
+ Object.defineProperty(process.stdin, "isTTY", { value: originalIsTTY, configurable: true });
49
+ });
50
+ it("单 id → 走既有单删端点 DELETE /api/cli/posts/[id]", async () => {
51
+ const program = buildProgram(api);
52
+ await program.parseAsync(argv("post", "delete", "p1", "--yes"));
53
+ expect(api.delete).toHaveBeenCalledTimes(1);
54
+ expect(api.delete).toHaveBeenCalledWith("/api/cli/posts/p1");
55
+ expect(api.post).not.toHaveBeenCalled();
56
+ });
57
+ it("多 id → 去重后走批量端点 POST /api/cli/posts/batch-delete", async () => {
58
+ const program = buildProgram(api);
59
+ await program.parseAsync(argv("post", "delete", "p1", "p2", "p1", "--yes"));
60
+ expect(api.post).toHaveBeenCalledTimes(1);
61
+ expect(api.post).toHaveBeenCalledWith("/api/cli/posts/batch-delete", {
62
+ ids: ["p1", "p2"],
63
+ });
64
+ expect(api.delete).not.toHaveBeenCalled();
65
+ });
66
+ it("非 TTY 无 --yes → 拒绝执行,不发出任何请求,exit code 1", async () => {
67
+ const program = buildProgram(api);
68
+ const prevExitCode = process.exitCode;
69
+ await program.parseAsync(argv("post", "delete", "p1"));
70
+ expect(api.delete).not.toHaveBeenCalled();
71
+ expect(api.post).not.toHaveBeenCalled();
72
+ expect(process.exitCode).toBe(1);
73
+ process.exitCode = prevExitCode;
74
+ });
75
+ });
76
+ describe("code-repo delete-repos - 按仓库 id 批量删除", () => {
77
+ let api;
78
+ let logSpy;
79
+ let originalIsTTY;
80
+ beforeEach(() => {
81
+ api = buildMockApi();
82
+ logSpy = vi.spyOn(console, "log").mockImplementation(() => { });
83
+ vi.spyOn(console, "error").mockImplementation(() => { });
84
+ originalIsTTY = process.stdin.isTTY;
85
+ Object.defineProperty(process.stdin, "isTTY", { value: false, configurable: true });
86
+ });
87
+ afterEach(() => {
88
+ logSpy.mockRestore();
89
+ vi.restoreAllMocks();
90
+ Object.defineProperty(process.stdin, "isTTY", { value: originalIsTTY, configurable: true });
91
+ });
92
+ it("多 id 去重后走批量端点 POST /api/cli/code-repos/batch-delete", async () => {
93
+ const program = buildProgram(api);
94
+ await program.parseAsync(argv("code-repo", "delete-repos", "r1", "r2", "r1", "--yes"));
95
+ expect(api.post).toHaveBeenCalledTimes(1);
96
+ expect(api.post).toHaveBeenCalledWith("/api/cli/code-repos/batch-delete", {
97
+ repoIds: ["r1", "r2"],
98
+ });
99
+ expect(api.delete).not.toHaveBeenCalled();
100
+ });
101
+ it("单 id 同样走批量端点(语义一致,不区分单/多)", async () => {
102
+ const program = buildProgram(api);
103
+ await program.parseAsync(argv("code-repo", "delete-repos", "r1", "--yes"));
104
+ expect(api.post).toHaveBeenCalledWith("/api/cli/code-repos/batch-delete", {
105
+ repoIds: ["r1"],
106
+ });
107
+ });
108
+ it("非 TTY 无 --yes → 拒绝执行,不发出任何请求,exit code 1", async () => {
109
+ const program = buildProgram(api);
110
+ const prevExitCode = process.exitCode;
111
+ await program.parseAsync(argv("code-repo", "delete-repos", "r1"));
112
+ expect(api.post).not.toHaveBeenCalled();
113
+ expect(api.delete).not.toHaveBeenCalled();
114
+ expect(process.exitCode).toBe(1);
115
+ process.exitCode = prevExitCode;
116
+ });
117
+ });
118
+ describe("series delete - withPosts 分支", () => {
119
+ let api;
120
+ let logSpy;
121
+ let originalIsTTY;
122
+ beforeEach(() => {
123
+ api = buildMockApi();
124
+ logSpy = vi.spyOn(console, "log").mockImplementation(() => { });
125
+ vi.spyOn(console, "error").mockImplementation(() => { });
126
+ originalIsTTY = process.stdin.isTTY;
127
+ Object.defineProperty(process.stdin, "isTTY", { value: false, configurable: true });
128
+ });
129
+ afterEach(() => {
130
+ logSpy.mockRestore();
131
+ vi.restoreAllMocks();
132
+ Object.defineProperty(process.stdin, "isTTY", { value: originalIsTTY, configurable: true });
133
+ });
134
+ it("默认模式 → DELETE 不带 query,无 GET 预取", async () => {
135
+ const program = buildProgram(api);
136
+ await program.parseAsync(argv("series", "delete", "s1", "--yes"));
137
+ expect(api.delete).toHaveBeenCalledWith("/api/cli/series/s1");
138
+ expect(api.get).not.toHaveBeenCalled();
139
+ });
140
+ it("--with-posts → 先 GET 详情再 DELETE?withPosts=true", async () => {
141
+ api.get = vi.fn().mockResolvedValue({
142
+ title: "React 系列",
143
+ posts: [
144
+ { postId: "p1", title: "第一篇" },
145
+ { postId: "p2", title: "第二篇" },
146
+ ],
147
+ });
148
+ const program = buildProgram(api);
149
+ await program.parseAsync(argv("series", "delete", "s1", "--with-posts", "--yes"));
150
+ expect(api.get).toHaveBeenCalledWith("/api/cli/series/s1");
151
+ expect(api.delete).toHaveBeenCalledWith("/api/cli/series/s1?withPosts=true");
152
+ });
153
+ it("--with-posts 但系列不存在(GET 抛错)→ 直接透传错误,不发 DELETE", async () => {
154
+ api.get = vi.fn().mockRejectedValue(new Error("HTTP 404: Series not found"));
155
+ const program = buildProgram(api);
156
+ const prevExitCode = process.exitCode;
157
+ process.exitCode = undefined;
158
+ await program.parseAsync(argv("series", "delete", "s1", "--with-posts", "--yes"));
159
+ expect(api.delete).not.toHaveBeenCalled();
160
+ expect(process.exitCode).toBe(1);
161
+ process.exitCode = prevExitCode;
162
+ });
163
+ });
164
+ //# sourceMappingURL=delete-commands.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-commands.test.js","sourceRoot":"","sources":["../../src/commands/delete-commands.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../../src/commands/demo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CA2E3E"}
1
+ {"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../../src/commands/demo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIlD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CAkF3E"}
@@ -1,4 +1,5 @@
1
1
  import { run, readContent, isJson } from "./helpers.js";
2
+ import { confirmDelete } from "./confirm.js";
2
3
  export function registerDemoCommands(program, api) {
3
4
  const demo = program.command("demo").description("Manage post live demos");
4
5
  // ── demo list ──
@@ -64,8 +65,12 @@ export function registerDemoCommands(program, api) {
64
65
  demo
65
66
  .command("delete <postId> <slot>")
66
67
  .description("Delete a demo")
68
+ .option("-y, --yes", "Skip delete confirmation (explicit consent for non-interactive use)")
67
69
  .option("--json", "Output as JSON")
68
70
  .action(async (postId, slot, opts) => {
71
+ const confirmed = await confirmDelete(`Will delete demo "${slot}" of post ${postId}.`, opts);
72
+ if (!confirmed)
73
+ return;
69
74
  await run(() => api.delete(`/api/cli/posts/${encodeURIComponent(postId)}/demos/${encodeURIComponent(slot)}`), isJson(opts));
70
75
  });
71
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"demo.js","sourceRoot":"","sources":["../../src/commands/demo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"demo.js","sourceRoot":"","sources":["../../src/commands/demo.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,UAAU,oBAAoB,CAAC,OAAgB,EAAE,GAAc;IACnE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;IAE3E,kBAAkB;IAClB,IAAI;SACD,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,4DAA4D,CAAC;SACzE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QAC7B,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,kBAAkB,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAC;IAEL,iBAAiB;IACjB,IAAI;SACD,OAAO,CAAC,qBAAqB,CAAC;SAC9B,WAAW,CAAC,iFAAiF,CAAC;SAC9F,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QACnC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,kBAAkB,kBAAkB,CAAC,MAAM,CAAC,UAAU,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3H,CAAC,CAAC,CAAC;IAEL,oBAAoB;IACpB,IAAI;SACD,OAAO,CAAC,wBAAwB,CAAC;SACjC,WAAW,CAAC,qDAAqD,CAAC;SAClE,MAAM,CAAC,iBAAiB,EAAE,YAAY,CAAC;SACvC,MAAM,CAAC,YAAY,EAAE,0BAA0B,CAAC;SAChD,MAAM,CAAC,iBAAiB,EAAE,gCAAgC,CAAC;SAC3D,MAAM,CAAC,cAAc,EAAE,0CAA0C,CAAC;SAClE,MAAM,CAAC,qBAAqB,EAAE,wGAAwG,CAAC;SACvI,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,GAA4B,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACxC,IAAI,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAClC,IAAI,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACzD,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,kBAAkB,CAAC,MAAM,CAAC,QAAQ,EAAE;YAC7E,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK;SAC3C,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEL,sBAAsB;IACtB,IAAI;SACD,OAAO,CAAC,qCAAqC,CAAC;SAC9C,WAAW,CAAC,4DAA4D,CAAC;SACzE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;QAC7C,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,kBAAkB,kBAAkB,CAAC,MAAM,CAAC,UAAU,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE;YAC7G,IAAI,EAAE,QAAQ;SACf,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEL,wBAAwB;IACxB,IAAI;SACD,OAAO,CAAC,uCAAuC,CAAC;SAChD,WAAW,CAAC,gEAAgE,CAAC;SAC7E,cAAc,CAAC,uBAAuB,EAAE,iCAAiC,CAAC;SAC1E,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;QAC7C,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CACvB,kBAAkB,kBAAkB,CAAC,MAAM,CAAC,UAAU,kBAAkB,CAAC,IAAI,CAAC,OAAO,EACrF,EAAE,QAAQ,EAAE,OAAO,EAAE,CACtB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;IAEL,oBAAoB;IACpB,IAAI;SACD,OAAO,CAAC,wBAAwB,CAAC;SACjC,WAAW,CAAC,eAAe,CAAC;SAC5B,MAAM,CAAC,WAAW,EAAE,qEAAqE,CAAC;SAC1F,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QACnC,MAAM,SAAS,GAAG,MAAM,aAAa,CACnC,qBAAqB,IAAI,aAAa,MAAM,GAAG,EAC/C,IAAI,CACL,CAAC;QACF,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,kBAAkB,kBAAkB,CAAC,MAAM,CAAC,UAAU,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9H,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"knowledge.d.ts","sourceRoot":"","sources":["../../src/commands/knowledge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CA6HhF"}
1
+ {"version":3,"file":"knowledge.d.ts","sourceRoot":"","sources":["../../src/commands/knowledge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIlD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CAoIhF"}
@@ -1,4 +1,5 @@
1
1
  import { run, readContent, isJson } from "./helpers.js";
2
+ import { confirmDelete } from "./confirm.js";
2
3
  export function registerKnowledgeCommands(program, api) {
3
4
  const knowledge = program.command("knowledge").description("Manage knowledge entries (terms & math concepts)");
4
5
  // ── knowledge list ──
@@ -130,8 +131,12 @@ export function registerKnowledgeCommands(program, api) {
130
131
  knowledge
131
132
  .command("delete <id>")
132
133
  .description("Permanently delete a knowledge entry")
134
+ .option("-y, --yes", "Skip delete confirmation (explicit consent for non-interactive use)")
133
135
  .option("--json", "Output as JSON")
134
136
  .action(async (id, opts) => {
137
+ const confirmed = await confirmDelete(`Will permanently delete knowledge entry ${id}.`, opts);
138
+ if (!confirmed)
139
+ return;
135
140
  await run(() => api.post("/api/cli/knowledge", { action: "delete", id }), isJson(opts));
136
141
  });
137
142
  // ── knowledge find ──
@@ -1 +1 @@
1
- {"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../../src/commands/knowledge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../../src/commands/knowledge.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../../src/commands/post.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CAkO3E"}
1
+ {"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../../src/commands/post.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIlD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CA0P3E"}
@@ -1,4 +1,5 @@
1
1
  import { run, readContent, readStdin, isJson } from "./helpers.js";
2
+ import { confirmDelete } from "./confirm.js";
2
3
  export function registerPostCommands(program, api) {
3
4
  const post = program.command("post").description("Manage blog posts");
4
5
  // ── post list ──
@@ -139,11 +140,25 @@ export function registerPostCommands(program, api) {
139
140
  });
140
141
  // ── post delete ──
141
142
  post
142
- .command("delete <id>")
143
- .description("Permanently delete a post. Use with caution.")
143
+ .command("delete <ids...>")
144
+ .description("Permanently delete one or more posts. Use with caution.")
145
+ .option("-y, --yes", "Skip delete confirmation (explicit consent for non-interactive use)")
144
146
  .option("--json", "Output as JSON")
145
- .action(async (id, opts) => {
146
- await run(() => api.delete(`/api/cli/posts/${encodeURIComponent(id)}`), isJson(opts));
147
+ .action(async (ids, opts) => {
148
+ const uniqueIds = [...new Set(ids)];
149
+ const idList = uniqueIds.length <= 10
150
+ ? uniqueIds.join(", ")
151
+ : `${uniqueIds.slice(0, 10).join(", ")} ... (${uniqueIds.length} total)`;
152
+ const confirmed = await confirmDelete(`Will permanently delete ${uniqueIds.length} post(s):\n ${idList}\nLive demos, comments, versions and associations will be removed.`, opts);
153
+ if (!confirmed)
154
+ return;
155
+ // 单 id 走既有单删端点(行为与响应完全不变);多 id 走批量端点
156
+ if (uniqueIds.length === 1) {
157
+ await run(() => api.delete(`/api/cli/posts/${encodeURIComponent(uniqueIds[0])}`), isJson(opts));
158
+ }
159
+ else {
160
+ await run(() => api.post("/api/cli/posts/batch-delete", { ids: uniqueIds }), isJson(opts));
161
+ }
147
162
  });
148
163
  // ── post append ──
149
164
  post
@@ -211,10 +226,15 @@ export function registerPostCommands(program, api) {
211
226
  post
212
227
  .command("delete-section <id>")
213
228
  .description("Delete a section by --index or --heading")
229
+ .option("-y, --yes", "Skip delete confirmation (explicit consent for non-interactive use)")
214
230
  .option("--index <n>", "Section index (0-based, from 'outline')")
215
231
  .option("--heading <text>", "Section heading text")
216
232
  .option("--json", "Output as JSON")
217
233
  .action(async (id, opts) => {
234
+ const target = opts.index !== undefined ? `section #${opts.index}` : `section "${opts.heading}"`;
235
+ const confirmed = await confirmDelete(`Will delete ${target} of post ${id}.`, opts);
236
+ if (!confirmed)
237
+ return;
218
238
  await run(() => api.patch(`/api/cli/posts/${encodeURIComponent(id)}/delete-section`, {
219
239
  sectionIndex: opts.index !== undefined ? parseInt(opts.index, 10) : undefined,
220
240
  sectionHeading: opts.heading,
@@ -1 +1 @@
1
- {"version":3,"file":"post.js","sourceRoot":"","sources":["../../src/commands/post.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"post.js","sourceRoot":"","sources":["../../src/commands/post.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"series.d.ts","sourceRoot":"","sources":["../../src/commands/series.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CAmG7E"}
1
+ {"version":3,"file":"series.d.ts","sourceRoot":"","sources":["../../src/commands/series.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIlD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CAoI7E"}
@@ -1,4 +1,5 @@
1
- import { run, isJson } from "./helpers.js";
1
+ import { run, isJson, handleError } from "./helpers.js";
2
+ import { confirmDelete } from "./confirm.js";
2
3
  export function registerSeriesCommands(program, api) {
3
4
  const series = program.command("series").description("Manage article series");
4
5
  // ── series list ──
@@ -61,10 +62,38 @@ export function registerSeriesCommands(program, api) {
61
62
  // ── series delete ──
62
63
  series
63
64
  .command("delete <id>")
64
- .description("Delete a series (posts are not deleted, only associations)")
65
+ .description("Delete a series. Posts are kept unless --with-posts is given, in which case all posts in the series are permanently deleted too.")
66
+ .option("--with-posts", "Also delete ALL posts in the series (destructive; posts in other series are removed from them as well)")
67
+ .option("-y, --yes", "Skip delete confirmation (explicit consent for non-interactive use)")
65
68
  .option("--json", "Output as JSON")
66
69
  .action(async (id, opts) => {
67
- await run(() => api.delete(`/api/cli/series/${encodeURIComponent(id)}`), isJson(opts));
70
+ const encodedId = encodeURIComponent(id);
71
+ if (opts.withPosts) {
72
+ // 最高危路径:删除前先拉取系列详情,展示人类可读的文章清单
73
+ let detail;
74
+ try {
75
+ detail = await api.get(`/api/cli/series/${encodedId}`);
76
+ }
77
+ catch (error) {
78
+ // 404 等错误直接透传,不进入确认流程
79
+ handleError(error);
80
+ return;
81
+ }
82
+ const posts = detail?.posts ?? [];
83
+ const postList = posts.length <= 10
84
+ ? posts.map((p) => ` - ${p.title} (${p.postId})`).join("\n")
85
+ : `${posts.slice(0, 10).map((p) => ` - ${p.title} (${p.postId})`).join("\n")}\n ... (${posts.length} total)`;
86
+ const confirmed = await confirmDelete(`Will permanently delete series "${detail?.title ?? id}" and ALL ${posts.length} post(s) in it:\n${postList}\nLive demos, comments, versions and associations of these posts will be removed. This cannot be undone.`, opts);
87
+ if (!confirmed)
88
+ return;
89
+ await run(() => api.delete(`/api/cli/series/${encodedId}?withPosts=true`), isJson(opts));
90
+ }
91
+ else {
92
+ const confirmed = await confirmDelete(`Will delete series ${id}.\nPosts in the series are NOT deleted; only associations are removed.`, opts);
93
+ if (!confirmed)
94
+ return;
95
+ await run(() => api.delete(`/api/cli/series/${encodedId}`), isJson(opts));
96
+ }
68
97
  });
69
98
  // ── series add-post ──
70
99
  series
@@ -1 +1 @@
1
- {"version":3,"file":"series.js","sourceRoot":"","sources":["../../src/commands/series.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"series.js","sourceRoot":"","sources":["../../src/commands/series.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2IzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAO5D"}
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuIzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAO5D"}
@@ -103,10 +103,6 @@ Build: \`aib build image --url "..." --alt "..." --width 50 --align center\`
103
103
  - \`aib knowledge find "Promise"\` — find or suggest term entry
104
104
  - \`aib knowledge list --domain math\` — list math concepts
105
105
 
106
- ## Scout (research material)
107
- - \`aib scout search "LangGraph" --min-score 7 --json\` — search tech items
108
- - \`aib scout add-refs <postId> --refs-file refs.json\` — add references to post
109
-
110
106
  ## Series
111
107
  - \`aib series list\` — list all series
112
108
  - \`aib series create --slug "guide" --title "Guide"\` — idempotent by slug (existing slug → returns it with alreadyExists=true)
@@ -1 +1 @@
1
- {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mDA4HiC,CAAC;AAEpD,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,8EAA8E,CAAC;SAC3F,MAAM,CAAC,GAAG,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mDAwHiC,CAAC;AAEpD,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,8EAA8E,CAAC;SAC3F,MAAM,CAAC,GAAG,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"taxonomy.d.ts","sourceRoot":"","sources":["../../src/commands/taxonomy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CAmD/E"}
1
+ {"version":3,"file":"taxonomy.d.ts","sourceRoot":"","sources":["../../src/commands/taxonomy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIlD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CA0D/E"}
@@ -1,4 +1,5 @@
1
1
  import { run, isJson } from "./helpers.js";
2
+ import { confirmDelete } from "./confirm.js";
2
3
  export function registerTaxonomyCommands(program, api) {
3
4
  const taxonomy = program.command("taxonomy").description("Manage categories and tags");
4
5
  // ── taxonomy list ──
@@ -44,8 +45,12 @@ export function registerTaxonomyCommands(program, api) {
44
45
  .description("Permanently delete a category or tag")
45
46
  .requiredOption("--type <type>", "Type: category or tag")
46
47
  .requiredOption("--id <id>", "Entry id (uuid)")
48
+ .option("-y, --yes", "Skip delete confirmation (explicit consent for non-interactive use)")
47
49
  .option("--json", "Output as JSON")
48
50
  .action(async (opts) => {
51
+ const confirmed = await confirmDelete(`Will permanently delete ${opts.type} ${opts.id}.\nPosts associated with it will keep their content; only the association is removed.`, opts);
52
+ if (!confirmed)
53
+ return;
49
54
  await run(() => api.post("/api/cli/taxonomy", { action: "delete", type: opts.type, id: opts.id }), isJson(opts));
50
55
  });
51
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"taxonomy.js","sourceRoot":"","sources":["../../src/commands/taxonomy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taxonomy.js","sourceRoot":"","sources":["../../src/commands/taxonomy.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@page.su/ai-blog-cli",
3
- "version": "0.1.0-beta.15",
3
+ "version": "0.1.0-beta.18",
4
4
  "private": false,
5
5
  "description": "CLI tool for AI agents to write, manage, and publish posts on ai-blog.",
6
6
  "license": "MIT",
@@ -44,4 +44,4 @@
44
44
  "vitest": "^4.1.0"
45
45
  },
46
46
  "repository": "https://debian.hellosu.top:3000/supeisen/ai-blog.git"
47
- }
47
+ }
@@ -1,4 +0,0 @@
1
- import type { Command } from "commander";
2
- import type { ApiClient } from "../api-client.js";
3
- export declare function registerScoutCommands(program: Command, api: ApiClient): void;
4
- //# sourceMappingURL=scout.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scout.d.ts","sourceRoot":"","sources":["../../src/commands/scout.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CA0C5E"}
@@ -1,48 +0,0 @@
1
- import { readFileSync } from "node:fs";
2
- import { run, isJson } from "./helpers.js";
3
- export function registerScoutCommands(program, api) {
4
- const scout = program.command("scout").description("Search Scout knowledge engine items");
5
- // ── scout search ──
6
- scout
7
- .command("search")
8
- .description("Search Scout collected high-quality tech items")
9
- .option("--keyword <keyword>", "Search keyword (matches title and summary)")
10
- .option("--category <category>", "Category filter (e.g. AI, LLM, Web Development)")
11
- .option("--min-score <n>", "Minimum overall score (0-10, default 6)")
12
- .option("--limit <n>", "Max results (default 10, max 30)")
13
- .option("--since <date>", "Earliest fetch date (ISO date string, e.g. 2026-01-01)")
14
- .option("--json", "Output as JSON")
15
- .action(async (opts) => {
16
- const query = {};
17
- if (opts.keyword)
18
- query.keyword = opts.keyword;
19
- if (opts.category)
20
- query.category = opts.category;
21
- if (opts.minScore !== undefined)
22
- query.minScore = opts.minScore;
23
- if (opts.limit !== undefined)
24
- query.limit = opts.limit;
25
- if (opts.since)
26
- query.since = opts.since;
27
- await run(() => api.get("/api/cli/scout/items", query), isJson(opts));
28
- });
29
- // ── scout add-refs ──
30
- scout
31
- .command("add-refs <postId>")
32
- .description("Add reference sources to a post (from Scout or external)")
33
- .requiredOption("--refs-file <path>", "JSON file: [{title, url, summary?, sourceName?, scoutItemId?}]")
34
- .option("--json", "Output as JSON")
35
- .action(async (postId, opts) => {
36
- const references = JSON.parse(readFileSync(opts.refsFile, "utf-8"));
37
- await run(() => api.post("/api/cli/scout/references", { postId, references }), isJson(opts));
38
- });
39
- // ── scout refs ──
40
- scout
41
- .command("refs <postId>")
42
- .description("List all references of a post")
43
- .option("--json", "Output as JSON")
44
- .action(async (postId, opts) => {
45
- await run(() => api.get("/api/cli/scout/references", { postId }), isJson(opts));
46
- });
47
- }
48
- //# sourceMappingURL=scout.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scout.js","sourceRoot":"","sources":["../../src/commands/scout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,UAAU,qBAAqB,CAAC,OAAgB,EAAE,GAAc;IACpE,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,qCAAqC,CAAC,CAAC;IAE1F,qBAAqB;IACrB,KAAK;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,gDAAgD,CAAC;SAC7D,MAAM,CAAC,qBAAqB,EAAE,4CAA4C,CAAC;SAC3E,MAAM,CAAC,uBAAuB,EAAE,iDAAiD,CAAC;SAClF,MAAM,CAAC,iBAAiB,EAAE,yCAAyC,CAAC;SACpE,MAAM,CAAC,aAAa,EAAE,kCAAkC,CAAC;SACzD,MAAM,CAAC,gBAAgB,EAAE,wDAAwD,CAAC;SAClF,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,KAAK,GAAgD,EAAE,CAAC;QAC9D,IAAI,IAAI,CAAC,OAAO;YAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC/C,IAAI,IAAI,CAAC,QAAQ;YAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;YAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAChE,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACvD,IAAI,IAAI,CAAC,KAAK;YAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,sBAAsB,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEL,uBAAuB;IACvB,KAAK;SACF,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,0DAA0D,CAAC;SACvE,cAAc,CAAC,oBAAoB,EAAE,gEAAgE,CAAC;SACtG,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QACpE,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAC;IAEL,mBAAmB;IACnB,KAAK;SACF,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,+BAA+B,CAAC;SAC5C,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QAC7B,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,2BAA2B,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;AACP,CAAC"}