@bendyline/docblocks-cli 0.1.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/LICENSE +21 -0
- package/README.md +109 -0
- package/dist/commands/build.d.ts +3 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +58 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/convert.d.ts +32 -0
- package/dist/commands/convert.d.ts.map +1 -0
- package/dist/commands/convert.js +168 -0
- package/dist/commands/convert.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +23 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/mcp.d.ts +12 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +20 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/parse.d.ts +6 -0
- package/dist/commands/parse.d.ts.map +1 -0
- package/dist/commands/parse.js +38 -0
- package/dist/commands/parse.js.map +1 -0
- package/dist/commands/serve.d.ts +3 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +10 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/commands/themes.d.ts +6 -0
- package/dist/commands/themes.d.ts.map +1 -0
- package/dist/commands/themes.js +15 -0
- package/dist/commands/themes.js.map +1 -0
- package/dist/commands/transforms.d.ts +6 -0
- package/dist/commands/transforms.d.ts.map +1 -0
- package/dist/commands/transforms.js +15 -0
- package/dist/commands/transforms.js.map +1 -0
- package/dist/commands/video.d.ts +31 -0
- package/dist/commands/video.d.ts.map +1 -0
- package/dist/commands/video.js +116 -0
- package/dist/commands/video.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/server.d.ts +12 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +453 -0
- package/dist/mcp/server.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,453 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DocBlocks MCP Server
|
|
3
|
+
*
|
|
4
|
+
* Exposes document conversion, analysis, and transformation tools
|
|
5
|
+
* via the Model Context Protocol (MCP) over stdio.
|
|
6
|
+
*
|
|
7
|
+
* Designed for AI agents: tools accept raw markdown text so agents
|
|
8
|
+
* can write content and immediately export it without temp files.
|
|
9
|
+
*/
|
|
10
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
11
|
+
import { z } from 'zod';
|
|
12
|
+
import { writeFile, readFile, stat, rm } from 'node:fs/promises';
|
|
13
|
+
import { resolve, join } from 'node:path';
|
|
14
|
+
import { tmpdir } from 'node:os';
|
|
15
|
+
import { randomBytes } from 'node:crypto';
|
|
16
|
+
/**
|
|
17
|
+
* Resolve markdown input: either raw text or a file path.
|
|
18
|
+
* Returns the resolved file path (writing to a temp file if given raw text).
|
|
19
|
+
*/
|
|
20
|
+
async function resolveMarkdownInput(markdown) {
|
|
21
|
+
// If it looks like a file path (no newlines, ends with known ext or exists on disk)
|
|
22
|
+
if (!markdown.includes('\n') && markdown.length < 500) {
|
|
23
|
+
try {
|
|
24
|
+
const resolved = resolve(markdown);
|
|
25
|
+
const info = await stat(resolved);
|
|
26
|
+
if (info.isFile() || info.isDirectory()) {
|
|
27
|
+
return { filePath: resolved, isTemp: false };
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// Not a valid path — treat as raw markdown
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// Write raw markdown to a temp file
|
|
35
|
+
const tmpId = randomBytes(8).toString('hex');
|
|
36
|
+
const tmpPath = join(tmpdir(), `docblocks-mcp-${tmpId}.md`);
|
|
37
|
+
await writeFile(tmpPath, markdown, 'utf-8');
|
|
38
|
+
return { filePath: tmpPath, isTemp: true };
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Clean up a temp file if needed.
|
|
42
|
+
*/
|
|
43
|
+
async function cleanupTemp(filePath, isTemp) {
|
|
44
|
+
if (isTemp) {
|
|
45
|
+
await rm(filePath, { force: true });
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Resolve markdown input to text content. Used by tools that operate
|
|
50
|
+
* on the markdown string directly (analyze, restyle) rather than via file.
|
|
51
|
+
*/
|
|
52
|
+
async function resolveMarkdownText(markdown) {
|
|
53
|
+
if (!markdown.includes('\n') && markdown.length < 500) {
|
|
54
|
+
try {
|
|
55
|
+
const resolved = resolve(markdown);
|
|
56
|
+
const info = await stat(resolved);
|
|
57
|
+
if (info.isFile()) {
|
|
58
|
+
return await readFile(resolved, 'utf-8');
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
// Not a valid path — use as-is
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return markdown;
|
|
66
|
+
}
|
|
67
|
+
export function createMcpServer() {
|
|
68
|
+
const server = new McpServer({
|
|
69
|
+
name: 'docblocks',
|
|
70
|
+
version: '0.1.0',
|
|
71
|
+
});
|
|
72
|
+
// ── Export Tools ─────────────────────────────────────────────────
|
|
73
|
+
const EXPORT_FORMATS = [
|
|
74
|
+
{
|
|
75
|
+
format: 'docx',
|
|
76
|
+
description: 'Export a markdown document to a polished Microsoft Word (.docx) file with professional formatting and themes. Accepts raw markdown text or a file path.',
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
format: 'pdf',
|
|
80
|
+
description: 'Export a markdown document to a styled PDF file. Accepts raw markdown text or a file path.',
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
format: 'pptx',
|
|
84
|
+
description: 'Export a markdown document to a PowerPoint presentation — each section becomes a slide. Accepts raw markdown text or a file path.',
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
format: 'html',
|
|
88
|
+
description: 'Export a markdown document to a self-contained interactive HTML page with an embedded player. Accepts raw markdown text or a file path.',
|
|
89
|
+
},
|
|
90
|
+
];
|
|
91
|
+
for (const { format, description } of EXPORT_FORMATS) {
|
|
92
|
+
server.tool(`export_markdown_to_${format}`, description, {
|
|
93
|
+
markdown: z
|
|
94
|
+
.string()
|
|
95
|
+
.describe('Raw markdown text or path to a .md/.zip/.dbk file or folder'),
|
|
96
|
+
outputPath: z.string().describe(`Output .${format} file path`),
|
|
97
|
+
theme: z.string().optional().describe('Visual theme ID (use list_themes to see options)'),
|
|
98
|
+
transform: z
|
|
99
|
+
.string()
|
|
100
|
+
.optional()
|
|
101
|
+
.describe('Transform style to apply before export (use list_transform_styles to see options)'),
|
|
102
|
+
}, async ({ markdown, outputPath, theme, transform }) => {
|
|
103
|
+
const { filePath, isTemp } = await resolveMarkdownInput(markdown);
|
|
104
|
+
try {
|
|
105
|
+
const { runConvert } = await import('../commands/convert.js');
|
|
106
|
+
const result = await runConvert(filePath, {
|
|
107
|
+
outputDir: resolve(outputPath, '..'),
|
|
108
|
+
formats: format,
|
|
109
|
+
theme,
|
|
110
|
+
transform,
|
|
111
|
+
});
|
|
112
|
+
const file = result.outputFiles[0];
|
|
113
|
+
return {
|
|
114
|
+
content: [
|
|
115
|
+
{
|
|
116
|
+
type: 'text',
|
|
117
|
+
text: JSON.stringify({
|
|
118
|
+
outputPath: file.path,
|
|
119
|
+
fileSize: file.size,
|
|
120
|
+
format,
|
|
121
|
+
}),
|
|
122
|
+
},
|
|
123
|
+
],
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
finally {
|
|
127
|
+
await cleanupTemp(filePath, isTemp);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
server.tool('export_markdown_to_video', 'Render a markdown document as an MP4 video with narration-synced animations. Requires ffmpeg and Playwright. Accepts raw markdown text or a file path.', {
|
|
132
|
+
markdown: z.string().describe('Raw markdown text or path to a .md/.zip/.dbk file or folder'),
|
|
133
|
+
outputPath: z.string().describe('Output .mp4 file path'),
|
|
134
|
+
fps: z.number().min(1).max(120).optional().describe('Frames per second (default: 30)'),
|
|
135
|
+
quality: z
|
|
136
|
+
.enum(['draft', 'normal', 'high'])
|
|
137
|
+
.optional()
|
|
138
|
+
.describe('Encoding quality (default: normal)'),
|
|
139
|
+
orientation: z
|
|
140
|
+
.enum(['landscape', 'portrait'])
|
|
141
|
+
.optional()
|
|
142
|
+
.describe('Video orientation (default: landscape)'),
|
|
143
|
+
captions: z
|
|
144
|
+
.enum(['off', 'standard', 'social'])
|
|
145
|
+
.optional()
|
|
146
|
+
.describe('Caption style (default: off)'),
|
|
147
|
+
width: z.number().optional().describe('Override video width in pixels'),
|
|
148
|
+
height: z.number().optional().describe('Override video height in pixels'),
|
|
149
|
+
}, async ({ markdown, outputPath, fps, quality, orientation, captions, width, height }) => {
|
|
150
|
+
const { filePath, isTemp } = await resolveMarkdownInput(markdown);
|
|
151
|
+
try {
|
|
152
|
+
const { runVideo } = await import('../commands/video.js');
|
|
153
|
+
const result = await runVideo(filePath, {
|
|
154
|
+
output: outputPath,
|
|
155
|
+
fps,
|
|
156
|
+
quality,
|
|
157
|
+
orientation,
|
|
158
|
+
captions: captions,
|
|
159
|
+
width,
|
|
160
|
+
height,
|
|
161
|
+
});
|
|
162
|
+
return {
|
|
163
|
+
content: [
|
|
164
|
+
{
|
|
165
|
+
type: 'text',
|
|
166
|
+
text: JSON.stringify({
|
|
167
|
+
outputPath: result.outputPath,
|
|
168
|
+
duration: result.duration,
|
|
169
|
+
frameCount: result.frameCount,
|
|
170
|
+
}),
|
|
171
|
+
},
|
|
172
|
+
],
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
finally {
|
|
176
|
+
await cleanupTemp(filePath, isTemp);
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
// ── Markdown Intelligence Tools ──────────────────────────────────
|
|
180
|
+
server.tool('analyze_markdown', "Analyze a markdown document's structure, extracting key content elements: statistics, quotes, dates, facts, comparisons, and lists. Use this to understand what a document contains before choosing a theme or transform. Accepts raw markdown text or a file path.", {
|
|
181
|
+
markdown: z.string().describe('Raw markdown text or path to a .md file'),
|
|
182
|
+
}, async ({ markdown }) => {
|
|
183
|
+
const content = await resolveMarkdownText(markdown);
|
|
184
|
+
const { parseMarkdown } = await import('@bendyline/squisq/markdown');
|
|
185
|
+
const { extractContent } = await import('@bendyline/squisq/generate');
|
|
186
|
+
const { markdownToDoc } = await import('@bendyline/squisq/doc');
|
|
187
|
+
const markdownDoc = parseMarkdown(content);
|
|
188
|
+
const doc = markdownToDoc(markdownDoc);
|
|
189
|
+
// Extract content elements
|
|
190
|
+
const extracted = extractContent(content);
|
|
191
|
+
// Compute structure stats
|
|
192
|
+
const stats = {
|
|
193
|
+
blockCount: doc.blocks?.length ?? 0,
|
|
194
|
+
headingCount: 0,
|
|
195
|
+
paragraphCount: 0,
|
|
196
|
+
wordCount: content.split(/\s+/).filter(Boolean).length,
|
|
197
|
+
characterCount: content.length,
|
|
198
|
+
};
|
|
199
|
+
if (markdownDoc.children) {
|
|
200
|
+
for (const node of markdownDoc.children) {
|
|
201
|
+
if (node.type === 'heading')
|
|
202
|
+
stats.headingCount++;
|
|
203
|
+
if (node.type === 'paragraph')
|
|
204
|
+
stats.paragraphCount++;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return {
|
|
208
|
+
content: [
|
|
209
|
+
{
|
|
210
|
+
type: 'text',
|
|
211
|
+
text: JSON.stringify({ stats, extracted }, null, 2),
|
|
212
|
+
},
|
|
213
|
+
],
|
|
214
|
+
};
|
|
215
|
+
});
|
|
216
|
+
server.tool('restyle_markdown', 'Restyle a markdown document by applying a visual transform — restructures content for a specific presentation style (documentary, magazine, data-driven, narrative, minimal). Returns the transformed markdown text. Use list_transform_styles to see available styles. Accepts raw markdown text or a file path.', {
|
|
217
|
+
markdown: z.string().describe('Raw markdown text or path to a .md file'),
|
|
218
|
+
style: z.string().describe('Transform style ID (use list_transform_styles to see options)'),
|
|
219
|
+
theme: z
|
|
220
|
+
.string()
|
|
221
|
+
.optional()
|
|
222
|
+
.describe('Visual theme ID to apply (use list_themes to see options)'),
|
|
223
|
+
outputPath: z
|
|
224
|
+
.string()
|
|
225
|
+
.optional()
|
|
226
|
+
.describe('If provided, write the transformed markdown to this file path'),
|
|
227
|
+
}, async ({ markdown, style, theme, outputPath }) => {
|
|
228
|
+
const content = await resolveMarkdownText(markdown);
|
|
229
|
+
const { getTransformStyleIds } = await import('@bendyline/squisq/transform');
|
|
230
|
+
const validStyles = getTransformStyleIds();
|
|
231
|
+
if (!validStyles.includes(style)) {
|
|
232
|
+
return {
|
|
233
|
+
content: [
|
|
234
|
+
{
|
|
235
|
+
type: 'text',
|
|
236
|
+
text: `Unknown transform style "${style}". Available: ${validStyles.join(', ')}`,
|
|
237
|
+
},
|
|
238
|
+
],
|
|
239
|
+
isError: true,
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
const { parseMarkdown, stringifyMarkdown } = await import('@bendyline/squisq/markdown');
|
|
243
|
+
const { MemoryContentContainer } = await import('@bendyline/squisq/storage');
|
|
244
|
+
const { applyTransformToMarkdown } = await import('../commands/convert.js');
|
|
245
|
+
const markdownDoc = parseMarkdown(content);
|
|
246
|
+
const container = new MemoryContentContainer();
|
|
247
|
+
const transformedMarkdownDoc = await applyTransformToMarkdown(markdownDoc, container, style, theme);
|
|
248
|
+
const transformedText = stringifyMarkdown(transformedMarkdownDoc);
|
|
249
|
+
if (outputPath) {
|
|
250
|
+
await writeFile(resolve(outputPath), transformedText, 'utf-8');
|
|
251
|
+
}
|
|
252
|
+
return {
|
|
253
|
+
content: [
|
|
254
|
+
{
|
|
255
|
+
type: 'text',
|
|
256
|
+
text: transformedText,
|
|
257
|
+
},
|
|
258
|
+
],
|
|
259
|
+
};
|
|
260
|
+
});
|
|
261
|
+
// ── Discovery Tools ──────────────────────────────────────────────
|
|
262
|
+
server.tool('list_themes', 'List all available visual themes (e.g., documentary, cinematic, bold) with descriptions. Use to choose a theme before exporting.', {}, async () => {
|
|
263
|
+
const { getThemeSummaries } = await import('@bendyline/squisq/schemas');
|
|
264
|
+
const themes = getThemeSummaries();
|
|
265
|
+
return {
|
|
266
|
+
content: [
|
|
267
|
+
{
|
|
268
|
+
type: 'text',
|
|
269
|
+
text: JSON.stringify(themes, null, 2),
|
|
270
|
+
},
|
|
271
|
+
],
|
|
272
|
+
};
|
|
273
|
+
});
|
|
274
|
+
server.tool('list_transform_styles', 'List all available transform styles (e.g., documentary, magazine, minimal) with descriptions. Use before calling restyle_markdown to see what styles are available.', {}, async () => {
|
|
275
|
+
const { getTransformStyleSummaries } = await import('@bendyline/squisq/transform');
|
|
276
|
+
const styles = getTransformStyleSummaries();
|
|
277
|
+
return {
|
|
278
|
+
content: [
|
|
279
|
+
{
|
|
280
|
+
type: 'text',
|
|
281
|
+
text: JSON.stringify(styles, null, 2),
|
|
282
|
+
},
|
|
283
|
+
],
|
|
284
|
+
};
|
|
285
|
+
});
|
|
286
|
+
server.tool('list_export_formats', 'List all supported export formats with descriptions of what each produces. Use to help choose the right output format.', {}, async () => {
|
|
287
|
+
const formats = {
|
|
288
|
+
input: [
|
|
289
|
+
{ ext: '.md', description: 'Markdown file' },
|
|
290
|
+
{ ext: '.zip/.dbk', description: 'Container archive with embedded media' },
|
|
291
|
+
{ ext: 'folder', description: 'Directory with markdown and media files' },
|
|
292
|
+
],
|
|
293
|
+
output: [
|
|
294
|
+
{
|
|
295
|
+
format: 'docx',
|
|
296
|
+
description: 'Microsoft Word document with professional formatting',
|
|
297
|
+
tool: 'export_markdown_to_docx',
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
format: 'pdf',
|
|
301
|
+
description: 'Styled PDF document',
|
|
302
|
+
tool: 'export_markdown_to_pdf',
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
format: 'pptx',
|
|
306
|
+
description: 'PowerPoint presentation — each section becomes a slide',
|
|
307
|
+
tool: 'export_markdown_to_pptx',
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
format: 'html',
|
|
311
|
+
description: 'Self-contained interactive HTML page with embedded player',
|
|
312
|
+
tool: 'export_markdown_to_html',
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
format: 'mp4',
|
|
316
|
+
description: 'Video with narration-synced animations (requires ffmpeg)',
|
|
317
|
+
tool: 'export_markdown_to_video',
|
|
318
|
+
},
|
|
319
|
+
],
|
|
320
|
+
};
|
|
321
|
+
return {
|
|
322
|
+
content: [
|
|
323
|
+
{
|
|
324
|
+
type: 'text',
|
|
325
|
+
text: JSON.stringify(formats, null, 2),
|
|
326
|
+
},
|
|
327
|
+
],
|
|
328
|
+
};
|
|
329
|
+
});
|
|
330
|
+
// ── Resources ────────────────────────────────────────────────────
|
|
331
|
+
server.resource('formats', 'docblocks://formats', async () => {
|
|
332
|
+
return {
|
|
333
|
+
contents: [
|
|
334
|
+
{
|
|
335
|
+
uri: 'docblocks://formats',
|
|
336
|
+
mimeType: 'application/json',
|
|
337
|
+
text: JSON.stringify({
|
|
338
|
+
description: 'DocBlocks supports converting markdown documents to multiple professional output formats',
|
|
339
|
+
inputFormats: ['.md', '.zip', '.dbk', 'folder'],
|
|
340
|
+
outputFormats: ['docx', 'pptx', 'pdf', 'html', 'mp4', 'dbk'],
|
|
341
|
+
}, null, 2),
|
|
342
|
+
},
|
|
343
|
+
],
|
|
344
|
+
};
|
|
345
|
+
});
|
|
346
|
+
// ── Prompts ──────────────────────────────────────────────────────
|
|
347
|
+
server.prompt('create-presentation', 'Create a presentation-ready document from markdown. Guides you through writing content, choosing a theme, applying a transform style, and exporting to PPTX or PDF.', {
|
|
348
|
+
topic: z.string().describe('The topic or subject for the presentation'),
|
|
349
|
+
style: z
|
|
350
|
+
.string()
|
|
351
|
+
.optional()
|
|
352
|
+
.describe('Transform style (documentary, magazine, data-driven, narrative, minimal). If omitted, you will be guided to choose.'),
|
|
353
|
+
}, async ({ topic, style }) => {
|
|
354
|
+
return {
|
|
355
|
+
messages: [
|
|
356
|
+
{
|
|
357
|
+
role: 'user',
|
|
358
|
+
content: {
|
|
359
|
+
type: 'text',
|
|
360
|
+
text: `Create a presentation about: ${topic}
|
|
361
|
+
|
|
362
|
+
Instructions for the AI agent:
|
|
363
|
+
|
|
364
|
+
1. First, call list_themes and list_transform_styles to see available options.
|
|
365
|
+
2. Write well-structured markdown content about the topic. Structure it with clear sections using ## headings — each heading becomes a slide.
|
|
366
|
+
3. Call restyle_markdown with style="${style ?? 'documentary'}" to transform the content for presentation.
|
|
367
|
+
4. Review the restyled markdown and make any adjustments.
|
|
368
|
+
5. Call export_markdown_to_pptx to generate the PowerPoint file.
|
|
369
|
+
|
|
370
|
+
Tips for great presentations:
|
|
371
|
+
- Use ## for slide breaks
|
|
372
|
+
- Keep each section focused on one idea
|
|
373
|
+
- Include statistics and quotes when relevant — they become visual highlights
|
|
374
|
+
- Use bullet lists for key points
|
|
375
|
+
- Add image references with  for visual slides`,
|
|
376
|
+
},
|
|
377
|
+
},
|
|
378
|
+
],
|
|
379
|
+
};
|
|
380
|
+
});
|
|
381
|
+
server.prompt('create-video', 'Create a video from markdown content. Guides you through writing content optimized for video, choosing a theme, and rendering to MP4.', {
|
|
382
|
+
topic: z.string().describe('The topic or subject for the video'),
|
|
383
|
+
orientation: z
|
|
384
|
+
.enum(['landscape', 'portrait'])
|
|
385
|
+
.optional()
|
|
386
|
+
.describe('Video orientation (default: landscape)'),
|
|
387
|
+
}, async ({ topic, orientation }) => {
|
|
388
|
+
return {
|
|
389
|
+
messages: [
|
|
390
|
+
{
|
|
391
|
+
role: 'user',
|
|
392
|
+
content: {
|
|
393
|
+
type: 'text',
|
|
394
|
+
text: `Create a video about: ${topic}
|
|
395
|
+
|
|
396
|
+
Instructions for the AI agent:
|
|
397
|
+
|
|
398
|
+
1. First, call list_themes to see available visual themes.
|
|
399
|
+
2. Write markdown content optimized for video presentation. The document will be rendered as an animated sequence.
|
|
400
|
+
3. Call analyze_markdown to understand the content structure and choose the best theme.
|
|
401
|
+
4. Call export_markdown_to_video with orientation="${orientation ?? 'landscape'}" to render the video.
|
|
402
|
+
|
|
403
|
+
Tips for great video content:
|
|
404
|
+
- Use clear ## section headings — they create visual transitions
|
|
405
|
+
- Include statistics (numbers with context) — they animate dramatically
|
|
406
|
+
- Add quotes with attribution — they get cinematic treatment
|
|
407
|
+
- Keep paragraphs concise — each maps to a timed visual block
|
|
408
|
+
- The video player auto-times content, so focus on clarity over length`,
|
|
409
|
+
},
|
|
410
|
+
},
|
|
411
|
+
],
|
|
412
|
+
};
|
|
413
|
+
});
|
|
414
|
+
server.prompt('create-document', 'Create a professional document from markdown. Guides you through writing content, choosing a theme, and exporting to DOCX or PDF.', {
|
|
415
|
+
topic: z.string().describe('The topic or subject for the document'),
|
|
416
|
+
format: z.enum(['docx', 'pdf']).optional().describe('Output format (default: pdf)'),
|
|
417
|
+
}, async ({ topic, format }) => {
|
|
418
|
+
const outputFormat = format ?? 'pdf';
|
|
419
|
+
const toolName = outputFormat === 'docx' ? 'export_markdown_to_docx' : 'export_markdown_to_pdf';
|
|
420
|
+
return {
|
|
421
|
+
messages: [
|
|
422
|
+
{
|
|
423
|
+
role: 'user',
|
|
424
|
+
content: {
|
|
425
|
+
type: 'text',
|
|
426
|
+
text: `Create a professional document about: ${topic}
|
|
427
|
+
|
|
428
|
+
Instructions for the AI agent:
|
|
429
|
+
|
|
430
|
+
1. First, call list_themes to see available visual themes.
|
|
431
|
+
2. Write well-structured markdown content. Use standard markdown formatting:
|
|
432
|
+
- # for the document title
|
|
433
|
+
- ## for major sections
|
|
434
|
+
- ### for subsections
|
|
435
|
+
- **bold** and *italic* for emphasis
|
|
436
|
+
- > for important quotes or callouts
|
|
437
|
+
- Numbered and bullet lists for organized content
|
|
438
|
+
3. Optionally call restyle_markdown to apply a professional transform.
|
|
439
|
+
4. Call ${toolName} to generate the final document.
|
|
440
|
+
|
|
441
|
+
Tips for professional documents:
|
|
442
|
+
- Start with a clear title and introduction
|
|
443
|
+
- Use consistent heading hierarchy
|
|
444
|
+
- Include data and statistics where appropriate
|
|
445
|
+
- End with a conclusion or summary section`,
|
|
446
|
+
},
|
|
447
|
+
},
|
|
448
|
+
],
|
|
449
|
+
};
|
|
450
|
+
});
|
|
451
|
+
return server;
|
|
452
|
+
}
|
|
453
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C;;;GAGG;AACH,KAAK,UAAU,oBAAoB,CACjC,QAAgB;IAEhB,oFAAoF;IACpF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACtD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClC,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YAC/C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,2CAA2C;QAC7C,CAAC;IACH,CAAC;IAED,oCAAoC;IACpC,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,iBAAiB,KAAK,KAAK,CAAC,CAAC;IAC5D,MAAM,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,WAAW,CAAC,QAAgB,EAAE,MAAe;IAC1D,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,mBAAmB,CAAC,QAAgB;IACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACtD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClC,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;gBAClB,OAAO,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,oEAAoE;IAEpE,MAAM,cAAc,GAA8C;QAChE;YACE,MAAM,EAAE,MAAM;YACd,WAAW,EACT,yJAAyJ;SAC5J;QACD;YACE,MAAM,EAAE,KAAK;YACb,WAAW,EACT,4FAA4F;SAC/F;QACD;YACE,MAAM,EAAE,MAAM;YACd,WAAW,EACT,mIAAmI;SACtI;QACD;YACE,MAAM,EAAE,MAAM;YACd,WAAW,EACT,yIAAyI;SAC5I;KACF,CAAC;IAEF,KAAK,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,cAAc,EAAE,CAAC;QACrD,MAAM,CAAC,IAAI,CACT,sBAAsB,MAAM,EAAE,EAC9B,WAAW,EACX;YACE,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,CAAC,6DAA6D,CAAC;YAC1E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,MAAM,YAAY,CAAC;YAC9D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;YACzF,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,mFAAmF,CACpF;SACJ,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE;YACnD,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YAClE,IAAI,CAAC;gBACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;gBAC9D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE;oBACxC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC;oBACpC,OAAO,EAAE,MAAM;oBACf,KAAK;oBACL,SAAS;iBACV,CAAC,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACnC,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gCACnB,UAAU,EAAE,IAAI,CAAC,IAAI;gCACrB,QAAQ,EAAE,IAAI,CAAC,IAAI;gCACnB,MAAM;6BACP,CAAC;yBACH;qBACF;iBACF,CAAC;YACJ,CAAC;oBAAS,CAAC;gBACT,MAAM,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACtC,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,IAAI,CACT,0BAA0B,EAC1B,wJAAwJ,EACxJ;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;QAC5F,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QACxD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QACtF,OAAO,EAAE,CAAC;aACP,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;aACjC,QAAQ,EAAE;aACV,QAAQ,CAAC,oCAAoC,CAAC;QACjD,WAAW,EAAE,CAAC;aACX,IAAI,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;aAC/B,QAAQ,EAAE;aACV,QAAQ,CAAC,wCAAwC,CAAC;QACrD,QAAQ,EAAE,CAAC;aACR,IAAI,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;aACnC,QAAQ,EAAE;aACV,QAAQ,CAAC,8BAA8B,CAAC;QAC3C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QACvE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;KAC1E,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QACrF,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAClE,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;YAC1D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE;gBACtC,MAAM,EAAE,UAAU;gBAClB,GAAG;gBACH,OAAO;gBACP,WAAW;gBACX,QAAQ,EAAE,QAAyC;gBACnD,KAAK;gBACL,MAAM;aACP,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,UAAU,EAAE,MAAM,CAAC,UAAU;4BAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;4BACzB,UAAU,EAAE,MAAM,CAAC,UAAU;yBAC9B,CAAC;qBACH;iBACF;aACF,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,MAAM,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,oEAAoE;IAEpE,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,qQAAqQ,EACrQ;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;KACzE,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrB,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAEpD,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;QACrE,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;QACtE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QAEhE,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;QAEvC,2BAA2B;QAC3B,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QAE1C,0BAA0B;QAC1B,MAAM,KAAK,GAAG;YACZ,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;YACnC,YAAY,EAAE,CAAC;YACf,cAAc,EAAE,CAAC;YACjB,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM;YACtD,cAAc,EAAE,OAAO,CAAC,MAAM;SAC/B,CAAC;QAEF,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;YACzB,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;gBACxC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;oBAAE,KAAK,CAAC,YAAY,EAAE,CAAC;gBAClD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;oBAAE,KAAK,CAAC,cAAc,EAAE,CAAC;YACxD,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iBACpD;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,mTAAmT,EACnT;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QACxE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+DAA+D,CAAC;QAC3F,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,2DAA2D,CAAC;QACxE,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,+DAA+D,CAAC;KAC7E,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE;QAC/C,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAEpD,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;QAC7E,MAAM,WAAW,GAAG,oBAAoB,EAAE,CAAC;QAC3C,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,4BAA4B,KAAK,iBAAiB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;qBACjF;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;QACxF,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;QAC7E,MAAM,EAAE,wBAAwB,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;QAE5E,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,sBAAsB,EAAE,CAAC;QAC/C,MAAM,sBAAsB,GAAG,MAAM,wBAAwB,CAC3D,WAAW,EACX,SAAS,EACT,KAAK,EACL,KAAK,CACN,CAAC;QACF,MAAM,eAAe,GAAG,iBAAiB,CAAC,sBAAsB,CAAC,CAAC;QAElE,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;QACjE,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,eAAe;iBACtB;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,oEAAoE;IAEpE,MAAM,CAAC,IAAI,CACT,aAAa,EACb,kIAAkI,EAClI,EAAE,EACF,KAAK,IAAI,EAAE;QACT,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACnC,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtC;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,qKAAqK,EACrK,EAAE,EACF,KAAK,IAAI,EAAE;QACT,MAAM,EAAE,0BAA0B,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;QACnF,MAAM,MAAM,GAAG,0BAA0B,EAAE,CAAC;QAC5C,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtC;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,wHAAwH,EACxH,EAAE,EACF,KAAK,IAAI,EAAE;QACT,MAAM,OAAO,GAAG;YACd,KAAK,EAAE;gBACL,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE;gBAC5C,EAAE,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,uCAAuC,EAAE;gBAC1E,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,yCAAyC,EAAE;aAC1E;YACD,MAAM,EAAE;gBACN;oBACE,MAAM,EAAE,MAAM;oBACd,WAAW,EAAE,sDAAsD;oBACnE,IAAI,EAAE,yBAAyB;iBAChC;gBACD;oBACE,MAAM,EAAE,KAAK;oBACb,WAAW,EAAE,qBAAqB;oBAClC,IAAI,EAAE,wBAAwB;iBAC/B;gBACD;oBACE,MAAM,EAAE,MAAM;oBACd,WAAW,EAAE,wDAAwD;oBACrE,IAAI,EAAE,yBAAyB;iBAChC;gBACD;oBACE,MAAM,EAAE,MAAM;oBACd,WAAW,EAAE,2DAA2D;oBACxE,IAAI,EAAE,yBAAyB;iBAChC;gBACD;oBACE,MAAM,EAAE,KAAK;oBACb,WAAW,EAAE,0DAA0D;oBACvE,IAAI,EAAE,0BAA0B;iBACjC;aACF;SACF,CAAC;QACF,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;iBACvC;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,oEAAoE;IAEpE,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,qBAAqB,EAAE,KAAK,IAAI,EAAE;QAC3D,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,qBAAqB;oBAC1B,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;wBACE,WAAW,EACT,0FAA0F;wBAC5F,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;wBAC/C,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;qBAC7D,EACD,IAAI,EACJ,CAAC,CACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,oEAAoE;IAEpE,MAAM,CAAC,MAAM,CACX,qBAAqB,EACrB,qKAAqK,EACrK;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;QACvE,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,qHAAqH,CACtH;KACJ,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;QACzB,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAe;oBACrB,OAAO,EAAE;wBACP,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,gCAAgC,KAAK;;;;;;uCAMlB,KAAK,IAAI,aAAa;;;;;;;;;2DASF;qBAC9C;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,MAAM,CACX,cAAc,EACd,uIAAuI,EACvI;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QAChE,WAAW,EAAE,CAAC;aACX,IAAI,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;aAC/B,QAAQ,EAAE;aACV,QAAQ,CAAC,wCAAwC,CAAC;KACtD,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE;QAC/B,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAe;oBACrB,OAAO,EAAE;wBACP,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,yBAAyB,KAAK;;;;;;;qDAOG,WAAW,IAAI,WAAW;;;;;;;uEAOR;qBAC1D;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,MAAM,CACX,iBAAiB,EACjB,mIAAmI,EACnI;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QACnE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;KACpF,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QAC1B,MAAM,YAAY,GAAG,MAAM,IAAI,KAAK,CAAC;QACrC,MAAM,QAAQ,GACZ,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,wBAAwB,CAAC;QACjF,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAe;oBACrB,OAAO,EAAE;wBACP,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,yCAAyC,KAAK;;;;;;;;;;;;;UAaxD,QAAQ;;;;;;2CAMyB;qBAC9B;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@bendyline/docblocks-cli",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "DocBlocks CLI — build, serve, and manage markdown document projects",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "Bendyline",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/bendyline/docblocks.git",
|
|
10
|
+
"directory": "packages/cli"
|
|
11
|
+
},
|
|
12
|
+
"homepage": "https://github.com/bendyline/docblocks",
|
|
13
|
+
"keywords": [
|
|
14
|
+
"docblocks",
|
|
15
|
+
"cli",
|
|
16
|
+
"markdown"
|
|
17
|
+
],
|
|
18
|
+
"publishConfig": {
|
|
19
|
+
"access": "public"
|
|
20
|
+
},
|
|
21
|
+
"type": "module",
|
|
22
|
+
"main": "./dist/index.js",
|
|
23
|
+
"types": "./dist/index.d.ts",
|
|
24
|
+
"bin": {
|
|
25
|
+
"docblocks": "./dist/index.js"
|
|
26
|
+
},
|
|
27
|
+
"files": [
|
|
28
|
+
"dist"
|
|
29
|
+
],
|
|
30
|
+
"scripts": {
|
|
31
|
+
"build": "tsup",
|
|
32
|
+
"typecheck": "tsc --noEmit"
|
|
33
|
+
},
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"@bendyline/squisq": "1.2.1",
|
|
36
|
+
"@bendyline/squisq-cli": "1.1.1",
|
|
37
|
+
"@bendyline/squisq-editor-react": "1.2.1",
|
|
38
|
+
"@bendyline/squisq-formats": "1.2.1",
|
|
39
|
+
"@bendyline/squisq-react": "1.1.1",
|
|
40
|
+
"@bendyline/squisq-video": "1.0.3",
|
|
41
|
+
"@modelcontextprotocol/sdk": "1.28.0",
|
|
42
|
+
"commander": "13.1.0",
|
|
43
|
+
"playwright-core": "1.58.2",
|
|
44
|
+
"zod": "3.25.76"
|
|
45
|
+
}
|
|
46
|
+
}
|