@zlooks.cn/blog-server 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/blog/blog-application.d.ts +153 -0
- package/dist/blog/blog-application.d.ts.map +1 -0
- package/dist/blog/blog-application.js +115 -0
- package/dist/blog/blog-application.js.map +1 -0
- package/dist/blog/comment-client-metadata.d.ts +19 -0
- package/dist/blog/comment-client-metadata.d.ts.map +1 -0
- package/dist/blog/comment-client-metadata.js +78 -0
- package/dist/blog/comment-client-metadata.js.map +1 -0
- package/dist/blog/errors.d.ts +12 -0
- package/dist/blog/errors.d.ts.map +1 -0
- package/dist/blog/errors.js +21 -0
- package/dist/blog/errors.js.map +1 -0
- package/dist/blog/micro-user-directory.d.ts +11 -0
- package/dist/blog/micro-user-directory.d.ts.map +1 -0
- package/dist/blog/micro-user-directory.js +18 -0
- package/dist/blog/micro-user-directory.js.map +1 -0
- package/dist/blog/post-content-audit.d.ts +34 -0
- package/dist/blog/post-content-audit.d.ts.map +1 -0
- package/dist/blog/post-content-audit.js +190 -0
- package/dist/blog/post-content-audit.js.map +1 -0
- package/dist/blog/post-view-cache.d.ts +15 -0
- package/dist/blog/post-view-cache.d.ts.map +1 -0
- package/dist/blog/post-view-cache.js +23 -0
- package/dist/blog/post-view-cache.js.map +1 -0
- package/dist/blog/public-blog-micro.d.ts +291 -0
- package/dist/blog/public-blog-micro.d.ts.map +1 -0
- package/dist/blog/public-blog-micro.js +71 -0
- package/dist/blog/public-blog-micro.js.map +1 -0
- package/dist/blog/public-blog-service.d.ts +104 -0
- package/dist/blog/public-blog-service.d.ts.map +1 -0
- package/dist/blog/public-blog-service.js +341 -0
- package/dist/blog/public-blog-service.js.map +1 -0
- package/dist/browser-api/dispatch-stream.d.ts +5 -0
- package/dist/browser-api/dispatch-stream.d.ts.map +1 -0
- package/dist/browser-api/dispatch-stream.js +4 -0
- package/dist/browser-api/dispatch-stream.js.map +1 -0
- package/dist/browser-api/dispatcher.d.ts +15 -0
- package/dist/browser-api/dispatcher.d.ts.map +1 -0
- package/dist/browser-api/dispatcher.js +145 -0
- package/dist/browser-api/dispatcher.js.map +1 -0
- package/dist/browser-api/provider-publisher.d.ts +24 -0
- package/dist/browser-api/provider-publisher.d.ts.map +1 -0
- package/dist/browser-api/provider-publisher.js +107 -0
- package/dist/browser-api/provider-publisher.js.map +1 -0
- package/dist/command/index.d.ts +3 -0
- package/dist/command/index.d.ts.map +1 -0
- package/dist/command/index.js +24 -0
- package/dist/command/index.js.map +1 -0
- package/dist/config/schema.d.ts +25 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +19 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/contracts/identity.d.ts +2 -0
- package/dist/contracts/identity.d.ts.map +1 -0
- package/dist/contracts/identity.js +2 -0
- package/dist/contracts/identity.js.map +1 -0
- package/dist/contracts/mcp.d.ts +69 -0
- package/dist/contracts/mcp.d.ts.map +1 -0
- package/dist/contracts/mcp.js +41 -0
- package/dist/contracts/mcp.js.map +1 -0
- package/dist/contracts/public-api.d.ts +3 -0
- package/dist/contracts/public-api.d.ts.map +1 -0
- package/dist/contracts/public-api.js +2 -0
- package/dist/contracts/public-api.js.map +1 -0
- package/dist/mcp/blog-prompts.d.ts +135 -0
- package/dist/mcp/blog-prompts.d.ts.map +1 -0
- package/dist/mcp/blog-prompts.js +107 -0
- package/dist/mcp/blog-prompts.js.map +1 -0
- package/dist/mcp/blog-provider.d.ts +4 -0
- package/dist/mcp/blog-provider.d.ts.map +1 -0
- package/dist/mcp/blog-provider.js +27 -0
- package/dist/mcp/blog-provider.js.map +1 -0
- package/dist/mcp/blog-theme-authoring-prompt.d.ts +19 -0
- package/dist/mcp/blog-theme-authoring-prompt.d.ts.map +1 -0
- package/dist/mcp/blog-theme-authoring-prompt.js +171 -0
- package/dist/mcp/blog-theme-authoring-prompt.js.map +1 -0
- package/dist/mcp/category-tools.d.ts +45 -0
- package/dist/mcp/category-tools.d.ts.map +1 -0
- package/dist/mcp/category-tools.js +14 -0
- package/dist/mcp/category-tools.js.map +1 -0
- package/dist/mcp/comment-tools.d.ts +44 -0
- package/dist/mcp/comment-tools.d.ts.map +1 -0
- package/dist/mcp/comment-tools.js +15 -0
- package/dist/mcp/comment-tools.js.map +1 -0
- package/dist/mcp/friend-link-tools.d.ts +63 -0
- package/dist/mcp/friend-link-tools.d.ts.map +1 -0
- package/dist/mcp/friend-link-tools.js +16 -0
- package/dist/mcp/friend-link-tools.js.map +1 -0
- package/dist/mcp/page-tools.d.ts +67 -0
- package/dist/mcp/page-tools.d.ts.map +1 -0
- package/dist/mcp/page-tools.js +36 -0
- package/dist/mcp/page-tools.js.map +1 -0
- package/dist/mcp/post-tools.d.ts +114 -0
- package/dist/mcp/post-tools.d.ts.map +1 -0
- package/dist/mcp/post-tools.js +122 -0
- package/dist/mcp/post-tools.js.map +1 -0
- package/dist/mcp/tag-tools.d.ts +37 -0
- package/dist/mcp/tag-tools.d.ts.map +1 -0
- package/dist/mcp/tag-tools.js +14 -0
- package/dist/mcp/tag-tools.js.map +1 -0
- package/dist/mcp/theme-tools.d.ts +16 -0
- package/dist/mcp/theme-tools.d.ts.map +1 -0
- package/dist/mcp/theme-tools.js +71 -0
- package/dist/mcp/theme-tools.js.map +1 -0
- package/dist/mcp/tool-descriptions.d.ts +5 -0
- package/dist/mcp/tool-descriptions.d.ts.map +1 -0
- package/dist/mcp/tool-descriptions.js +51 -0
- package/dist/mcp/tool-descriptions.js.map +1 -0
- package/dist/mcp/tool-support.d.ts +242 -0
- package/dist/mcp/tool-support.d.ts.map +1 -0
- package/dist/mcp/tool-support.js +127 -0
- package/dist/mcp/tool-support.js.map +1 -0
- package/dist/messages/browser/dispatch.msg.d.ts +3 -0
- package/dist/messages/browser/dispatch.msg.d.ts.map +1 -0
- package/dist/messages/browser/dispatch.msg.js +9 -0
- package/dist/messages/browser/dispatch.msg.js.map +1 -0
- package/dist/messages/public/categories/list.msg.d.ts +3 -0
- package/dist/messages/public/categories/list.msg.d.ts.map +1 -0
- package/dist/messages/public/categories/list.msg.js +8 -0
- package/dist/messages/public/categories/list.msg.js.map +1 -0
- package/dist/messages/public/comments/list.msg.d.ts +3 -0
- package/dist/messages/public/comments/list.msg.d.ts.map +1 -0
- package/dist/messages/public/comments/list.msg.js +8 -0
- package/dist/messages/public/comments/list.msg.js.map +1 -0
- package/dist/messages/public/comments/recent.msg.d.ts +3 -0
- package/dist/messages/public/comments/recent.msg.d.ts.map +1 -0
- package/dist/messages/public/comments/recent.msg.js +8 -0
- package/dist/messages/public/comments/recent.msg.js.map +1 -0
- package/dist/messages/public/friend-links/list.msg.d.ts +3 -0
- package/dist/messages/public/friend-links/list.msg.d.ts.map +1 -0
- package/dist/messages/public/friend-links/list.msg.js +8 -0
- package/dist/messages/public/friend-links/list.msg.js.map +1 -0
- package/dist/messages/public/pages/list.msg.d.ts +3 -0
- package/dist/messages/public/pages/list.msg.d.ts.map +1 -0
- package/dist/messages/public/pages/list.msg.js +8 -0
- package/dist/messages/public/pages/list.msg.js.map +1 -0
- package/dist/messages/public/pages/read.msg.d.ts +3 -0
- package/dist/messages/public/pages/read.msg.d.ts.map +1 -0
- package/dist/messages/public/pages/read.msg.js +8 -0
- package/dist/messages/public/pages/read.msg.js.map +1 -0
- package/dist/messages/public/posts/archive.msg.d.ts +3 -0
- package/dist/messages/public/posts/archive.msg.d.ts.map +1 -0
- package/dist/messages/public/posts/archive.msg.js +8 -0
- package/dist/messages/public/posts/archive.msg.js.map +1 -0
- package/dist/messages/public/posts/connections.msg.d.ts +3 -0
- package/dist/messages/public/posts/connections.msg.d.ts.map +1 -0
- package/dist/messages/public/posts/connections.msg.js +8 -0
- package/dist/messages/public/posts/connections.msg.js.map +1 -0
- package/dist/messages/public/posts/list.msg.d.ts +3 -0
- package/dist/messages/public/posts/list.msg.d.ts.map +1 -0
- package/dist/messages/public/posts/list.msg.js +8 -0
- package/dist/messages/public/posts/list.msg.js.map +1 -0
- package/dist/messages/public/posts/open.msg.d.ts +3 -0
- package/dist/messages/public/posts/open.msg.d.ts.map +1 -0
- package/dist/messages/public/posts/open.msg.js +8 -0
- package/dist/messages/public/posts/open.msg.js.map +1 -0
- package/dist/messages/public/posts/read.msg.d.ts +3 -0
- package/dist/messages/public/posts/read.msg.d.ts.map +1 -0
- package/dist/messages/public/posts/read.msg.js +8 -0
- package/dist/messages/public/posts/read.msg.js.map +1 -0
- package/dist/messages/public/tags/list.msg.d.ts +3 -0
- package/dist/messages/public/tags/list.msg.d.ts.map +1 -0
- package/dist/messages/public/tags/list.msg.js +8 -0
- package/dist/messages/public/tags/list.msg.js.map +1 -0
- package/dist/migrations/index.d.ts +3 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +2 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/persistence/category-store.d.ts +23 -0
- package/dist/persistence/category-store.d.ts.map +1 -0
- package/dist/persistence/category-store.js +86 -0
- package/dist/persistence/category-store.js.map +1 -0
- package/dist/persistence/comment-store.d.ts +41 -0
- package/dist/persistence/comment-store.d.ts.map +1 -0
- package/dist/persistence/comment-store.js +146 -0
- package/dist/persistence/comment-store.js.map +1 -0
- package/dist/persistence/entities.d.ts +103 -0
- package/dist/persistence/entities.d.ts.map +1 -0
- package/dist/persistence/entities.js +188 -0
- package/dist/persistence/entities.js.map +1 -0
- package/dist/persistence/friend-link-store.d.ts +26 -0
- package/dist/persistence/friend-link-store.d.ts.map +1 -0
- package/dist/persistence/friend-link-store.js +80 -0
- package/dist/persistence/friend-link-store.js.map +1 -0
- package/dist/persistence/page-store.d.ts +35 -0
- package/dist/persistence/page-store.d.ts.map +1 -0
- package/dist/persistence/page-store.js +125 -0
- package/dist/persistence/page-store.js.map +1 -0
- package/dist/persistence/post-engagement-store.d.ts +23 -0
- package/dist/persistence/post-engagement-store.d.ts.map +1 -0
- package/dist/persistence/post-engagement-store.js +85 -0
- package/dist/persistence/post-engagement-store.js.map +1 -0
- package/dist/persistence/post-store.d.ts +87 -0
- package/dist/persistence/post-store.d.ts.map +1 -0
- package/dist/persistence/post-store.js +465 -0
- package/dist/persistence/post-store.js.map +1 -0
- package/dist/persistence/tag-store.d.ts +21 -0
- package/dist/persistence/tag-store.d.ts.map +1 -0
- package/dist/persistence/tag-store.js +82 -0
- package/dist/persistence/tag-store.js.map +1 -0
- package/dist/services/application.service.d.ts +4 -0
- package/dist/services/application.service.d.ts.map +1 -0
- package/dist/services/application.service.js +22 -0
- package/dist/services/application.service.js.map +1 -0
- package/dist/services/blog-runtime.service.d.ts +10 -0
- package/dist/services/blog-runtime.service.d.ts.map +1 -0
- package/dist/services/blog-runtime.service.js +32 -0
- package/dist/services/blog-runtime.service.js.map +1 -0
- package/dist/services/blog.boot.d.ts +6 -0
- package/dist/services/blog.boot.d.ts.map +1 -0
- package/dist/services/blog.boot.js +13 -0
- package/dist/services/blog.boot.js.map +1 -0
- package/dist/services/browser-api-provider.service.d.ts +4 -0
- package/dist/services/browser-api-provider.service.d.ts.map +1 -0
- package/dist/services/browser-api-provider.service.js +25 -0
- package/dist/services/browser-api-provider.service.js.map +1 -0
- package/dist/services/config.service.d.ts +3 -0
- package/dist/services/config.service.d.ts.map +1 -0
- package/dist/services/config.service.js +22 -0
- package/dist/services/config.service.js.map +1 -0
- package/dist/services/database.service.d.ts +3 -0
- package/dist/services/database.service.d.ts.map +1 -0
- package/dist/services/database.service.js +16 -0
- package/dist/services/database.service.js.map +1 -0
- package/dist/services/logger.service.d.ts +4 -0
- package/dist/services/logger.service.d.ts.map +1 -0
- package/dist/services/logger.service.js +8 -0
- package/dist/services/logger.service.js.map +1 -0
- package/dist/services/mcp-provider.service.d.ts +3 -0
- package/dist/services/mcp-provider.service.d.ts.map +1 -0
- package/dist/services/mcp-provider.service.js +17 -0
- package/dist/services/mcp-provider.service.js.map +1 -0
- package/dist/services/redis.service.d.ts +4 -0
- package/dist/services/redis.service.d.ts.map +1 -0
- package/dist/services/redis.service.js +18 -0
- package/dist/services/redis.service.js.map +1 -0
- package/dist/services/theme-control.service.d.ts +4 -0
- package/dist/services/theme-control.service.d.ts.map +1 -0
- package/dist/services/theme-control.service.js +53 -0
- package/dist/services/theme-control.service.js.map +1 -0
- package/dist/themes/theme-catalog.d.ts +40 -0
- package/dist/themes/theme-catalog.d.ts.map +1 -0
- package/dist/themes/theme-catalog.js +164 -0
- package/dist/themes/theme-catalog.js.map +1 -0
- package/dist/themes/theme-control.d.ts +16 -0
- package/dist/themes/theme-control.d.ts.map +1 -0
- package/dist/themes/theme-control.js +57 -0
- package/dist/themes/theme-control.js.map +1 -0
- package/dist/themes/theme-discovery-runtime.d.ts +41 -0
- package/dist/themes/theme-discovery-runtime.d.ts.map +1 -0
- package/dist/themes/theme-discovery-runtime.js +109 -0
- package/dist/themes/theme-discovery-runtime.js.map +1 -0
- package/dist/themes/theme-generation-store.d.ts +14 -0
- package/dist/themes/theme-generation-store.d.ts.map +1 -0
- package/dist/themes/theme-generation-store.js +49 -0
- package/dist/themes/theme-generation-store.js.map +1 -0
- package/dist/themes/theme-selection-publisher.d.ts +28 -0
- package/dist/themes/theme-selection-publisher.d.ts.map +1 -0
- package/dist/themes/theme-selection-publisher.js +92 -0
- package/dist/themes/theme-selection-publisher.js.map +1 -0
- package/dist/themes/theme-selection-store.d.ts +22 -0
- package/dist/themes/theme-selection-store.d.ts.map +1 -0
- package/dist/themes/theme-selection-store.js +84 -0
- package/dist/themes/theme-selection-store.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-tools.d.ts","sourceRoot":"","sources":["../../src/mcp/theme-tools.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAgBnE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB;;;;;;;;;;;;;EAyCzD"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { defineMcpTool } from '@hile/mcp';
|
|
2
|
+
import { blogThemeIdSchema, blogThemeSelectionRevisionSchema } from '@zlooks.cn/blog-shared';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { BLOG_MCP_READ_SCOPE, BLOG_MCP_TOOLS, BLOG_MCP_WRITE_SCOPE } from '../contracts/mcp.js';
|
|
5
|
+
import { blogToolDescription } from './tool-descriptions.js';
|
|
6
|
+
const themeId = blogThemeIdSchema;
|
|
7
|
+
const dateTime = z.iso.datetime({ offset: true });
|
|
8
|
+
const selection = z.strictObject({
|
|
9
|
+
themeId, revision: blogThemeSelectionRevisionSchema,
|
|
10
|
+
updatedAt: dateTime, updatedBy: z.string().min(1).max(256),
|
|
11
|
+
});
|
|
12
|
+
const theme = z.strictObject({
|
|
13
|
+
themeId, displayName: z.string().min(1).max(100), description: z.string().max(500).nullable(),
|
|
14
|
+
generation: z.number().int().nonnegative(), buildId: z.string(), instanceCount: z.number().int().nonnegative(),
|
|
15
|
+
status: z.enum(['available', 'conflicted', 'selected', 'activating', 'active', 'unavailable', 'fallback']),
|
|
16
|
+
});
|
|
17
|
+
const catalog = z.strictObject({ reconciledAt: dateTime, selection, themes: z.array(theme).max(100) });
|
|
18
|
+
export function createThemeTools(control) {
|
|
19
|
+
return {
|
|
20
|
+
[BLOG_MCP_TOOLS.listThemes]: defineMcpTool({
|
|
21
|
+
name: BLOG_MCP_TOOLS.listThemes, title: '列出可用博客主题', description: blogToolDescription(BLOG_MCP_TOOLS.listThemes), inputSchema: z.strictObject({}), outputSchema: catalog,
|
|
22
|
+
annotations: { readOnlyHint: true, idempotentHint: true, destructiveHint: false },
|
|
23
|
+
access: { scopes: [BLOG_MCP_READ_SCOPE] }, execution: { timeoutMs: 10_000, retry: 'idempotent-failover' },
|
|
24
|
+
}, async (_input, context) => {
|
|
25
|
+
context.signal.throwIfAborted();
|
|
26
|
+
const output = control.list();
|
|
27
|
+
context.signal.throwIfAborted();
|
|
28
|
+
return result(output);
|
|
29
|
+
}),
|
|
30
|
+
[BLOG_MCP_TOOLS.readThemeSelection]: defineMcpTool({
|
|
31
|
+
name: BLOG_MCP_TOOLS.readThemeSelection, title: '读取当前博客主题选择', description: blogToolDescription(BLOG_MCP_TOOLS.readThemeSelection), inputSchema: z.strictObject({}), outputSchema: selection,
|
|
32
|
+
annotations: { readOnlyHint: true, idempotentHint: true, destructiveHint: false },
|
|
33
|
+
access: { scopes: [BLOG_MCP_READ_SCOPE] }, execution: { timeoutMs: 10_000, retry: 'idempotent-failover' },
|
|
34
|
+
}, async (_input, context) => {
|
|
35
|
+
context.signal.throwIfAborted();
|
|
36
|
+
const output = control.readSelection();
|
|
37
|
+
context.signal.throwIfAborted();
|
|
38
|
+
return result(output);
|
|
39
|
+
}),
|
|
40
|
+
[BLOG_MCP_TOOLS.readThemeStatus]: defineMcpTool({
|
|
41
|
+
name: BLOG_MCP_TOOLS.readThemeStatus, title: '读取博客主题状态', description: blogToolDescription(BLOG_MCP_TOOLS.readThemeStatus), inputSchema: z.strictObject({ themeId: themeId.optional() }), outputSchema: theme,
|
|
42
|
+
annotations: { readOnlyHint: true, idempotentHint: true, destructiveHint: false },
|
|
43
|
+
access: { scopes: [BLOG_MCP_READ_SCOPE] }, execution: { timeoutMs: 10_000, retry: 'idempotent-failover' },
|
|
44
|
+
}, async ({ themeId: selectedThemeId }, context) => {
|
|
45
|
+
context.signal.throwIfAborted();
|
|
46
|
+
const output = control.readStatus(selectedThemeId);
|
|
47
|
+
context.signal.throwIfAborted();
|
|
48
|
+
return result(output);
|
|
49
|
+
}),
|
|
50
|
+
[BLOG_MCP_TOOLS.selectTheme]: defineMcpTool({
|
|
51
|
+
name: BLOG_MCP_TOOLS.selectTheme, title: '选择博客主题', description: blogToolDescription(BLOG_MCP_TOOLS.selectTheme), inputSchema: z.strictObject({ themeId }), outputSchema: catalog,
|
|
52
|
+
annotations: { readOnlyHint: false, idempotentHint: false, destructiveHint: false },
|
|
53
|
+
access: { scopes: [BLOG_MCP_WRITE_SCOPE] }, execution: { timeoutMs: 10_000, retry: 'never' },
|
|
54
|
+
}, async ({ themeId: selectedThemeId }, context) => {
|
|
55
|
+
context.signal.throwIfAborted();
|
|
56
|
+
return result(await control.select(selectedThemeId, actorFrom(context.principal), context.signal));
|
|
57
|
+
}),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function actorFrom(principal) {
|
|
61
|
+
if (!principal)
|
|
62
|
+
throw new Error('Verified MCP principal is required');
|
|
63
|
+
const actor = `mcp:${principal.clientId ?? principal.subject}`;
|
|
64
|
+
if (actor.length > 256)
|
|
65
|
+
throw new Error('MCP principal identity is too long');
|
|
66
|
+
return actor;
|
|
67
|
+
}
|
|
68
|
+
function result(structuredContent) {
|
|
69
|
+
return { content: [{ type: 'text', text: JSON.stringify(structuredContent) }], structuredContent };
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=theme-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-tools.js","sourceRoot":"","sources":["../../src/mcp/theme-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-descriptions.d.ts","sourceRoot":"","sources":["../../src/mcp/tool-descriptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,KAAK,eAAe,GAAG,OAAO,cAAc,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAuD1E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAEjE"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { BLOG_MCP_TOOLS } from '../contracts/mcp.js';
|
|
2
|
+
const descriptions = {
|
|
3
|
+
[BLOG_MCP_TOOLS.listCategories]: '分页读取博客分类目录,按 sortOrder 与稳定 ID 排序,可通过 limit 和 cursor 继续翻页。返回每个分类的名称、slug、说明、排序值与时间戳,不修改任何数据。',
|
|
4
|
+
[BLOG_MCP_TOOLS.readCategory]: '按分类 UUID 读取一个博客分类的完整管理记录,包括名称、slug、说明、排序值和创建更新时间。该操作只读,适合在修改、删除或给文章选择分类前核对当前值。',
|
|
5
|
+
[BLOG_MCP_TOOLS.createCategory]: '创建一个新的博客分类,并写入名称、稳定 slug、可空说明和排序值。成功后返回数据库生成的 UUID 与完整分类记录;slug 将参与公开分类地址,提交前应确认命名准确。',
|
|
6
|
+
[BLOG_MCP_TOOLS.updateCategory]: '按分类 UUID 完整更新名称、slug、说明和排序值,并返回持久化后的分类记录。该操作会改变分类的公开展示信息;未提供增量合并能力,调用前应先读取并保留未要求修改的字段。',
|
|
7
|
+
[BLOG_MCP_TOOLS.deleteCategory]: '按分类 UUID 永久删除一个博客分类,成功时返回被删除的 ID。该操作不可恢复且具有破坏性;当仍有文章引用该分类时服务端会拒绝删除,应先重新归类相关文章。',
|
|
8
|
+
[BLOG_MCP_TOOLS.listTags]: '分页读取博客标签目录,按标签名称与稳定 ID 排序,可通过 limit 和 cursor 继续翻页。返回标签 UUID、名称、slug 与时间戳,不包含文章正文且不会修改任何数据。',
|
|
9
|
+
[BLOG_MCP_TOOLS.readTag]: '按标签 UUID 读取一个博客标签的完整管理记录,包括名称、slug 和创建更新时间。该操作只读,适合在修改、删除或为文章填写 tagIds 前核对真实标签 ID。',
|
|
10
|
+
[BLOG_MCP_TOOLS.createTag]: '创建一个新的博客标签,并写入名称与稳定 slug。成功后返回数据库生成的 UUID 和完整标签记录;为文章选择标签时必须使用这里返回的真实 ID,不得根据名称编造 ID。',
|
|
11
|
+
[BLOG_MCP_TOOLS.updateTag]: '按标签 UUID 完整更新标签名称与 slug,并返回持久化后的标签记录。该操作会影响所有关联文章展示出的标签信息;调用前应先读取当前值并确认新的公开 slug。',
|
|
12
|
+
[BLOG_MCP_TOOLS.deleteTag]: '按标签 UUID 永久删除一个博客标签,成功时返回被删除的 ID。该操作不可恢复并会移除文章与该标签的关联关系;执行前应确认没有内容仍依赖这一分类语义。',
|
|
13
|
+
[BLOG_MCP_TOOLS.listPosts]: '按状态和可选 categoryId 筛选博客文章,并使用 limit、cursor 分页返回完整管理记录。结果包含正文、分类、标签、发布状态和时间戳,适合管理盘点;该操作只读且不改变浏览量。',
|
|
14
|
+
[BLOG_MCP_TOOLS.listPostArchive]: '读取已发布文章的 UTC 年月归档,可选择单一年月或完整起止年月范围,并分别限制文章和月份数量。返回不含正文的文章摘要、月份计数、总数和分页游标;它是只读归档查询,不会把文章改为 archived 状态。',
|
|
15
|
+
[BLOG_MCP_TOOLS.searchPosts]: '在博客文章的标题、摘要和正文中执行有界关键词搜索,可按状态过滤并限制最多二十条结果。返回不含正文的紧凑文章记录用于定位候选项;搜索不会修改文章或记录公开浏览。',
|
|
16
|
+
[BLOG_MCP_TOOLS.readPost]: '按文章 UUID 读取最新完整管理记录,包括正文、摘要、封面、分类、标签、生命周期状态和时间戳。该操作只读,修改、审查、发布、归档或删除前应使用它确认当前持久化内容。',
|
|
17
|
+
[BLOG_MCP_TOOLS.auditPostContent]: '对给定标题、摘要、Markdown 正文、分类 ID 和标签 ID 执行确定性的发布前审查,不读取或修改文章记录。返回 publishable 与有界 findings,逐项给出严重级别、字段、规则、建议和可用位置;只有 block 会阻止发布。',
|
|
18
|
+
[BLOG_MCP_TOOLS.createPost]: '创建一篇 draft 状态的博客文章,并校验真实分类与标签 ID、slug、标题、摘要、封面 URL 和 Markdown 正文。发布准备时应尽可能填写准确 summary、1 至 5 个现有 tagIds 和已验证 coverUrl;无法可靠获得时不要编造。',
|
|
19
|
+
[BLOG_MCP_TOOLS.updatePost]: '按文章 UUID 完整替换所有可编辑字段及标签关联,并返回持久化后的最新文章。它不是增量补丁;调用前应先 read-post 并保留未要求修改的字段,已发布文章更新时仍会执行发布内容约束。',
|
|
20
|
+
[BLOG_MCP_TOOLS.publishPost]: '发布当前博客文章。调用前应尽可能补齐文章字段,特别是 summary、tagIds 和 coverUrl,但不得编造信息或 URL。服务端会重新审查当前内容。若返回 code=POST_CONTENT_BLOCKED,先调用 read-post 获取最新文章,只修复 audit.findings 中 severity=block 的项目,再调用 update-post 和 audit-post-content;publishable=true 后重试,自动修复最多 3 次。需要作者补充事实时停止。',
|
|
21
|
+
[BLOG_MCP_TOOLS.archivePost]: '按文章 UUID 将文章状态切换为 archived,并返回包含原发布时间的最新完整记录。归档会使文章退出公开发布内容,但不会永久删除正文、标签、评论或历史发布时间;重复归档保持相同状态。',
|
|
22
|
+
[BLOG_MCP_TOOLS.deletePost]: '按文章 UUID 永久删除文章及其数据库级关联内容,成功时返回被删除的 ID。该操作不可恢复且具有破坏性;published 文章必须先 archive-post,服务端会拒绝直接删除仍在发布状态的文章。',
|
|
23
|
+
[BLOG_MCP_TOOLS.listPages]: '按生命周期状态和可选展示位置筛选博客单页,并使用 limit、cursor 分页返回完整记录。结果包含标题、slug、摘要、Markdown 正文、位置、排序值与时间戳;该操作只读。',
|
|
24
|
+
[BLOG_MCP_TOOLS.readPage]: '按单页 UUID 读取最新完整管理记录,包括正文、摘要、公开 slug、展示位置、排序值和生命周期状态。该操作只读,修改、发布、归档或删除单页前应先核对当前值。',
|
|
25
|
+
[BLOG_MCP_TOOLS.createPage]: '创建一个 draft 状态的博客单页,并写入标题、slug、摘要、Markdown 正文、可空展示位置和排序值。成功后返回生成的 UUID 与完整记录;创建不会自动发布或加入公开导航。',
|
|
26
|
+
[BLOG_MCP_TOOLS.updatePage]: '按单页 UUID 完整替换标题、slug、摘要、正文、展示位置和排序值,并返回最新记录。该操作不是增量补丁且不会自动改变生命周期状态;调用前应先读取并保留未要求修改的字段。',
|
|
27
|
+
[BLOG_MCP_TOOLS.publishPage]: '按单页 UUID 将内容切换为 published,并在首次发布时记录发布时间,随后返回完整记录。发布后单页可由主题通过稳定 slug 读取;执行前应确认正文、摘要和导航位置均已审核。',
|
|
28
|
+
[BLOG_MCP_TOOLS.archivePage]: '按单页 UUID 将内容切换为 archived,并返回保留原发布时间的完整记录。归档会使单页退出公开读取和导航,但不会永久删除内容;归档后仍可继续修改或再次发布。',
|
|
29
|
+
[BLOG_MCP_TOOLS.deletePage]: '按单页 UUID 永久删除记录,成功时返回被删除的 ID。该操作不可恢复且具有破坏性;published 单页必须先 archive-page,服务端会拒绝直接删除仍在发布状态的单页。',
|
|
30
|
+
[BLOG_MCP_TOOLS.listComments]: '按状态、文章 UUID 和时间顺序筛选博客评论,并使用 limit、cursor 分页;默认最新评论优先。返回评论正文、回复、用户 ID、客户端与原始审计字段,供管理员审核使用;该操作不会改变审核状态。',
|
|
31
|
+
[BLOG_MCP_TOOLS.readComment]: '按评论 UUID 读取完整审核记录,包括正文、回复、状态、用户与文章 ID、IP、User-Agent、位置和客户端标签。该操作只读,批准、拒绝、回复或永久删除前应先核对内容和审计信息。',
|
|
32
|
+
[BLOG_MCP_TOOLS.approveComment]: '按评论 UUID 将审核状态设置为 approved,并返回更新后的完整评论记录。批准后评论可以进入公开展示;这是有副作用的审核决定,必须基于管理员明确判断,不能由自动化自行决定。',
|
|
33
|
+
[BLOG_MCP_TOOLS.rejectComment]: '按评论 UUID 将审核状态设置为 rejected,并返回更新后的完整评论记录。拒绝会阻止评论公开展示但保留记录和审计信息;执行前必须取得管理员对该评论的明确处理决定。',
|
|
34
|
+
[BLOG_MCP_TOOLS.replyComment]: '按评论 UUID 设置管理员回复,或在 replyContent 为 null 时清除已有回复,同时维护回复时间并返回完整记录。该操作会改变评论对外呈现内容;回复文案应由管理员确认,不得虚构承诺或事实。',
|
|
35
|
+
[BLOG_MCP_TOOLS.deleteComment]: '按评论 UUID 永久删除评论及其回复和审计记录,成功时返回被删除的 ID。该操作不可恢复且具有破坏性;只有管理员明确要求永久删除时使用,通常审核应优先选择批准或拒绝。',
|
|
36
|
+
[BLOG_MCP_TOOLS.listFriendLinks]: '分页读取全部友情链接管理记录,按 sortOrder 与稳定 ID 排序,可通过 limit 和 cursor 继续翻页。结果同时包含启用和停用项、目标 URL、说明、图标和时间戳;该操作只读。',
|
|
37
|
+
[BLOG_MCP_TOOLS.readFriendLink]: '按友情链接 UUID 读取完整管理记录,包括名称、目标 URL、说明、图标 URL、启用状态、排序值和时间戳。该操作只读,修改、启停或永久删除前应先核对当前值。',
|
|
38
|
+
[BLOG_MCP_TOOLS.createFriendLink]: '创建一条友情链接,并写入名称、HTTP(S) 目标、可空说明和图标、启用状态与排序值。成功后返回生成的 UUID 和完整记录;启用项可能立即进入主题的公开友链页面。',
|
|
39
|
+
[BLOG_MCP_TOOLS.updateFriendLink]: '按友情链接 UUID 完整替换名称、目标 URL、说明、图标、启用状态和排序值,并返回最新记录。该操作不是增量补丁;调用前应先读取当前项,且不得编造或使用未经验证的外部地址。',
|
|
40
|
+
[BLOG_MCP_TOOLS.enableFriendLink]: '按友情链接 UUID 将 enabled 设置为 true,并返回更新后的完整记录。启用后该链接可以进入公开友链列表;执行前应验证目标站点、名称、说明与图标 URL 均准确且安全。',
|
|
41
|
+
[BLOG_MCP_TOOLS.disableFriendLink]: '按友情链接 UUID 将 enabled 设置为 false,并返回更新后的完整记录。停用会从公开友链列表隐藏该项但保留配置,适合临时下线或等待核验,不会永久删除数据。',
|
|
42
|
+
[BLOG_MCP_TOOLS.deleteFriendLink]: '按友情链接 UUID 永久删除记录,成功时返回被删除的 ID。该操作不可恢复且具有破坏性;如果只是暂时停止公开展示,应优先调用 disable-friend-link 保留配置。',
|
|
43
|
+
[BLOG_MCP_TOOLS.listThemes]: '读取 Registry 发现并经过副本一致性校验的博客主题目录,同时返回当前选择、目录对账时间和每个主题的 generation、buildId、实例数与状态。该操作只读,可在切换前用于确认目标主题是否健康可用。',
|
|
44
|
+
[BLOG_MCP_TOOLS.readThemeSelection]: '读取持久化的当前博客主题选择,返回 themeId、单调 revision、更新时间和审计操作者。该操作只读,只表示已提交的选择事实;主题是否已激活应再用 read-theme-status 核对。',
|
|
45
|
+
[BLOG_MCP_TOOLS.readThemeStatus]: '读取指定 themeId 的发现与激活状态;省略 themeId 时检查当前选择的主题。返回展示信息、generation、buildId、可用实例数和状态,适合切换前健康检查以及切换后的结果验证。',
|
|
46
|
+
[BLOG_MCP_TOOLS.selectTheme]: '将博客主题选择切换到指定的已发现健康 themeId,并返回更新后的完整主题目录与新 selection revision。该操作会改变公开博客渲染实现且不自动重试;应先检查目录和目标状态、取得确认,再写入并读回验证。',
|
|
47
|
+
};
|
|
48
|
+
export function blogToolDescription(name) {
|
|
49
|
+
return descriptions[name];
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=tool-descriptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-descriptions.js","sourceRoot":"","sources":["../../src/mcp/tool-descriptions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { BlogCategoryRow, BlogCommentRow, BlogFriendLinkRow, BlogPageRow, BlogTagRow } from '../persistence/entities.js';
|
|
3
|
+
import type { PostView } from '../blog/blog-application.js';
|
|
4
|
+
import type { BLOG_MCP_TOOLS } from '../contracts/mcp.js';
|
|
5
|
+
type BlogMcpToolName = typeof BLOG_MCP_TOOLS[keyof typeof BLOG_MCP_TOOLS];
|
|
6
|
+
export declare const idInput: z.ZodObject<{
|
|
7
|
+
id: z.ZodUUID;
|
|
8
|
+
}, z.core.$strict>;
|
|
9
|
+
export declare const listInput: z.ZodObject<{
|
|
10
|
+
limit: z.ZodDefault<z.ZodNumber>;
|
|
11
|
+
cursor: z.ZodOptional<z.ZodUUID>;
|
|
12
|
+
}, z.core.$strict>;
|
|
13
|
+
export declare const dateTime: z.ZodISODateTime;
|
|
14
|
+
export declare const databaseInteger: z.ZodNumber;
|
|
15
|
+
export declare const nullableText: (max: number) => z.ZodNullable<z.ZodString>;
|
|
16
|
+
export declare const slug: (max: number) => z.ZodString;
|
|
17
|
+
export declare const internalUrl: z.ZodString;
|
|
18
|
+
export declare const externalUrl: z.ZodURL;
|
|
19
|
+
export declare const assetUrl: z.ZodUnion<readonly [z.ZodString, z.ZodURL]>;
|
|
20
|
+
export declare const categorySchema: z.ZodObject<{
|
|
21
|
+
id: z.ZodUUID;
|
|
22
|
+
name: z.ZodString;
|
|
23
|
+
slug: z.ZodString;
|
|
24
|
+
description: z.ZodNullable<z.ZodString>;
|
|
25
|
+
sortOrder: z.ZodNumber;
|
|
26
|
+
createdAt: z.ZodISODateTime;
|
|
27
|
+
updatedAt: z.ZodISODateTime;
|
|
28
|
+
}, z.core.$strict>;
|
|
29
|
+
export declare const tagSchema: z.ZodObject<{
|
|
30
|
+
id: z.ZodUUID;
|
|
31
|
+
name: z.ZodString;
|
|
32
|
+
slug: z.ZodString;
|
|
33
|
+
createdAt: z.ZodISODateTime;
|
|
34
|
+
updatedAt: z.ZodISODateTime;
|
|
35
|
+
}, z.core.$strict>;
|
|
36
|
+
export declare const postSchema: z.ZodObject<{
|
|
37
|
+
id: z.ZodUUID;
|
|
38
|
+
categoryId: z.ZodUUID;
|
|
39
|
+
title: z.ZodString;
|
|
40
|
+
slug: z.ZodString;
|
|
41
|
+
summary: z.ZodNullable<z.ZodString>;
|
|
42
|
+
coverUrl: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>;
|
|
43
|
+
content: z.ZodString;
|
|
44
|
+
status: z.ZodEnum<{
|
|
45
|
+
archived: "archived";
|
|
46
|
+
draft: "draft";
|
|
47
|
+
published: "published";
|
|
48
|
+
}>;
|
|
49
|
+
publishedAt: z.ZodNullable<z.ZodISODateTime>;
|
|
50
|
+
createdAt: z.ZodISODateTime;
|
|
51
|
+
updatedAt: z.ZodISODateTime;
|
|
52
|
+
tags: z.ZodArray<z.ZodObject<{
|
|
53
|
+
id: z.ZodUUID;
|
|
54
|
+
name: z.ZodString;
|
|
55
|
+
slug: z.ZodString;
|
|
56
|
+
createdAt: z.ZodISODateTime;
|
|
57
|
+
updatedAt: z.ZodISODateTime;
|
|
58
|
+
}, z.core.$strict>>;
|
|
59
|
+
}, z.core.$strict>;
|
|
60
|
+
export declare const postSearchSchema: z.ZodObject<{
|
|
61
|
+
id: z.ZodUUID;
|
|
62
|
+
categoryId: z.ZodUUID;
|
|
63
|
+
title: z.ZodString;
|
|
64
|
+
slug: z.ZodString;
|
|
65
|
+
summary: z.ZodNullable<z.ZodString>;
|
|
66
|
+
coverUrl: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>;
|
|
67
|
+
status: z.ZodEnum<{
|
|
68
|
+
archived: "archived";
|
|
69
|
+
draft: "draft";
|
|
70
|
+
published: "published";
|
|
71
|
+
}>;
|
|
72
|
+
publishedAt: z.ZodNullable<z.ZodISODateTime>;
|
|
73
|
+
createdAt: z.ZodISODateTime;
|
|
74
|
+
updatedAt: z.ZodISODateTime;
|
|
75
|
+
tags: z.ZodArray<z.ZodObject<{
|
|
76
|
+
id: z.ZodUUID;
|
|
77
|
+
name: z.ZodString;
|
|
78
|
+
slug: z.ZodString;
|
|
79
|
+
createdAt: z.ZodISODateTime;
|
|
80
|
+
updatedAt: z.ZodISODateTime;
|
|
81
|
+
}, z.core.$strict>>;
|
|
82
|
+
}, z.core.$strict>;
|
|
83
|
+
export declare const pageSchema: z.ZodObject<{
|
|
84
|
+
id: z.ZodUUID;
|
|
85
|
+
title: z.ZodString;
|
|
86
|
+
slug: z.ZodString;
|
|
87
|
+
summary: z.ZodString;
|
|
88
|
+
content: z.ZodString;
|
|
89
|
+
status: z.ZodEnum<{
|
|
90
|
+
archived: "archived";
|
|
91
|
+
draft: "draft";
|
|
92
|
+
published: "published";
|
|
93
|
+
}>;
|
|
94
|
+
position: z.ZodNullable<z.ZodEnum<{
|
|
95
|
+
navigation: "navigation";
|
|
96
|
+
sidebar: "sidebar";
|
|
97
|
+
}>>;
|
|
98
|
+
sortOrder: z.ZodNumber;
|
|
99
|
+
publishedAt: z.ZodNullable<z.ZodISODateTime>;
|
|
100
|
+
createdAt: z.ZodISODateTime;
|
|
101
|
+
updatedAt: z.ZodISODateTime;
|
|
102
|
+
}, z.core.$strict>;
|
|
103
|
+
export declare const commentSchema: z.ZodObject<{
|
|
104
|
+
id: z.ZodUUID;
|
|
105
|
+
postId: z.ZodUUID;
|
|
106
|
+
userId: z.ZodUUID;
|
|
107
|
+
content: z.ZodString;
|
|
108
|
+
replyContent: z.ZodNullable<z.ZodString>;
|
|
109
|
+
ipAddress: z.ZodNullable<z.ZodUnion<readonly [z.ZodIPv4, z.ZodIPv6]>>;
|
|
110
|
+
userAgent: z.ZodNullable<z.ZodString>;
|
|
111
|
+
ipLocation: z.ZodNullable<z.ZodString>;
|
|
112
|
+
clientLabel: z.ZodNullable<z.ZodString>;
|
|
113
|
+
repliedAt: z.ZodNullable<z.ZodISODateTime>;
|
|
114
|
+
status: z.ZodEnum<{
|
|
115
|
+
approved: "approved";
|
|
116
|
+
pending: "pending";
|
|
117
|
+
rejected: "rejected";
|
|
118
|
+
}>;
|
|
119
|
+
createdAt: z.ZodISODateTime;
|
|
120
|
+
updatedAt: z.ZodISODateTime;
|
|
121
|
+
}, z.core.$strict>;
|
|
122
|
+
export declare const friendLinkSchema: z.ZodObject<{
|
|
123
|
+
id: z.ZodUUID;
|
|
124
|
+
name: z.ZodString;
|
|
125
|
+
url: z.ZodURL;
|
|
126
|
+
description: z.ZodNullable<z.ZodString>;
|
|
127
|
+
logoUrl: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>;
|
|
128
|
+
enabled: z.ZodBoolean;
|
|
129
|
+
sortOrder: z.ZodNumber;
|
|
130
|
+
createdAt: z.ZodISODateTime;
|
|
131
|
+
updatedAt: z.ZodISODateTime;
|
|
132
|
+
}, z.core.$strict>;
|
|
133
|
+
export declare const deletedSchema: z.ZodObject<{
|
|
134
|
+
deleted: z.ZodLiteral<true>;
|
|
135
|
+
id: z.ZodUUID;
|
|
136
|
+
}, z.core.$strict>;
|
|
137
|
+
export type RecoverableToolFailure = Readonly<{
|
|
138
|
+
message: string;
|
|
139
|
+
structuredContent: Readonly<Record<string, unknown>>;
|
|
140
|
+
}>;
|
|
141
|
+
export type WriteToolOptions<I> = Readonly<{
|
|
142
|
+
recover?: (error: unknown, input: I) => RecoverableToolFailure | undefined;
|
|
143
|
+
}>;
|
|
144
|
+
export declare function readTool<I extends z.ZodType, O extends z.ZodType>(name: BlogMcpToolName, title: string, inputSchema: I, outputSchema: O, handler: (input: z.infer<I>, signal: AbortSignal) => Promise<z.infer<O>>, scope?: string): import("@hile/mcp").McpToolDefinition<z.input<I>, z.TypeOf<I>>;
|
|
145
|
+
export declare function writeTool<I extends z.ZodType, O extends z.ZodType>(name: BlogMcpToolName, title: string, inputSchema: I, outputSchema: O, handler: (input: z.infer<I>, signal: AbortSignal) => Promise<z.infer<O>>, destructive?: boolean, options?: WriteToolOptions<z.infer<I>>): import("@hile/mcp").McpToolDefinition<z.input<I>, z.TypeOf<I>>;
|
|
146
|
+
export declare function moderateTool<I extends z.ZodType, O extends z.ZodType>(name: BlogMcpToolName, title: string, inputSchema: I, outputSchema: O, handler: (input: z.infer<I>, signal: AbortSignal) => Promise<z.infer<O>>, destructive?: boolean): import("@hile/mcp").McpToolDefinition<z.input<I>, z.TypeOf<I>>;
|
|
147
|
+
export declare function categoryView(row: BlogCategoryRow): {
|
|
148
|
+
id: string;
|
|
149
|
+
name: string;
|
|
150
|
+
slug: string;
|
|
151
|
+
description: string | null;
|
|
152
|
+
sortOrder: number;
|
|
153
|
+
createdAt: string;
|
|
154
|
+
updatedAt: string;
|
|
155
|
+
};
|
|
156
|
+
export declare function tagView(row: BlogTagRow): {
|
|
157
|
+
id: string;
|
|
158
|
+
name: string;
|
|
159
|
+
slug: string;
|
|
160
|
+
createdAt: string;
|
|
161
|
+
updatedAt: string;
|
|
162
|
+
};
|
|
163
|
+
export declare function postView(row: PostView): {
|
|
164
|
+
id: string;
|
|
165
|
+
categoryId: string;
|
|
166
|
+
title: string;
|
|
167
|
+
slug: string;
|
|
168
|
+
summary: string | null;
|
|
169
|
+
coverUrl: string | null;
|
|
170
|
+
content: string;
|
|
171
|
+
status: import("../persistence/entities.js").BlogPostStatus;
|
|
172
|
+
publishedAt: string | null;
|
|
173
|
+
createdAt: string;
|
|
174
|
+
updatedAt: string;
|
|
175
|
+
tags: {
|
|
176
|
+
id: string;
|
|
177
|
+
name: string;
|
|
178
|
+
slug: string;
|
|
179
|
+
createdAt: string;
|
|
180
|
+
updatedAt: string;
|
|
181
|
+
}[];
|
|
182
|
+
};
|
|
183
|
+
export declare function postSearchView(row: PostView): {
|
|
184
|
+
id: string;
|
|
185
|
+
categoryId: string;
|
|
186
|
+
title: string;
|
|
187
|
+
slug: string;
|
|
188
|
+
summary: string | null;
|
|
189
|
+
coverUrl: string | null;
|
|
190
|
+
status: import("../persistence/entities.js").BlogPostStatus;
|
|
191
|
+
publishedAt: string | null;
|
|
192
|
+
createdAt: string;
|
|
193
|
+
updatedAt: string;
|
|
194
|
+
tags: {
|
|
195
|
+
id: string;
|
|
196
|
+
name: string;
|
|
197
|
+
slug: string;
|
|
198
|
+
createdAt: string;
|
|
199
|
+
updatedAt: string;
|
|
200
|
+
}[];
|
|
201
|
+
};
|
|
202
|
+
export declare function pageView(row: BlogPageRow): {
|
|
203
|
+
id: string;
|
|
204
|
+
title: string;
|
|
205
|
+
slug: string;
|
|
206
|
+
summary: string;
|
|
207
|
+
content: string;
|
|
208
|
+
status: import("../persistence/entities.js").BlogPostStatus;
|
|
209
|
+
position: import("../persistence/entities.js").BlogPagePosition | null;
|
|
210
|
+
sortOrder: number;
|
|
211
|
+
publishedAt: string | null;
|
|
212
|
+
createdAt: string;
|
|
213
|
+
updatedAt: string;
|
|
214
|
+
};
|
|
215
|
+
export declare function commentView(row: BlogCommentRow): {
|
|
216
|
+
id: string;
|
|
217
|
+
postId: string;
|
|
218
|
+
userId: string;
|
|
219
|
+
content: string;
|
|
220
|
+
ipAddress: string | null;
|
|
221
|
+
userAgent: string | null;
|
|
222
|
+
ipLocation: string | null;
|
|
223
|
+
clientLabel: string | null;
|
|
224
|
+
replyContent: string | null;
|
|
225
|
+
status: import("../persistence/entities.js").BlogCommentStatus;
|
|
226
|
+
repliedAt: string | null;
|
|
227
|
+
createdAt: string;
|
|
228
|
+
updatedAt: string;
|
|
229
|
+
};
|
|
230
|
+
export declare function friendLinkView(row: BlogFriendLinkRow): {
|
|
231
|
+
id: string;
|
|
232
|
+
name: string;
|
|
233
|
+
url: string;
|
|
234
|
+
description: string | null;
|
|
235
|
+
logoUrl: string | null;
|
|
236
|
+
enabled: boolean;
|
|
237
|
+
sortOrder: number;
|
|
238
|
+
createdAt: string;
|
|
239
|
+
updatedAt: string;
|
|
240
|
+
};
|
|
241
|
+
export {};
|
|
242
|
+
//# sourceMappingURL=tool-support.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-support.d.ts","sourceRoot":"","sources":["../../src/mcp/tool-support.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { defineMcpTool } from '@hile/mcp';
|
|
2
|
+
import { BLOG_MCP_MODERATE_SCOPE, BLOG_MCP_READ_SCOPE, BLOG_MCP_WRITE_SCOPE, } from '../contracts/mcp.js';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { blogToolDescription } from './tool-descriptions.js';
|
|
5
|
+
export const idInput = z.strictObject({ id: z.uuid() });
|
|
6
|
+
export const listInput = z.strictObject({ limit: z.number().int().min(1).max(100).default(50), cursor: z.uuid().optional() });
|
|
7
|
+
export const dateTime = z.iso.datetime({ offset: true });
|
|
8
|
+
export const databaseInteger = z.number().int().min(-2_147_483_648).max(2_147_483_647);
|
|
9
|
+
export const nullableText = (max) => z.string().trim().min(1).max(max).nullable();
|
|
10
|
+
export const slug = (max) => z.string().trim().min(1).max(max).regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/);
|
|
11
|
+
export const internalUrl = z.string().min(1).max(2_048).regex(/^\/(?!\/)[^\s]*$/);
|
|
12
|
+
export const externalUrl = z.url({ protocol: /^https?$/ }).max(2_048);
|
|
13
|
+
export const assetUrl = z.union([internalUrl, externalUrl]);
|
|
14
|
+
export const categorySchema = z.strictObject({ id: z.uuid(), name: z.string().trim().min(1).max(100), slug: slug(120), description: nullableText(500), sortOrder: databaseInteger, createdAt: dateTime, updatedAt: dateTime });
|
|
15
|
+
export const tagSchema = z.strictObject({ id: z.uuid(), name: z.string().trim().min(1).max(100), slug: slug(120), createdAt: dateTime, updatedAt: dateTime });
|
|
16
|
+
export const postSchema = z.strictObject({
|
|
17
|
+
id: z.uuid(), categoryId: z.uuid(), title: z.string().trim().min(1).max(200), slug: slug(200), summary: nullableText(500),
|
|
18
|
+
coverUrl: assetUrl.nullable(), content: z.string().min(1).max(1_000_000), status: z.enum(['draft', 'published', 'archived']),
|
|
19
|
+
publishedAt: dateTime.nullable(), createdAt: dateTime, updatedAt: dateTime, tags: z.array(tagSchema).max(20),
|
|
20
|
+
}).superRefine((post, context) => {
|
|
21
|
+
if (post.status === 'published' && !post.publishedAt)
|
|
22
|
+
context.addIssue({ code: 'custom', path: ['publishedAt'], message: 'Published post requires publishedAt' });
|
|
23
|
+
if (post.status === 'draft' && post.publishedAt)
|
|
24
|
+
context.addIssue({ code: 'custom', path: ['publishedAt'], message: 'Draft post cannot have publishedAt' });
|
|
25
|
+
});
|
|
26
|
+
export const postSearchSchema = z.strictObject({
|
|
27
|
+
id: z.uuid(), categoryId: z.uuid(), title: z.string().trim().min(1).max(200), slug: slug(200), summary: nullableText(500),
|
|
28
|
+
coverUrl: assetUrl.nullable(), status: z.enum(['draft', 'published', 'archived']), publishedAt: dateTime.nullable(),
|
|
29
|
+
createdAt: dateTime, updatedAt: dateTime, tags: z.array(tagSchema).max(20),
|
|
30
|
+
});
|
|
31
|
+
export const pageSchema = z.strictObject({
|
|
32
|
+
id: z.uuid(), title: z.string().trim().min(1).max(200), slug: slug(200),
|
|
33
|
+
summary: z.string().trim().min(1).max(500), content: z.string().min(1).max(1_000_000),
|
|
34
|
+
status: z.enum(['draft', 'published', 'archived']), position: z.enum(['navigation', 'sidebar']).nullable(),
|
|
35
|
+
sortOrder: databaseInteger, publishedAt: dateTime.nullable(), createdAt: dateTime, updatedAt: dateTime,
|
|
36
|
+
}).superRefine((page, context) => {
|
|
37
|
+
if (page.status === 'published' && !page.publishedAt)
|
|
38
|
+
context.addIssue({ code: 'custom', path: ['publishedAt'], message: 'Published page requires publishedAt' });
|
|
39
|
+
if (page.status === 'draft' && page.publishedAt)
|
|
40
|
+
context.addIssue({ code: 'custom', path: ['publishedAt'], message: 'Draft page cannot have publishedAt' });
|
|
41
|
+
});
|
|
42
|
+
export const commentSchema = z.strictObject({
|
|
43
|
+
id: z.uuid(), postId: z.uuid(), userId: z.uuid(), content: z.string().trim().min(1).max(2_000), replyContent: nullableText(2_000),
|
|
44
|
+
ipAddress: z.union([z.ipv4(), z.ipv6()]).nullable(), userAgent: nullableText(1_024),
|
|
45
|
+
ipLocation: nullableText(200), clientLabel: nullableText(160),
|
|
46
|
+
repliedAt: dateTime.nullable(), status: z.enum(['pending', 'approved', 'rejected']), createdAt: dateTime, updatedAt: dateTime,
|
|
47
|
+
}).refine((comment) => Boolean(comment.replyContent) === Boolean(comment.repliedAt), { path: ['repliedAt'], message: 'Reply content and timestamp must agree' });
|
|
48
|
+
export const friendLinkSchema = z.strictObject({
|
|
49
|
+
id: z.uuid(), name: z.string().trim().min(1).max(100), url: externalUrl, description: nullableText(500), logoUrl: assetUrl.nullable(),
|
|
50
|
+
enabled: z.boolean(), sortOrder: databaseInteger, createdAt: dateTime, updatedAt: dateTime,
|
|
51
|
+
});
|
|
52
|
+
export const deletedSchema = z.strictObject({ deleted: z.literal(true), id: z.uuid() });
|
|
53
|
+
export function readTool(name, title, inputSchema, outputSchema, handler, scope = BLOG_MCP_READ_SCOPE) {
|
|
54
|
+
return defineMcpTool({ name, title, description: blogToolDescription(name), inputSchema, outputSchema,
|
|
55
|
+
annotations: { readOnlyHint: true, idempotentHint: true, destructiveHint: false },
|
|
56
|
+
access: { scopes: [scope] }, execution: { timeoutMs: 10_000, retry: 'idempotent-failover' },
|
|
57
|
+
}, async (input, context) => {
|
|
58
|
+
context.signal.throwIfAborted();
|
|
59
|
+
const output = await handler(input, context.signal);
|
|
60
|
+
context.signal.throwIfAborted();
|
|
61
|
+
return result(output);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
export function writeTool(name, title, inputSchema, outputSchema, handler, destructive = false, options) {
|
|
65
|
+
return defineMcpTool({ name, title, description: blogToolDescription(name), inputSchema, outputSchema,
|
|
66
|
+
annotations: { readOnlyHint: false, idempotentHint: false, destructiveHint: destructive },
|
|
67
|
+
access: { scopes: [BLOG_MCP_WRITE_SCOPE] }, execution: { timeoutMs: 10_000, retry: 'never' },
|
|
68
|
+
}, async (input, context) => {
|
|
69
|
+
context.signal.throwIfAborted();
|
|
70
|
+
try {
|
|
71
|
+
return result(await handler(input, context.signal));
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
const failure = options?.recover?.(error, input);
|
|
75
|
+
if (!failure)
|
|
76
|
+
throw error;
|
|
77
|
+
return errorResult(failure);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
export function moderateTool(name, title, inputSchema, outputSchema, handler, destructive = false) {
|
|
82
|
+
return defineMcpTool({ name, title, description: blogToolDescription(name), inputSchema, outputSchema,
|
|
83
|
+
annotations: { readOnlyHint: false, idempotentHint: false, destructiveHint: destructive },
|
|
84
|
+
access: { scopes: [BLOG_MCP_MODERATE_SCOPE] }, execution: { timeoutMs: 10_000, retry: 'never' },
|
|
85
|
+
}, async (input, context) => {
|
|
86
|
+
context.signal.throwIfAborted();
|
|
87
|
+
return result(await handler(input, context.signal));
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
function result(structuredContent) {
|
|
91
|
+
return { content: [{ type: 'text', text: JSON.stringify(structuredContent) }], structuredContent };
|
|
92
|
+
}
|
|
93
|
+
function errorResult(failure) {
|
|
94
|
+
return {
|
|
95
|
+
content: [{ type: 'text', text: failure.message }],
|
|
96
|
+
structuredContent: failure.structuredContent,
|
|
97
|
+
isError: true,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
export function categoryView(row) { return { ...row, createdAt: row.createdAt.toISOString(), updatedAt: row.updatedAt.toISOString() }; }
|
|
101
|
+
export function tagView(row) {
|
|
102
|
+
return { id: row.id, name: row.name, slug: row.slug, createdAt: row.createdAt.toISOString(), updatedAt: row.updatedAt.toISOString() };
|
|
103
|
+
}
|
|
104
|
+
export function postView(row) {
|
|
105
|
+
return {
|
|
106
|
+
id: row.id, categoryId: row.categoryId, title: row.title, slug: row.slug,
|
|
107
|
+
summary: row.summary, coverUrl: row.coverUrl, content: row.content, status: row.status,
|
|
108
|
+
publishedAt: row.publishedAt?.toISOString() ?? null,
|
|
109
|
+
createdAt: row.createdAt.toISOString(), updatedAt: row.updatedAt.toISOString(),
|
|
110
|
+
tags: row.tags.map(tagView),
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
export function postSearchView(row) {
|
|
114
|
+
const { content: _content, ...view } = postView(row);
|
|
115
|
+
return view;
|
|
116
|
+
}
|
|
117
|
+
export function pageView(row) {
|
|
118
|
+
return {
|
|
119
|
+
...row,
|
|
120
|
+
publishedAt: row.publishedAt?.toISOString() ?? null,
|
|
121
|
+
createdAt: row.createdAt.toISOString(),
|
|
122
|
+
updatedAt: row.updatedAt.toISOString(),
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
export function commentView(row) { return { ...row, repliedAt: row.repliedAt?.toISOString() ?? null, createdAt: row.createdAt.toISOString(), updatedAt: row.updatedAt.toISOString() }; }
|
|
126
|
+
export function friendLinkView(row) { return { ...row, createdAt: row.createdAt.toISOString(), updatedAt: row.updatedAt.toISOString() }; }
|
|
127
|
+
//# sourceMappingURL=tool-support.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-support.js","sourceRoot":"","sources":["../../src/mcp/tool-support.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatch.msg.d.ts","sourceRoot":"","sources":["../../../src/messages/browser/dispatch.msg.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { loadService } from '@hile/core';
|
|
2
|
+
import { defineMicroMessage } from '@hile/micro';
|
|
3
|
+
import { dispatchBrowserApiFrame } from '../../browser-api/dispatch-stream.js';
|
|
4
|
+
import blogRuntimeService from '../../services/blog-runtime.service.js';
|
|
5
|
+
export default defineMicroMessage(async function* ({ data, invocation }) {
|
|
6
|
+
const runtime = await loadService(blogRuntimeService);
|
|
7
|
+
yield* dispatchBrowserApiFrame(runtime.browserApi, data, invocation);
|
|
8
|
+
});
|
|
9
|
+
//# sourceMappingURL=dispatch.msg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatch.msg.js","sourceRoot":"","sources":["../../../src/messages/browser/dispatch.msg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,kBAAkB,MAAM,wCAAwC,CAAC;AAExE,eAAe,kBAAkB,CAAU,KAAK,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;IAC9E,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACtD,KAAK,CAAC,CAAC,uBAAuB,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.msg.d.ts","sourceRoot":"","sources":["../../../../src/messages/public/categories/list.msg.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { loadService } from '@hile/core';
|
|
2
|
+
import { defineMicroMessage } from '@hile/micro';
|
|
3
|
+
import blogRuntimeService from '../../../services/blog-runtime.service.js';
|
|
4
|
+
export default defineMicroMessage(async ({ data, invocation }) => {
|
|
5
|
+
const runtime = await loadService(blogRuntimeService);
|
|
6
|
+
return runtime.publicMicro.listCategories(data, invocation.signal);
|
|
7
|
+
});
|
|
8
|
+
//# sourceMappingURL=list.msg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.msg.js","sourceRoot":"","sources":["../../../../src/messages/public/categories/list.msg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,kBAAkB,MAAM,2CAA2C,CAAC;AAE3E,eAAe,kBAAkB,CAAU,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE;IACxE,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACtD,OAAO,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;AACrE,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.msg.d.ts","sourceRoot":"","sources":["../../../../src/messages/public/comments/list.msg.ts"],"names":[],"mappings":""}
|