@page.su/ai-blog-cli 0.1.0-beta.3 → 0.1.0-beta.5

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 (88) hide show
  1. package/dist/cli.js +2 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/comments.js +1 -1
  4. package/dist/commands/comments.js.map +1 -1
  5. package/dist/commands/skills.d.ts.map +1 -1
  6. package/dist/commands/skills.js +44 -11
  7. package/dist/commands/skills.js.map +1 -1
  8. package/dist/commands/syntax.d.ts +4 -0
  9. package/dist/commands/syntax.d.ts.map +1 -0
  10. package/dist/commands/syntax.js +29 -0
  11. package/dist/commands/syntax.js.map +1 -0
  12. package/package.json +4 -3
  13. package/dist/index.d.ts +0 -3
  14. package/dist/index.d.ts.map +0 -1
  15. package/dist/index.js +0 -100
  16. package/dist/index.js.map +0 -1
  17. package/dist/prompts/index.d.ts +0 -9
  18. package/dist/prompts/index.d.ts.map +0 -1
  19. package/dist/prompts/index.js +0 -178
  20. package/dist/prompts/index.js.map +0 -1
  21. package/dist/resources/syntax-spec.d.ts +0 -23
  22. package/dist/resources/syntax-spec.d.ts.map +0 -1
  23. package/dist/resources/syntax-spec.js +0 -105
  24. package/dist/resources/syntax-spec.js.map +0 -1
  25. package/dist/resources/syntax-spec.test.d.ts +0 -2
  26. package/dist/resources/syntax-spec.test.d.ts.map +0 -1
  27. package/dist/resources/syntax-spec.test.js +0 -47
  28. package/dist/resources/syntax-spec.test.js.map +0 -1
  29. package/dist/tools/build.d.ts +0 -13
  30. package/dist/tools/build.d.ts.map +0 -1
  31. package/dist/tools/build.js +0 -181
  32. package/dist/tools/build.js.map +0 -1
  33. package/dist/tools/code-repos.d.ts +0 -5
  34. package/dist/tools/code-repos.d.ts.map +0 -1
  35. package/dist/tools/code-repos.js +0 -149
  36. package/dist/tools/code-repos.js.map +0 -1
  37. package/dist/tools/comments.d.ts +0 -12
  38. package/dist/tools/comments.d.ts.map +0 -1
  39. package/dist/tools/comments.js +0 -87
  40. package/dist/tools/comments.js.map +0 -1
  41. package/dist/tools/demos.d.ts +0 -5
  42. package/dist/tools/demos.d.ts.map +0 -1
  43. package/dist/tools/demos.js +0 -98
  44. package/dist/tools/demos.js.map +0 -1
  45. package/dist/tools/glossary.d.ts +0 -4
  46. package/dist/tools/glossary.d.ts.map +0 -1
  47. package/dist/tools/glossary.js +0 -139
  48. package/dist/tools/glossary.js.map +0 -1
  49. package/dist/tools/helpers.d.ts +0 -44
  50. package/dist/tools/helpers.d.ts.map +0 -1
  51. package/dist/tools/helpers.js +0 -65
  52. package/dist/tools/helpers.js.map +0 -1
  53. package/dist/tools/knowledge.d.ts +0 -4
  54. package/dist/tools/knowledge.d.ts.map +0 -1
  55. package/dist/tools/knowledge.js +0 -140
  56. package/dist/tools/knowledge.js.map +0 -1
  57. package/dist/tools/math-concepts.d.ts +0 -4
  58. package/dist/tools/math-concepts.d.ts.map +0 -1
  59. package/dist/tools/math-concepts.js +0 -158
  60. package/dist/tools/math-concepts.js.map +0 -1
  61. package/dist/tools/posts.d.ts +0 -35
  62. package/dist/tools/posts.d.ts.map +0 -1
  63. package/dist/tools/posts.js +0 -278
  64. package/dist/tools/posts.js.map +0 -1
  65. package/dist/tools/scout.d.ts +0 -10
  66. package/dist/tools/scout.d.ts.map +0 -1
  67. package/dist/tools/scout.js +0 -111
  68. package/dist/tools/scout.js.map +0 -1
  69. package/dist/tools/series.d.ts +0 -12
  70. package/dist/tools/series.d.ts.map +0 -1
  71. package/dist/tools/series.js +0 -120
  72. package/dist/tools/series.js.map +0 -1
  73. package/dist/tools/syntax-capabilities.d.ts +0 -15
  74. package/dist/tools/syntax-capabilities.d.ts.map +0 -1
  75. package/dist/tools/syntax-capabilities.js +0 -859
  76. package/dist/tools/syntax-capabilities.js.map +0 -1
  77. package/dist/tools/taxonomy.d.ts +0 -4
  78. package/dist/tools/taxonomy.d.ts.map +0 -1
  79. package/dist/tools/taxonomy.js +0 -73
  80. package/dist/tools/taxonomy.js.map +0 -1
  81. package/dist/tools/uploads.d.ts +0 -15
  82. package/dist/tools/uploads.d.ts.map +0 -1
  83. package/dist/tools/uploads.js +0 -56
  84. package/dist/tools/uploads.js.map +0 -1
  85. package/dist/tools/workflows.d.ts +0 -9
  86. package/dist/tools/workflows.d.ts.map +0 -1
  87. package/dist/tools/workflows.js +0 -249
  88. package/dist/tools/workflows.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../../src/tools/knowledge.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import { type ApiClient } from "../api-client.js";
3
- export declare function registerMathConceptTools(server: McpServer, api: ApiClient): void;
4
- //# sourceMappingURL=math-concepts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"math-concepts.d.ts","sourceRoot":"","sources":["../../src/tools/math-concepts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAgElE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CA0HhF"}
@@ -1,158 +0,0 @@
1
- import { z } from "zod";
2
- import { ApiClientError } from "../api-client.js";
3
- /**
4
- * 数学知识库相关 MCP 工具:math_concept.list / get / create / update / delete / find_or_suggest
5
- *
6
- * 独立于 post 和 glossary 工具,数学概念有额外的 difficulty/formulas/notation/prerequisites 字段,
7
- * 且语义上应与文章和术语区分,AI 使用时更清晰。
8
- */
9
- /** 数学概念字段 schema */
10
- const mathConceptFieldsShape = {
11
- title: z.string().min(1).describe("数学概念标题,必填").optional(),
12
- slug: z.string().describe("概念 slug;为空时由后端自动生成").optional(),
13
- status: z.enum(["draft", "published"]).describe("状态").optional(),
14
- publishedAt: z.string().describe("ISO 时间字符串").optional(),
15
- categoryIds: z.array(z.string().uuid()).describe("分类 id 列表").optional(),
16
- tagIds: z.array(z.string().uuid()).describe("标签 id 列表").optional(),
17
- excerpt: z.string().describe("摘要,最长 400 字符").optional(),
18
- content: z.string().describe("Markdown 正文,数学概念的完整说明,建议包含 Live Demo 可视化").optional(),
19
- seoTitle: z.string().describe("SEO 标题").optional(),
20
- seoDescription: z.string().describe("SEO 描述").optional(),
21
- terms: z.string().describe("匹配词,多个用 | 分隔,如 '贝叶斯定理|Bayes' theorem|贝叶斯公式'").optional(),
22
- brief: z.string().describe("简短释义(≤200字),用于 hover tooltip").optional(),
23
- autoLink: z.boolean().describe("是否启用自动高亮匹配").optional(),
24
- difficulty: z.number().int().min(1).max(5).describe("难度等级 1-5(1=入门, 2=基础, 3=进阶, 4=高级, 5=专家)").optional(),
25
- formulas: z.string().describe("核心公式(LaTeX),列表页预览用").optional(),
26
- notation: z.string().describe("符号说明,如 'n: 样本数, μ: 均值'").optional(),
27
- prerequisites: z.string().describe("前置知识 slug 列表(逗号分隔)").optional(),
28
- };
29
- function toToolText(value) {
30
- return {
31
- content: [
32
- {
33
- type: "text",
34
- text: typeof value === "string" ? value : JSON.stringify(value, null, 2),
35
- },
36
- ],
37
- };
38
- }
39
- function toToolError(error) {
40
- let text;
41
- if (error instanceof ApiClientError) {
42
- const lines = [`HTTP ${error.status}: ${error.message}`];
43
- if (error.issues !== undefined) {
44
- lines.push("Validation issues:");
45
- lines.push(JSON.stringify(error.issues, null, 2));
46
- }
47
- text = lines.join("\n");
48
- }
49
- else if (error instanceof Error) {
50
- text = error.message;
51
- }
52
- else {
53
- text = String(error);
54
- }
55
- return {
56
- content: [{ type: "text", text }],
57
- isError: true,
58
- };
59
- }
60
- export function registerMathConceptTools(server, api) {
61
- // ── math_concept.list ──
62
- server.tool("math_concept_list", "列出数学知识库中的概念。支持按状态筛选、难度筛选和关键词搜索。", {
63
- status: z.enum(["draft", "published"]).describe("按状态筛选").optional(),
64
- difficulty: z.number().int().min(1).max(5).describe("按难度筛选(1-5)").optional(),
65
- search: z.string().describe("搜索关键词(匹配概念名/匹配词)").optional(),
66
- page: z.number().int().positive().describe("页码,默认 1").optional(),
67
- pageSize: z.number().int().positive().max(100).describe("每页数量,默认 20").optional(),
68
- }, async ({ status, difficulty, search, page, pageSize }) => {
69
- try {
70
- const params = new URLSearchParams();
71
- if (status)
72
- params.set("status", status);
73
- if (difficulty)
74
- params.set("difficulty", String(difficulty));
75
- if (search)
76
- params.set("search", search);
77
- if (page)
78
- params.set("page", String(page));
79
- if (pageSize)
80
- params.set("pageSize", String(pageSize));
81
- const result = await api.get(`/api/mcp/math-concepts?action=list&${params.toString()}`);
82
- return toToolText(result);
83
- }
84
- catch (error) {
85
- return toToolError(error);
86
- }
87
- });
88
- // ── math_concept.get ──
89
- server.tool("math_concept_get", "获取一个数学概念的完整可编辑数据,包含匹配词、简短释义、难度、公式、符号说明等。", {
90
- id: z.string().uuid().describe("数学概念 id (uuid)"),
91
- }, async ({ id }) => {
92
- try {
93
- const result = await api.get(`/api/mcp/math-concepts?action=get&id=${id}`);
94
- return toToolText(result);
95
- }
96
- catch (error) {
97
- return toToolError(error);
98
- }
99
- });
100
- // ── math_concept.create ──
101
- server.tool("math_concept_create", "创建一个新的数学概念条目。terms(匹配词)、brief(简短释义)、difficulty(难度)为关键字段。content 建议包含 Live Demo 可视化。", mathConceptFieldsShape, async (params) => {
102
- try {
103
- const result = await api.post("/api/mcp/math-concepts", {
104
- action: "create",
105
- data: params,
106
- });
107
- return toToolText(result);
108
- }
109
- catch (error) {
110
- return toToolError(error);
111
- }
112
- });
113
- // ── math_concept.update ──
114
- server.tool("math_concept_update", "更新一个已有的数学概念条目。需要传入完整字段。", {
115
- id: z.string().uuid().describe("数学概念 id (uuid)"),
116
- ...mathConceptFieldsShape,
117
- }, async ({ id, ...data }) => {
118
- try {
119
- const result = await api.post("/api/mcp/math-concepts", {
120
- action: "update",
121
- id,
122
- data,
123
- });
124
- return toToolText(result);
125
- }
126
- catch (error) {
127
- return toToolError(error);
128
- }
129
- });
130
- // ── math_concept.delete ──
131
- server.tool("math_concept_delete", "永久删除一个数学概念条目。请谨慎使用。", {
132
- id: z.string().uuid().describe("数学概念 id (uuid)"),
133
- }, async ({ id }) => {
134
- try {
135
- const result = await api.post("/api/mcp/math-concepts", {
136
- action: "delete",
137
- id,
138
- });
139
- return toToolText(result);
140
- }
141
- catch (error) {
142
- return toToolError(error);
143
- }
144
- });
145
- // ── math_concept.find_or_suggest ──
146
- server.tool("math_concept_find_or_suggest", "写文章时传入数学关键词,查找是否已有匹配的数学概念。如果有则返回概念信息(可直接引用),如果没有则提示创建新概念。这是写数学相关文章时推荐先调用的工具。", {
147
- keyword: z.string().min(1).describe("要查找的数学关键词,如 '贝叶斯' 或 'gradient descent'"),
148
- }, async ({ keyword }) => {
149
- try {
150
- const result = await api.get(`/api/mcp/math-concepts?action=find_or_suggest&keyword=${encodeURIComponent(keyword)}`);
151
- return toToolText(result);
152
- }
153
- catch (error) {
154
- return toToolError(error);
155
- }
156
- });
157
- }
158
- //# sourceMappingURL=math-concepts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"math-concepts.js","sourceRoot":"","sources":["../../src/tools/math-concepts.ts"],"names":[],"mappings":"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"}
@@ -1,35 +0,0 @@
1
- import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import { type ApiClient } from "../api-client.js";
3
- /** 把任意值序列化为可读 JSON 文本,用于 tool result */
4
- declare function toToolText(value: unknown): {
5
- content: Array<{
6
- type: "text";
7
- text: string;
8
- }>;
9
- };
10
- /** 把 ApiClientError 转成可读的 tool error result,让 AI 能在对话里看到原因 */
11
- declare function toToolError(error: unknown): {
12
- content: Array<{
13
- type: "text";
14
- text: string;
15
- }>;
16
- isError: true;
17
- };
18
- /** 在 tool 的 callback 内统一接住异常,避免抛出去后 SDK 给客户端 generic 错误 */
19
- declare function safe<T>(fn: () => Promise<T>): Promise<{
20
- content: Array<{
21
- type: "text";
22
- text: string;
23
- }>;
24
- isError?: true;
25
- }>;
26
- /** 注册全部 post.* 工具 */
27
- export declare function registerPostTools(server: McpServer, api: ApiClient): void;
28
- /** 工具内部辅助:暴露给 build.ts / validate.ts 等共享 toToolText/toToolError */
29
- export declare const toolReplyHelpers: {
30
- toToolText: typeof toToolText;
31
- toToolError: typeof toToolError;
32
- safe: typeof safe;
33
- };
34
- export {};
35
- //# sourceMappingURL=posts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"posts.d.ts","sourceRoot":"","sources":["../../src/tools/posts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AA6ClE,wCAAwC;AACxC,iBAAS,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAStF;AAED,8DAA8D;AAC9D,iBAAS,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG;IACpC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,EAAE,IAAI,CAAC;CACf,CAkBA;AAED,2DAA2D;AAC3D,iBAAe,IAAI,CAAC,CAAC,EACnB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC,CAO7E;AAED,qBAAqB;AACrB,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CAwRzE;AAED,mEAAmE;AACnE,eAAO,MAAM,gBAAgB;;;;CAAoC,CAAC"}
@@ -1,278 +0,0 @@
1
- import { z } from "zod";
2
- import { ApiClientError } from "../api-client.js";
3
- /**
4
- * 文章相关 MCP 工具:post.list / get / list_for_reference / create / update / update_status / delete。
5
- *
6
- * 设计原则:
7
- * - 工具的入参 schema 用 zod raw shape 形态(McpServer 要求),尽量与
8
- * ai-blog 端的 `postEditorSchema` 字段对齐
9
- * - 不在 mcp-server 端校验业务规则;服务端 zod 报错会通过 ApiClientError
10
- * 携带 issues 透传给 AI 客户端,由 AI 自行修正后重试
11
- * - tool 的返回统一打包为 `{ content: [{ type: "text", text: <json> }] }`
12
- * (MCP 规范的 tool result 形态)
13
- */
14
- /** post.create / post.update 共用的字段 schema(raw shape) */
15
- const postFieldsShape = {
16
- title: z.string().min(1).describe("文章标题,必填,1-255 字符").optional(),
17
- slug: z.string().describe("文章 slug;为空时由后端基于标题自动生成").optional(),
18
- coverImage: z
19
- .string()
20
- .describe("封面图:必须是 /api/assets/oss/... 站内 URL,或合规 https 外链")
21
- .optional(),
22
- status: z.enum(["draft", "published"]).describe("文章状态").optional(),
23
- publishedAt: z
24
- .string()
25
- .describe("ISO 时间字符串;status=published 且未传时由后端置为当前时间")
26
- .optional(),
27
- categoryIds: z
28
- .array(z.string().uuid())
29
- .describe("分类 id 列表(uuid),从 taxonomy.list 工具获取")
30
- .optional(),
31
- tagIds: z
32
- .array(z.string().uuid())
33
- .describe("标签 id 列表(uuid),从 taxonomy.list 工具获取")
34
- .optional(),
35
- excerpt: z.string().describe("摘要,最长 400 字符").optional(),
36
- content: z
37
- .string()
38
- .describe("Markdown 正文;可包含 frontmatter、callout、live-demo 等 14 类高级语法"),
39
- seoTitle: z.string().describe("SEO 标题,最长 255 字符").optional(),
40
- seoDescription: z.string().describe("SEO 描述,最长 320 字符").optional(),
41
- canonicalUrl: z.string().describe("规范链接 URL").optional(),
42
- commentsEnabled: z.boolean().describe("是否开启评论").optional(),
43
- };
44
- /** 把任意值序列化为可读 JSON 文本,用于 tool result */
45
- function toToolText(value) {
46
- return {
47
- content: [
48
- {
49
- type: "text",
50
- text: typeof value === "string" ? value : JSON.stringify(value, null, 2),
51
- },
52
- ],
53
- };
54
- }
55
- /** 把 ApiClientError 转成可读的 tool error result,让 AI 能在对话里看到原因 */
56
- function toToolError(error) {
57
- let text;
58
- if (error instanceof ApiClientError) {
59
- const lines = [`HTTP ${error.status}: ${error.message}`];
60
- if (error.issues !== undefined) {
61
- lines.push("Validation issues:");
62
- lines.push(JSON.stringify(error.issues, null, 2));
63
- }
64
- text = lines.join("\n");
65
- }
66
- else if (error instanceof Error) {
67
- text = error.message;
68
- }
69
- else {
70
- text = String(error);
71
- }
72
- return {
73
- content: [{ type: "text", text }],
74
- isError: true,
75
- };
76
- }
77
- /** 在 tool 的 callback 内统一接住异常,避免抛出去后 SDK 给客户端 generic 错误 */
78
- async function safe(fn) {
79
- try {
80
- const result = await fn();
81
- return toToolText(result);
82
- }
83
- catch (error) {
84
- return toToolError(error);
85
- }
86
- }
87
- /** 注册全部 post.* 工具 */
88
- export function registerPostTools(server, api) {
89
- // ─── post.list ─────────────────────────────────────────────────────────
90
- server.registerTool("post.list", {
91
- title: "List posts",
92
- description: "列出博客中的所有文章(管理员视图,含 draft 与 published)。支持按 status 筛选 / 关键词模糊匹配 / 限制返回数量。",
93
- inputSchema: {
94
- status: z.enum(["draft", "published"]).optional(),
95
- q: z.string().describe("title/slug 模糊匹配关键词").optional(),
96
- limit: z.number().int().positive().max(100).optional(),
97
- },
98
- }, async ({ status, q, limit }) => safe(() => api.get("/api/mcp/posts", {
99
- status,
100
- q,
101
- limit,
102
- })));
103
- // ─── post.get ──────────────────────────────────────────────────────────
104
- server.registerTool("post.get", {
105
- title: "Get post detail",
106
- description: "根据 id 获取一篇文章的完整可编辑视图(含 markdown 原文与 categoryIds / tagIds)。" +
107
- "⚠️ 文章超过 5000 字时,推荐改用 post.get_outline + post.get_section 按需读取,节省 token。",
108
- inputSchema: {
109
- id: z.string().describe("文章 id (uuid)"),
110
- },
111
- }, async ({ id }) => safe(() => api.get(`/api/mcp/posts/${encodeURIComponent(id)}`)));
112
- // ─── post.list_for_reference ───────────────────────────────────────────
113
- server.registerTool("post.list_for_reference", {
114
- title: "List posts for site reference",
115
- description: "为站内引用 [标题](../posts/<slug>) 提供候选列表,返回 id/title/slug/status。MCP 客户端在生成站内引用前应先调用本工具校验 slug。",
116
- inputSchema: {
117
- q: z.string().optional(),
118
- },
119
- }, async ({ q }) => safe(() => api.get("/api/mcp/posts", {
120
- mode: "reference",
121
- q,
122
- })));
123
- // ─── post.create ───────────────────────────────────────────────────────
124
- server.registerTool("post.create", {
125
- title: "Create post",
126
- description: "创建一篇文章。content 必填,且必须满足 ai-blog 的 markdown 规范(参见 mcp://syntax-spec/* 资源)。" +
127
- "⚠️ 创建前先调 taxonomy.list 获取合法的 categoryIds/tagIds。" +
128
- "超长文章(>10000字)建议先创建骨架,再用 post.append_content 分片追加。" +
129
- "首次写文章前调 describe_workflows 获取完整工作流。",
130
- inputSchema: postFieldsShape,
131
- }, async (args) => safe(() => api.post("/api/mcp/posts", args)));
132
- // ─── post.update ───────────────────────────────────────────────────────
133
- server.registerTool("post.update", {
134
- title: "Update post",
135
- description: "全量更新一篇文章。需要传入完整字段(与 create 一致),后端会按 postEditorSchema 整体校验。" +
136
- "⚠️ 仅适用于短文章(<5000字)或需要全面重写的场景。" +
137
- "大文章局部修改请改用 post.get_outline → post.get_section → post.replace_section 工作流。",
138
- inputSchema: {
139
- id: z.string().describe("文章 id (uuid)"),
140
- ...postFieldsShape,
141
- },
142
- }, async (args) => {
143
- const { id, ...rest } = args;
144
- return safe(() => api.patch(`/api/mcp/posts/${encodeURIComponent(id)}`, rest));
145
- });
146
- // ─── post.update_status ────────────────────────────────────────────────
147
- server.registerTool("post.update_status", {
148
- title: "Publish or unpublish a post",
149
- description: "轻量更新发布状态(不修改其他字段)。",
150
- inputSchema: {
151
- id: z.string().describe("文章 id (uuid)"),
152
- status: z.enum(["draft", "published"]),
153
- },
154
- }, async ({ id, status }) => safe(() => api.patch(`/api/mcp/posts/${encodeURIComponent(id)}/status`, { status })));
155
- // ─── post.delete ───────────────────────────────────────────────────────
156
- server.registerTool("post.delete", {
157
- title: "Delete post",
158
- description: "永久删除文章。请慎重使用。",
159
- inputSchema: {
160
- id: z.string().describe("文章 id (uuid)"),
161
- },
162
- }, async ({ id }) => safe(() => api.delete(`/api/mcp/posts/${encodeURIComponent(id)}`)));
163
- // ─── post.append_content ────────────────────────────────────────────────
164
- server.registerTool("post.append_content", {
165
- title: "Append content to a post",
166
- description: "向已有文章末尾追加 Markdown 内容片段。" +
167
- "⚠️ 仅用于超长文章的分片写入场景(先 post.create 骨架,再多次 append 追加章节)。" +
168
- "修改已有内容请用 post.replace_section,不要用 append。" +
169
- "每次追加建议 3000-8000 字,全文写完后用 post.validate_markdown 校验。",
170
- inputSchema: {
171
- id: z.string().describe("文章 id (uuid)"),
172
- content: z
173
- .string()
174
- .min(1)
175
- .describe("要追加的 Markdown 片段,建议单次 3000-8000 字,不超过 10000 字"),
176
- },
177
- }, async ({ id, content }) => safe(() => api.patch(`/api/mcp/posts/${encodeURIComponent(id)}/append`, { content })));
178
- // ─── post.get_outline ───────────────────────────────────────────────────
179
- server.registerTool("post.get_outline", {
180
- title: "Get post outline",
181
- description: "返回文章的章节大纲,含每节的序号(index)、标题、级别、字符数、内容预览(前100字符)。" +
182
- "用于了解文章结构而不需要读取全文,大幅减少 token 消耗。" +
183
- "配合 post.get_section 读取特定章节,配合 post.replace_section(传 sectionIndex)精准替换。",
184
- inputSchema: {
185
- id: z.string().describe("文章 id (uuid)"),
186
- },
187
- }, async ({ id }) => safe(() => api.get(`/api/mcp/posts/${encodeURIComponent(id)}/outline`)));
188
- // ─── post.get_section ─────────────────────────────────────────────────
189
- server.registerTool("post.get_section", {
190
- title: "Get a section's content",
191
- description: "读取文章中某个章节的完整 markdown 内容。" +
192
- "支持通过 index(从 post.get_outline 获取)或 heading 文本定位。" +
193
- "用于精准读取特定章节,避免读取全文的 token 消耗。",
194
- inputSchema: {
195
- id: z.string().describe("文章 id (uuid)"),
196
- index: z
197
- .number()
198
- .int()
199
- .min(0)
200
- .describe("章节序号(从 post.get_outline 获取,0 起始)")
201
- .optional(),
202
- heading: z
203
- .string()
204
- .describe("章节标题文本(含 # 前缀如 '## 标题',或不含前缀如 '标题')")
205
- .optional(),
206
- },
207
- }, async ({ id, index, heading }) => safe(() => api.get(`/api/mcp/posts/${encodeURIComponent(id)}/sections`, {
208
- index,
209
- heading,
210
- })));
211
- // ─── post.replace_section ──────────────────────────────────────────────
212
- server.registerTool("post.replace_section", {
213
- title: "Replace a section in a post",
214
- description: "按 Markdown 标题定位并替换文章中的某个章节。适用于超长文章的局部修改:" +
215
- "通过章节标题或序号(从 post.get_outline 获取)精确定位,只传入该章节的新内容。" +
216
- "替换范围:从目标标题行到下一个同级或更高级标题之间的全部内容。" +
217
- "sectionHeading 和 sectionIndex 二选一,推荐使用 sectionIndex(更精准)。",
218
- inputSchema: {
219
- id: z.string().describe("文章 id (uuid)"),
220
- sectionHeading: z
221
- .string()
222
- .min(1)
223
- .describe("目标章节的完整标题文本(含 # 前缀),如 '## 第三章 初入江湖'。与 sectionIndex 二选一")
224
- .optional(),
225
- sectionIndex: z
226
- .number()
227
- .int()
228
- .min(0)
229
- .describe("目标章节序号(从 post.get_outline 获取,0 起始)。与 sectionHeading 二选一,推荐优先使用")
230
- .optional(),
231
- newContent: z
232
- .string()
233
- .min(1)
234
- .describe("替换后的章节完整内容(必须含标题行本身)"),
235
- },
236
- }, async ({ id, sectionHeading, sectionIndex, newContent }) => safe(() => api.patch(`/api/mcp/posts/${encodeURIComponent(id)}/replace-section`, {
237
- ...(sectionHeading !== undefined ? { sectionHeading } : {}),
238
- ...(sectionIndex !== undefined ? { sectionIndex } : {}),
239
- newContent,
240
- })));
241
- // ─── post.insert_section ───────────────────────────────────────────────
242
- server.registerTool("post.insert_section", {
243
- title: "Insert a new section into a post",
244
- description: "在文章的指定章节后面插入新章节。" +
245
- "afterIndex 从 post.get_outline 获取:传目标章节的 index,新内容会插入到该章节之后。" +
246
- "传 -1 则插入到文章最开头。" +
247
- "⚠️ 与 post.append_content(只能追加到末尾)不同,此工具可以在任意位置插入。",
248
- inputSchema: {
249
- id: z.string().describe("文章 id (uuid)"),
250
- afterIndex: z
251
- .number()
252
- .int()
253
- .min(-1)
254
- .describe("在哪个章节后面插入(-1=最开头,0=第一个章节后,以此类推)。从 post.get_outline 获取 index"),
255
- content: z
256
- .string()
257
- .min(1)
258
- .describe("要插入的章节完整内容(应包含标题行)"),
259
- },
260
- }, async ({ id, afterIndex, content }) => safe(() => api.post(`/api/mcp/posts/${encodeURIComponent(id)}/insert-section`, {
261
- afterIndex,
262
- content,
263
- })));
264
- // ─── post.validate_markdown ────────────────────────────────────────────
265
- // 让 AI 在写库前先跑一遍编辑器同款 9 条 diagnostic 规则,结合 mcp://syntax-spec/* 自检
266
- server.registerTool("post.validate_markdown", {
267
- title: "Validate markdown content",
268
- description: "对一段 markdown 跑编辑器同款的 9 条 diagnostic 规则,返回 issues。" +
269
- "⚠️ 在 post.create / post.update 之前必须先跑一次;errors 级别问题必须修复后再提交。" +
270
- "发布文章前也应跑一次最终校验。",
271
- inputSchema: {
272
- content: z.string().describe("含 frontmatter 的 markdown 原文"),
273
- },
274
- }, async ({ content }) => safe(() => api.post("/api/mcp/validate", { content })));
275
- }
276
- /** 工具内部辅助:暴露给 build.ts / validate.ts 等共享 toToolText/toToolError */
277
- export const toolReplyHelpers = { toToolText, toToolError, safe };
278
- //# sourceMappingURL=posts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"posts.js","sourceRoot":"","sources":["../../src/tools/posts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAkB,MAAM,kBAAkB,CAAC;AAElE;;;;;;;;;;GAUG;AAEH,wDAAwD;AACxD,MAAM,eAAe,GAAG;IACtB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE;IAChE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC,QAAQ,EAAE;IAC9D,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,CAAC,iDAAiD,CAAC;SAC3D,QAAQ,EAAE;IACb,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE;IAClE,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,CAAC,0CAA0C,CAAC;SACpD,QAAQ,EAAE;IACb,WAAW,EAAE,CAAC;SACX,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;SACxB,QAAQ,CAAC,qCAAqC,CAAC;SAC/C,QAAQ,EAAE;IACb,MAAM,EAAE,CAAC;SACN,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;SACxB,QAAQ,CAAC,qCAAqC,CAAC;SAC/C,QAAQ,EAAE;IACb,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE;IACnD,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,CAAC,0DAA0D,CAAC;IAC3E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE;IAC5D,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE;IAClE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE;IACxD,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE;CAClD,CAAC;AAEX,wCAAwC;AACxC,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aACzE;SACF;KACF,CAAC;AACJ,CAAC;AAED,8DAA8D;AAC9D,SAAS,WAAW,CAAC,KAAc;IAIjC,IAAI,IAAY,CAAC;IACjB,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,CAAC,QAAQ,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;SAAM,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAClC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACjC,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED,2DAA2D;AAC3D,KAAK,UAAU,IAAI,CACjB,EAAoB;IAEpB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;QAC1B,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,qBAAqB;AACrB,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,GAAc;IACjE,0EAA0E;IAC1E,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,KAAK,EAAE,YAAY;QACnB,WAAW,EACT,yEAAyE;QAC3E,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE;YACjD,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE;YACvD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;SACvD;KACF,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAC7B,IAAI,CAAC,GAAG,EAAE,CACR,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE;QACxB,MAAM;QACN,CAAC;QACD,KAAK;KACN,CAAC,CACH,CACJ,CAAC;IAEF,0EAA0E;IAC1E,MAAM,CAAC,YAAY,CACjB,UAAU,EACV;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,4DAA4D;YAC5D,yEAAyE;QAC3E,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;SACxC;KACF,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAClF,CAAC;IAEF,0EAA0E;IAC1E,MAAM,CAAC,YAAY,CACjB,yBAAyB,EACzB;QACE,KAAK,EAAE,+BAA+B;QACtC,WAAW,EACT,2FAA2F;QAC7F,WAAW,EAAE;YACX,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SACzB;KACF,EACD,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CACd,IAAI,CAAC,GAAG,EAAE,CACR,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE;QACxB,IAAI,EAAE,WAAW;QACjB,CAAC;KACF,CAAC,CACH,CACJ,CAAC;IAEF,0EAA0E;IAC1E,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,KAAK,EAAE,aAAa;QACpB,WAAW,EACT,2EAA2E;YAC3E,kDAAkD;YAClD,mDAAmD;YACnD,qCAAqC;QACvC,WAAW,EAAE,eAAe;KAC7B,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAC7D,CAAC;IAEF,0EAA0E;IAC1E,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,KAAK,EAAE,aAAa;QACpB,WAAW,EACT,4DAA4D;YAC5D,+BAA+B;YAC/B,4EAA4E;QAC9E,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YACvC,GAAG,eAAe;SACnB;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QAC7B,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;IACjF,CAAC,CACF,CAAC;IAEF,0EAA0E;IAC1E,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,6BAA6B;QACpC,WAAW,EAAE,oBAAoB;QACjC,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YACvC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;SACvC;KACF,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CACvB,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CACvF,CAAC;IAEF,0EAA0E;IAC1E,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;SACxC;KACF,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACrF,CAAC;IAEF,2EAA2E;IAC3E,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,0BAA0B;QACjC,WAAW,EACT,0BAA0B;YAC1B,sDAAsD;YACtD,2CAA2C;YAC3C,sDAAsD;QACxD,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YACvC,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,+CAA+C,CAAC;SAC7D;KACF,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CACxB,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CACxF,CAAC;IAEF,2EAA2E;IAC3E,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACT,iDAAiD;YACjD,iCAAiC;YACjC,yEAAyE;QAC3E,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;SACxC;KACF,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CACf,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAC1E,CAAC;IAEF,yEAAyE;IACzE,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,KAAK,EAAE,yBAAyB;QAChC,WAAW,EACT,2BAA2B;YAC3B,kDAAkD;YAClD,8BAA8B;QAChC,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YACvC,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,kCAAkC,CAAC;iBAC5C,QAAQ,EAAE;YACb,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,CAAC,qCAAqC,CAAC;iBAC/C,QAAQ,EAAE;SACd;KACF,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAC/B,IAAI,CAAC,GAAG,EAAE,CACR,GAAG,CAAC,GAAG,CAAC,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,WAAW,EAAE;QAC3D,KAAK;QACL,OAAO;KACR,CAAC,CACH,CACJ,CAAC;IAEF,0EAA0E;IAC1E,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,6BAA6B;QACpC,WAAW,EACT,0CAA0C;YAC1C,kDAAkD;YAClD,iCAAiC;YACjC,2DAA2D;QAC7D,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YACvC,cAAc,EAAE,CAAC;iBACd,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,wDAAwD,CAAC;iBAClE,QAAQ,EAAE;YACb,YAAY,EAAE,CAAC;iBACZ,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,gEAAgE,CAAC;iBAC1E,QAAQ,EAAE;YACb,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,sBAAsB,CAAC;SACpC;KACF,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE,CACzD,IAAI,CAAC,GAAG,EAAE,CACR,GAAG,CAAC,KAAK,CAAC,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,kBAAkB,EAAE;QACpE,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,UAAU;KACX,CAAC,CACH,CACJ,CAAC;IAEF,0EAA0E;IAC1E,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,kCAAkC;QACzC,WAAW,EACT,kBAAkB;YAClB,6DAA6D;YAC7D,iBAAiB;YACjB,mDAAmD;QACrD,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YACvC,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC,CAAC;iBACP,QAAQ,CAAC,6DAA6D,CAAC;YAC1E,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,oBAAoB,CAAC;SAClC;KACF,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CACpC,IAAI,CAAC,GAAG,EAAE,CACR,GAAG,CAAC,IAAI,CAAC,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,iBAAiB,EAAE;QAClE,UAAU;QACV,OAAO;KACR,CAAC,CACH,CACJ,CAAC;IAEF,0EAA0E;IAC1E,iEAAiE;IACjE,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,KAAK,EAAE,2BAA2B;QAClC,WAAW,EACT,mDAAmD;YACnD,8DAA8D;YAC9D,iBAAiB;QACnB,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;SAC5D;KACF,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAC9E,CAAC;AACJ,CAAC;AAED,mEAAmE;AACnE,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC"}
@@ -1,10 +0,0 @@
1
- import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import type { ApiClient } from "../api-client.js";
3
- /**
4
- * Scout 相关 MCP 工具:scout.search_items
5
- *
6
- * 允许 AI 在写博客文章时搜索 Scout 系统采集的高质量素材,
7
- * 将全网技术资讯作为参考资料融入文章内容。
8
- */
9
- export declare function registerScoutTools(server: McpServer, api: ApiClient): void;
10
- //# sourceMappingURL=scout.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scout.d.ts","sourceRoot":"","sources":["../../src/tools/scout.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD;;;;;GAKG;AAEH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CAgJ1E"}