@cicctencent/agent-server 0.2.40 → 0.2.42

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 (112) hide show
  1. package/README.md +17 -1
  2. package/dist/cjs/agent/agent-server.d.ts.map +1 -1
  3. package/dist/cjs/agent/agent-server.js +11 -86
  4. package/dist/cjs/agent/agent-server.js.map +1 -1
  5. package/dist/cjs/doc-generator/config-loader.d.ts +27 -0
  6. package/dist/cjs/doc-generator/config-loader.d.ts.map +1 -0
  7. package/dist/cjs/doc-generator/config-loader.js +200 -0
  8. package/dist/cjs/doc-generator/config-loader.js.map +1 -0
  9. package/dist/cjs/doc-generator/docx-renderer.d.ts +14 -0
  10. package/dist/cjs/doc-generator/docx-renderer.d.ts.map +1 -0
  11. package/dist/cjs/doc-generator/docx-renderer.js +354 -0
  12. package/dist/cjs/doc-generator/docx-renderer.js.map +1 -0
  13. package/dist/cjs/doc-generator/index.d.ts +23 -0
  14. package/dist/cjs/doc-generator/index.d.ts.map +1 -0
  15. package/dist/cjs/doc-generator/index.js +251 -0
  16. package/dist/cjs/doc-generator/index.js.map +1 -0
  17. package/dist/cjs/doc-generator/pdf-renderer.d.ts +14 -0
  18. package/dist/cjs/doc-generator/pdf-renderer.d.ts.map +1 -0
  19. package/dist/cjs/doc-generator/pdf-renderer.js +378 -0
  20. package/dist/cjs/doc-generator/pdf-renderer.js.map +1 -0
  21. package/dist/cjs/doc-generator/pptx-renderer.d.ts +14 -0
  22. package/dist/cjs/doc-generator/pptx-renderer.d.ts.map +1 -0
  23. package/dist/cjs/doc-generator/pptx-renderer.js +649 -0
  24. package/dist/cjs/doc-generator/pptx-renderer.js.map +1 -0
  25. package/dist/cjs/doc-generator/report-renderer.d.ts +88 -0
  26. package/dist/cjs/doc-generator/report-renderer.d.ts.map +1 -0
  27. package/dist/cjs/doc-generator/report-renderer.js +699 -0
  28. package/dist/cjs/doc-generator/report-renderer.js.map +1 -0
  29. package/dist/cjs/doc-generator/types.d.ts +193 -0
  30. package/dist/cjs/doc-generator/types.d.ts.map +1 -0
  31. package/dist/cjs/doc-generator/types.js +7 -0
  32. package/dist/cjs/doc-generator/types.js.map +1 -0
  33. package/dist/cjs/index.d.ts +4 -0
  34. package/dist/cjs/index.d.ts.map +1 -1
  35. package/dist/cjs/index.js +45 -36
  36. package/dist/cjs/index.js.map +1 -1
  37. package/dist/cjs/prompt/prompt-builder.d.ts +1 -1
  38. package/dist/cjs/prompt/prompt-builder.d.ts.map +1 -1
  39. package/dist/cjs/prompt/prompt-builder.js +14 -1
  40. package/dist/cjs/prompt/prompt-builder.js.map +1 -1
  41. package/dist/cjs/prompt/shared-fragments.d.ts +3 -3
  42. package/dist/cjs/prompt/shared-fragments.d.ts.map +1 -1
  43. package/dist/cjs/prompt/shared-fragments.js +5 -3
  44. package/dist/cjs/prompt/shared-fragments.js.map +1 -1
  45. package/dist/cjs/tool/builtin.d.ts +10 -3
  46. package/dist/cjs/tool/builtin.d.ts.map +1 -1
  47. package/dist/cjs/tool/builtin.js +10 -3
  48. package/dist/cjs/tool/builtin.js.map +1 -1
  49. package/dist/cjs/tool/tools/docgen.d.ts +5 -0
  50. package/dist/cjs/tool/tools/docgen.d.ts.map +1 -0
  51. package/dist/cjs/tool/tools/docgen.js +388 -0
  52. package/dist/cjs/tool/tools/docgen.js.map +1 -0
  53. package/dist/cjs/tool/tools/sandbox.js +2 -2
  54. package/dist/cjs/tool/tools/sandbox.js.map +1 -1
  55. package/dist/cjs/tool/tools/web.js +2 -2
  56. package/dist/cjs/tool/tools/web.js.map +1 -1
  57. package/dist/esm/agent/agent-server.d.ts.map +1 -1
  58. package/dist/esm/agent/agent-server.js +11 -86
  59. package/dist/esm/agent/agent-server.js.map +1 -1
  60. package/dist/esm/doc-generator/config-loader.d.ts +27 -0
  61. package/dist/esm/doc-generator/config-loader.d.ts.map +1 -0
  62. package/dist/esm/doc-generator/config-loader.js +160 -0
  63. package/dist/esm/doc-generator/config-loader.js.map +1 -0
  64. package/dist/esm/doc-generator/docx-renderer.d.ts +14 -0
  65. package/dist/esm/doc-generator/docx-renderer.d.ts.map +1 -0
  66. package/dist/esm/doc-generator/docx-renderer.js +318 -0
  67. package/dist/esm/doc-generator/docx-renderer.js.map +1 -0
  68. package/dist/esm/doc-generator/index.d.ts +23 -0
  69. package/dist/esm/doc-generator/index.d.ts.map +1 -0
  70. package/dist/esm/doc-generator/index.js +212 -0
  71. package/dist/esm/doc-generator/index.js.map +1 -0
  72. package/dist/esm/doc-generator/pdf-renderer.d.ts +14 -0
  73. package/dist/esm/doc-generator/pdf-renderer.d.ts.map +1 -0
  74. package/dist/esm/doc-generator/pdf-renderer.js +339 -0
  75. package/dist/esm/doc-generator/pdf-renderer.js.map +1 -0
  76. package/dist/esm/doc-generator/pptx-renderer.d.ts +14 -0
  77. package/dist/esm/doc-generator/pptx-renderer.d.ts.map +1 -0
  78. package/dist/esm/doc-generator/pptx-renderer.js +643 -0
  79. package/dist/esm/doc-generator/pptx-renderer.js.map +1 -0
  80. package/dist/esm/doc-generator/report-renderer.d.ts +88 -0
  81. package/dist/esm/doc-generator/report-renderer.d.ts.map +1 -0
  82. package/dist/esm/doc-generator/report-renderer.js +663 -0
  83. package/dist/esm/doc-generator/report-renderer.js.map +1 -0
  84. package/dist/esm/doc-generator/types.d.ts +193 -0
  85. package/dist/esm/doc-generator/types.d.ts.map +1 -0
  86. package/dist/esm/doc-generator/types.js +6 -0
  87. package/dist/esm/doc-generator/types.js.map +1 -0
  88. package/dist/esm/index.d.ts +4 -0
  89. package/dist/esm/index.d.ts.map +1 -1
  90. package/dist/esm/index.js +3 -0
  91. package/dist/esm/index.js.map +1 -1
  92. package/dist/esm/prompt/prompt-builder.d.ts +1 -1
  93. package/dist/esm/prompt/prompt-builder.d.ts.map +1 -1
  94. package/dist/esm/prompt/prompt-builder.js +14 -1
  95. package/dist/esm/prompt/prompt-builder.js.map +1 -1
  96. package/dist/esm/prompt/shared-fragments.d.ts +3 -3
  97. package/dist/esm/prompt/shared-fragments.d.ts.map +1 -1
  98. package/dist/esm/prompt/shared-fragments.js +5 -3
  99. package/dist/esm/prompt/shared-fragments.js.map +1 -1
  100. package/dist/esm/tool/builtin.d.ts +10 -3
  101. package/dist/esm/tool/builtin.d.ts.map +1 -1
  102. package/dist/esm/tool/builtin.js +10 -3
  103. package/dist/esm/tool/builtin.js.map +1 -1
  104. package/dist/esm/tool/tools/docgen.d.ts +5 -0
  105. package/dist/esm/tool/tools/docgen.d.ts.map +1 -0
  106. package/dist/esm/tool/tools/docgen.js +352 -0
  107. package/dist/esm/tool/tools/docgen.js.map +1 -0
  108. package/dist/esm/tool/tools/sandbox.js +2 -2
  109. package/dist/esm/tool/tools/sandbox.js.map +1 -1
  110. package/dist/esm/tool/tools/web.js +2 -2
  111. package/dist/esm/tool/tools/web.js.map +1 -1
  112. package/package.json +7 -2
@@ -0,0 +1,354 @@
1
+ "use strict";
2
+ /**
3
+ * @file DOCX 渲染器
4
+ * @description 使用 docx 库将结构化文档数据渲染为 .docx 文件
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.renderDocx = renderDocx;
41
+ const docx_1 = require("docx");
42
+ const fs = __importStar(require("fs"));
43
+ const config_loader_ts_1 = require("./config-loader.js");
44
+ /** 将 hex 颜色转 DOCX 格式(去掉 #) */
45
+ function hex(color) {
46
+ if (!color)
47
+ return '000000';
48
+ return color.replace('#', '');
49
+ }
50
+ /** 页面尺寸映射 (DXA units, 1440 DXA = 1 inch) */
51
+ const PAGE_SIZES = {
52
+ A4: { width: 11906, height: 16838 },
53
+ letter: { width: 12240, height: 15840 },
54
+ legal: { width: 12240, height: 20160 },
55
+ };
56
+ /** 渲染 DOCX */
57
+ async function renderDocx(data, templatesDir) {
58
+ const theme = (0, config_loader_ts_1.loadTheme)('docx', data.theme, templatesDir);
59
+ const opts = data.options || {};
60
+ // 页面配置
61
+ const pageSizeKey = opts.pageSize || theme.page?.size || 'A4';
62
+ const pageSize = PAGE_SIZES[pageSizeKey] || PAGE_SIZES.A4;
63
+ const margins = opts.margins || theme.page?.margin || { top: 1440, right: 1440, bottom: 1440, left: 1440 };
64
+ // 内容宽度 (DXA)
65
+ const contentWidth = pageSize.width - margins.left - margins.right;
66
+ // 构建文档 children
67
+ const children = [];
68
+ // 可选目录
69
+ if (opts.includeToc) {
70
+ children.push(new docx_1.TableOfContents('Table of Contents', {
71
+ hyperlink: true,
72
+ headingStyleRange: '1-3',
73
+ }));
74
+ children.push(new docx_1.Paragraph({ children: [new docx_1.PageBreak()] }));
75
+ }
76
+ // 渲染每个区块
77
+ for (const block of data.blocks) {
78
+ const rendered = renderBlock(block, theme, contentWidth);
79
+ children.push(...rendered);
80
+ }
81
+ // 构建文档
82
+ const doc = new docx_1.Document({
83
+ styles: {
84
+ default: {
85
+ document: {
86
+ run: { font: theme.fonts.body, size: (theme.sizes.body || 12) * 2 },
87
+ },
88
+ },
89
+ paragraphStyles: buildParagraphStyles(theme),
90
+ },
91
+ numbering: {
92
+ config: [
93
+ {
94
+ reference: 'bullets',
95
+ levels: [{
96
+ level: 0,
97
+ format: docx_1.LevelFormat.BULLET,
98
+ text: '\u2022',
99
+ alignment: docx_1.AlignmentType.LEFT,
100
+ style: { paragraph: { indent: { left: 720, hanging: 360 } } },
101
+ }],
102
+ },
103
+ {
104
+ reference: 'numbers',
105
+ levels: [{
106
+ level: 0,
107
+ format: docx_1.LevelFormat.DECIMAL,
108
+ text: '%1.',
109
+ alignment: docx_1.AlignmentType.LEFT,
110
+ style: { paragraph: { indent: { left: 720, hanging: 360 } } },
111
+ }],
112
+ },
113
+ ],
114
+ },
115
+ sections: [{
116
+ properties: {
117
+ page: {
118
+ size: { width: pageSize.width, height: pageSize.height },
119
+ margin: margins,
120
+ },
121
+ },
122
+ headers: opts.headerText ? {
123
+ default: new docx_1.Header({
124
+ children: [new docx_1.Paragraph({
125
+ border: { bottom: { style: docx_1.BorderStyle.SINGLE, size: 6, color: hex(theme.colors.primary), space: 1 } },
126
+ children: [new docx_1.TextRun({ text: opts.headerText, font: theme.fonts.caption, size: (theme.sizes.caption || 10) * 2, color: hex(theme.colors.caption) })],
127
+ })],
128
+ }),
129
+ } : undefined,
130
+ footers: (opts.showPageNumbers !== false || opts.footerText) ? {
131
+ default: new docx_1.Footer({
132
+ children: [new docx_1.Paragraph({
133
+ alignment: docx_1.AlignmentType.CENTER,
134
+ children: [
135
+ ...(opts.footerText ? [new docx_1.TextRun({ text: opts.footerText + ' | ', font: theme.fonts.caption, size: (theme.sizes.caption || 10) * 2, color: hex(theme.colors.caption) })] : []),
136
+ new docx_1.TextRun({ text: 'Page ', font: theme.fonts.caption, size: (theme.sizes.caption || 10) * 2, color: hex(theme.colors.caption) }),
137
+ new docx_1.TextRun({ children: [docx_1.PageNumber.CURRENT], font: theme.fonts.caption, size: (theme.sizes.caption || 10) * 2, color: hex(theme.colors.caption) }),
138
+ ],
139
+ })],
140
+ }),
141
+ } : undefined,
142
+ children,
143
+ }],
144
+ });
145
+ const buffer = await docx_1.Packer.toBuffer(doc);
146
+ const filename = data.filename || `${sanitizeFilename(data.title)}.docx`;
147
+ return {
148
+ buffer,
149
+ filename,
150
+ mimeType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
151
+ size: buffer.length,
152
+ };
153
+ }
154
+ function buildParagraphStyles(theme) {
155
+ const sizes = theme.sizes;
156
+ return [
157
+ {
158
+ id: 'Heading1', name: 'Heading 1', basedOn: 'Normal', next: 'Normal', quickFormat: true,
159
+ run: { size: (sizes.h1 || 24) * 2, bold: true, font: theme.fonts.heading, color: hex(theme.colors.heading || theme.colors.primary) },
160
+ paragraph: { spacing: { before: theme.spacing.headingBefore || 240, after: theme.spacing.headingAfter || 120 }, outlineLevel: 0 },
161
+ },
162
+ {
163
+ id: 'Heading2', name: 'Heading 2', basedOn: 'Normal', next: 'Normal', quickFormat: true,
164
+ run: { size: (sizes.h2 || 20) * 2, bold: true, font: theme.fonts.heading, color: hex(theme.colors.heading || theme.colors.primary) },
165
+ paragraph: { spacing: { before: theme.spacing.headingBefore || 240, after: theme.spacing.headingAfter || 120 }, outlineLevel: 1 },
166
+ },
167
+ {
168
+ id: 'Heading3', name: 'Heading 3', basedOn: 'Normal', next: 'Normal', quickFormat: true,
169
+ run: { size: (sizes.h3 || 16) * 2, bold: true, font: theme.fonts.heading, color: hex(theme.colors.heading || theme.colors.primary) },
170
+ paragraph: { spacing: { before: 180, after: 120 }, outlineLevel: 2 },
171
+ },
172
+ {
173
+ id: 'Heading4', name: 'Heading 4', basedOn: 'Normal', next: 'Normal', quickFormat: true,
174
+ run: { size: (sizes.h4 || 14) * 2, bold: true, font: theme.fonts.heading, color: hex(theme.colors.heading || theme.colors.primary) },
175
+ paragraph: { spacing: { before: 120, after: 80 }, outlineLevel: 3 },
176
+ },
177
+ ];
178
+ }
179
+ function renderBlock(block, theme, contentWidth) {
180
+ const result = [];
181
+ const c = theme.colors;
182
+ const f = theme.fonts;
183
+ const s = theme.sizes;
184
+ const sp = theme.spacing;
185
+ switch (block.type) {
186
+ case 'heading': {
187
+ const levelMap = {
188
+ 1: docx_1.HeadingLevel.HEADING_1,
189
+ 2: docx_1.HeadingLevel.HEADING_2,
190
+ 3: docx_1.HeadingLevel.HEADING_3,
191
+ 4: docx_1.HeadingLevel.HEADING_4,
192
+ };
193
+ result.push(new docx_1.Paragraph({
194
+ heading: levelMap[block.level || 1] || docx_1.HeadingLevel.HEADING_1,
195
+ children: [new docx_1.TextRun({ text: block.text || '' })],
196
+ }));
197
+ break;
198
+ }
199
+ case 'paragraph': {
200
+ if (block.runs?.length) {
201
+ result.push(new docx_1.Paragraph({
202
+ spacing: { after: sp.paragraphAfter || 120, line: sp.lineSpacing || 276 },
203
+ children: block.runs.map(run => new docx_1.TextRun({
204
+ text: run.text,
205
+ bold: run.bold,
206
+ italics: run.italic,
207
+ underline: run.underline ? {} : undefined,
208
+ color: run.color ? hex(run.color) : undefined,
209
+ size: run.fontSize ? run.fontSize * 2 : undefined,
210
+ font: f.body,
211
+ })),
212
+ }));
213
+ }
214
+ else {
215
+ result.push(new docx_1.Paragraph({
216
+ spacing: { after: sp.paragraphAfter || 120, line: sp.lineSpacing || 276 },
217
+ children: [new docx_1.TextRun({ text: block.text || '', font: f.body, size: (s.body || 12) * 2, color: hex(c.body || c.textPrimary) })],
218
+ }));
219
+ }
220
+ break;
221
+ }
222
+ case 'bullets': {
223
+ if (block.items?.length) {
224
+ for (const item of block.items) {
225
+ result.push(new docx_1.Paragraph({
226
+ numbering: { reference: 'bullets', level: 0 },
227
+ spacing: { after: 60 },
228
+ children: [new docx_1.TextRun({ text: item, font: f.body, size: (s.body || 12) * 2, color: hex(c.body || c.textPrimary) })],
229
+ }));
230
+ }
231
+ }
232
+ break;
233
+ }
234
+ case 'numbers': {
235
+ if (block.items?.length) {
236
+ for (const item of block.items) {
237
+ result.push(new docx_1.Paragraph({
238
+ numbering: { reference: 'numbers', level: 0 },
239
+ spacing: { after: 60 },
240
+ children: [new docx_1.TextRun({ text: item, font: f.body, size: (s.body || 12) * 2, color: hex(c.body || c.textPrimary) })],
241
+ }));
242
+ }
243
+ }
244
+ break;
245
+ }
246
+ case 'table': {
247
+ if (block.table) {
248
+ result.push(renderDocxTable(block.table, theme, contentWidth));
249
+ }
250
+ break;
251
+ }
252
+ case 'image': {
253
+ if (block.image_url) {
254
+ try {
255
+ const imgData = fs.existsSync(block.image_url)
256
+ ? fs.readFileSync(block.image_url)
257
+ : Buffer.alloc(0);
258
+ if (imgData.length > 0) {
259
+ const ext = block.image_url.split('.').pop()?.toLowerCase() || 'png';
260
+ result.push(new docx_1.Paragraph({
261
+ children: [new docx_1.ImageRun({
262
+ type: ext,
263
+ data: imgData,
264
+ transformation: {
265
+ width: block.image_width || 400,
266
+ height: block.image_height || 300,
267
+ },
268
+ altText: {
269
+ title: block.image_alt || 'Image',
270
+ description: block.image_alt || 'Image',
271
+ name: block.image_alt || 'image',
272
+ },
273
+ })],
274
+ }));
275
+ }
276
+ }
277
+ catch {
278
+ result.push(new docx_1.Paragraph({
279
+ children: [new docx_1.TextRun({ text: `[Image: ${block.image_url}]`, italics: true, color: hex(c.caption) })],
280
+ }));
281
+ }
282
+ }
283
+ break;
284
+ }
285
+ case 'page_break': {
286
+ result.push(new docx_1.Paragraph({ children: [new docx_1.PageBreak()] }));
287
+ break;
288
+ }
289
+ case 'toc': {
290
+ result.push(new docx_1.TableOfContents('Table of Contents', {
291
+ hyperlink: true,
292
+ headingStyleRange: '1-3',
293
+ }));
294
+ break;
295
+ }
296
+ case 'spacer': {
297
+ result.push(new docx_1.Paragraph({ spacing: { after: block.height || 200 }, children: [] }));
298
+ break;
299
+ }
300
+ }
301
+ return result;
302
+ }
303
+ function renderDocxTable(table, theme, contentWidth) {
304
+ const c = theme.colors;
305
+ const f = theme.fonts;
306
+ const s = theme.sizes;
307
+ const border = { style: docx_1.BorderStyle.SINGLE, size: 1, color: hex(c.tableBorder || 'CCCCCC') };
308
+ const borders = { top: border, bottom: border, left: border, right: border };
309
+ const colCount = table.headers.length;
310
+ const colWidth = Math.floor(contentWidth / colCount);
311
+ const headerRow = new docx_1.TableRow({
312
+ children: table.headers.map(h => new docx_1.TableCell({
313
+ borders,
314
+ width: { size: colWidth, type: docx_1.WidthType.DXA },
315
+ shading: { fill: hex(c.tableHeader || 'D5E8F0'), type: docx_1.ShadingType.CLEAR },
316
+ margins: { top: 80, bottom: 80, left: 120, right: 120 },
317
+ children: [new docx_1.Paragraph({
318
+ alignment: docx_1.AlignmentType.CENTER,
319
+ children: [new docx_1.TextRun({
320
+ text: h,
321
+ bold: true,
322
+ font: f.body,
323
+ size: (s.body || 12) * 2,
324
+ color: hex(c.tableHeaderText || c.textPrimary),
325
+ })],
326
+ })],
327
+ })),
328
+ });
329
+ const dataRows = table.rows.map((row, rowIdx) => new docx_1.TableRow({
330
+ children: row.map(cell => new docx_1.TableCell({
331
+ borders,
332
+ width: { size: colWidth, type: docx_1.WidthType.DXA },
333
+ shading: rowIdx % 2 === 1 ? { fill: hex(c.tableAltRow || 'F5F9FC'), type: docx_1.ShadingType.CLEAR } : undefined,
334
+ margins: { top: 80, bottom: 80, left: 120, right: 120 },
335
+ children: [new docx_1.Paragraph({
336
+ children: [new docx_1.TextRun({
337
+ text: String(cell),
338
+ font: f.body,
339
+ size: (s.body || 12) * 2,
340
+ color: hex(c.body || c.textPrimary),
341
+ })],
342
+ })],
343
+ })),
344
+ }));
345
+ return new docx_1.Table({
346
+ width: { size: contentWidth, type: docx_1.WidthType.DXA },
347
+ columnWidths: Array(colCount).fill(colWidth),
348
+ rows: [headerRow, ...dataRows],
349
+ });
350
+ }
351
+ function sanitizeFilename(name) {
352
+ return name.replace(/[^a-zA-Z0-9\u4e00-\u9fff_-]/g, '_').slice(0, 50);
353
+ }
354
+ //# sourceMappingURL=docx-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docx-renderer.js","sourceRoot":"","sources":["../../../src/doc-generator/docx-renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @file 文档生成模块 - 统一入口
3
+ * @description 为 Agent 工具提供结构化文档生成能力(PPTX / DOCX / PDF / HTML Report)
4
+ */
5
+ import type { ToolContext } from '@cicctencent/agent-core';
6
+ import { renderReport } from './report-renderer.js';
7
+ import { listThemes } from './config-loader.js';
8
+ import type { PresentationData, DocumentData, RenderResult } from './types.js';
9
+ import type { ReportData } from './report-renderer.js';
10
+ export type { PresentationData, DocumentData, RenderResult, ReportData };
11
+ export { listThemes, renderReport };
12
+ /**
13
+ * 生成文档并保存为 Artifact
14
+ * @param jsonFilePath 可选:沙箱内的 JSON 数据文件路径(用于大型文档,LLM 先 write_file 再调用)
15
+ * @returns Artifact 保存结果描述字符串
16
+ */
17
+ export declare function generateAndSave(type: 'pptx' | 'docx' | 'pdf', data: PresentationData | DocumentData, ctx: ToolContext, jsonFilePath?: string, templatesDir?: string): Promise<string>;
18
+ /**
19
+ * 生成 HTML Report 并保存为 Artifact + 推送 Widget 事件
20
+ * 专为 create_report 工具设计:一步完成渲染、保存、内联展示
21
+ */
22
+ export declare function generateReportAndDisplay(data: ReportData, ctx: ToolContext, jsonFilePath?: string): Promise<string>;
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/doc-generator/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAW,WAAW,EAAgB,MAAM,yBAAyB,CAAC;AAKlF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGvD,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;AAiBpC;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,EAC7B,IAAI,EAAE,gBAAgB,GAAG,YAAY,EACrC,GAAG,EAAE,WAAW,EAChB,YAAY,CAAC,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CAgHjB;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,WAAW,EAChB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CAgEjB"}
@@ -0,0 +1,251 @@
1
+ "use strict";
2
+ /**
3
+ * @file 文档生成模块 - 统一入口
4
+ * @description 为 Agent 工具提供结构化文档生成能力(PPTX / DOCX / PDF / HTML Report)
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.renderReport = exports.listThemes = void 0;
41
+ exports.generateAndSave = generateAndSave;
42
+ exports.generateReportAndDisplay = generateReportAndDisplay;
43
+ const path = __importStar(require("path"));
44
+ const fs = __importStar(require("fs"));
45
+ const artifact_service_ts_1 = require("../service/artifact.service.js");
46
+ const pptx_renderer_ts_1 = require("./pptx-renderer.js");
47
+ const docx_renderer_ts_1 = require("./docx-renderer.js");
48
+ const pdf_renderer_ts_1 = require("./pdf-renderer.js");
49
+ const report_renderer_ts_1 = require("./report-renderer.js");
50
+ Object.defineProperty(exports, "renderReport", { enumerable: true, get: function () { return report_renderer_ts_1.renderReport; } });
51
+ const config_loader_ts_1 = require("./config-loader.js");
52
+ Object.defineProperty(exports, "listThemes", { enumerable: true, get: function () { return config_loader_ts_1.listThemes; } });
53
+ /** 各类型对应的文件扩展名 */
54
+ const EXT_MAP = { pptx: '.pptx', docx: '.docx', pdf: '.pdf', html: '.html' };
55
+ /** 确保文件名带有正确的扩展名 */
56
+ function ensureExtension(filename, type) {
57
+ const ext = EXT_MAP[type];
58
+ if (!ext)
59
+ return filename;
60
+ // 如果没有扩展名,补上
61
+ if (!filename.includes('.'))
62
+ return filename + ext;
63
+ // 如果扩展名不对(比如 LLM 传了 .ppt 而不是 .pptx),替换
64
+ const currentExt = path.extname(filename).toLowerCase();
65
+ if (currentExt !== ext)
66
+ return filename.replace(new RegExp(`\\${currentExt}$`, 'i'), ext);
67
+ return filename;
68
+ }
69
+ /**
70
+ * 生成文档并保存为 Artifact
71
+ * @param jsonFilePath 可选:沙箱内的 JSON 数据文件路径(用于大型文档,LLM 先 write_file 再调用)
72
+ * @returns Artifact 保存结果描述字符串
73
+ */
74
+ async function generateAndSave(type, data, ctx, jsonFilePath, templatesDir) {
75
+ // 如果提供了 json_file,从沙箱读取 JSON 并合并到 data
76
+ if (jsonFilePath) {
77
+ const sandbox = ctx.custom?.sandbox;
78
+ if (!sandbox)
79
+ return 'Error: Sandbox not available. Cannot read json_file.';
80
+ const resolvedPath = path.isAbsolute(jsonFilePath)
81
+ ? jsonFilePath
82
+ : path.join(sandbox.rootDir, jsonFilePath);
83
+ // 安全检查:确保路径在沙箱内
84
+ if (!resolvedPath.startsWith(sandbox.rootDir)) {
85
+ return `Error: json_file path must be within sandbox directory.`;
86
+ }
87
+ try {
88
+ const raw = fs.readFileSync(resolvedPath, 'utf-8');
89
+ const jsonData = JSON.parse(raw);
90
+ // 合并:JSON 文件中的字段优先(slides/blocks 等大字段),内联参数作为 fallback
91
+ if (type === 'pptx') {
92
+ const d = data;
93
+ data = {
94
+ ...jsonData,
95
+ title: d.title || jsonData.title,
96
+ theme: d.theme || jsonData.theme,
97
+ filename: d.filename || jsonData.filename,
98
+ };
99
+ }
100
+ else {
101
+ const d = data;
102
+ data = {
103
+ ...jsonData,
104
+ title: d.title || jsonData.title,
105
+ theme: d.theme || jsonData.theme,
106
+ options: d.options || jsonData.options,
107
+ filename: d.filename || jsonData.filename,
108
+ };
109
+ }
110
+ }
111
+ catch (err) {
112
+ return `Error: Failed to read or parse json_file "${jsonFilePath}": ${err?.message || err}`;
113
+ }
114
+ }
115
+ // 1. 渲染文档
116
+ let result;
117
+ switch (type) {
118
+ case 'pptx':
119
+ result = await (0, pptx_renderer_ts_1.renderPptx)(data, templatesDir);
120
+ break;
121
+ case 'docx':
122
+ result = await (0, docx_renderer_ts_1.renderDocx)(data, templatesDir);
123
+ break;
124
+ case 'pdf':
125
+ result = await (0, pdf_renderer_ts_1.renderPdf)(data, templatesDir);
126
+ break;
127
+ default:
128
+ return `Error: Unsupported document type: ${type}`;
129
+ }
130
+ // 确保文件名带正确扩展名(LLM 可能传入无后缀的文件名)
131
+ result.filename = ensureExtension(result.filename, type);
132
+ // 2. 保存到沙箱
133
+ const sandbox = ctx.custom?.sandbox;
134
+ if (!sandbox) {
135
+ return 'Error: Sandbox not available. Cannot save document artifact.';
136
+ }
137
+ const fsExec = sandbox.getFileSystemExecutor();
138
+ if (!fsExec) {
139
+ return 'Error: FileSystem executor not available in sandbox.';
140
+ }
141
+ // 写入临时文件到 Artifact 临时目录,避免污染沙箱根目录
142
+ const tempDir = '_artifacts/.tmp';
143
+ const tempPath = `${tempDir}/${result.filename}`;
144
+ try {
145
+ if (fsExec.writeFile) {
146
+ // 对于二进制文件,需要通过 shell 写入
147
+ const shell = sandbox.getShellExecutor();
148
+ const base64 = result.buffer.toString('base64');
149
+ // 分段写入 base64 以避免命令过长
150
+ const chunkSize = 50000;
151
+ await shell.exec(`mkdir -p "${tempDir}" && echo -n "" > "${tempPath}.b64"`, 5000);
152
+ for (let i = 0; i < base64.length; i += chunkSize) {
153
+ const chunk = base64.slice(i, i + chunkSize);
154
+ await shell.exec(`echo -n "${chunk}" >> "${tempPath}.b64"`, 5000);
155
+ }
156
+ await shell.exec(`base64 -d "${tempPath}.b64" > "${tempPath}" && rm "${tempPath}.b64"`, 10000);
157
+ }
158
+ }
159
+ catch (err) {
160
+ return `Error: Failed to write document file to sandbox: ${err?.message || err}`;
161
+ }
162
+ // 3. 保存为 Artifact
163
+ try {
164
+ const sessionId = ctx.sessionId || 'default';
165
+ const artifactResult = (0, artifact_service_ts_1.saveArtifact)(sandbox.rootDir, sessionId, result.filename, result.buffer);
166
+ // 通过 SSE 推送到前端(去重命中时跳过)
167
+ const emitArtifact = ctx.emitArtifact;
168
+ if (emitArtifact && !artifactResult.dedup) {
169
+ emitArtifact({
170
+ artifactId: artifactResult.artifactId,
171
+ filename: artifactResult.filename,
172
+ mimeType: artifactResult.mimeType,
173
+ size: artifactResult.size,
174
+ url: artifactResult.url,
175
+ description: `${type.toUpperCase()} document: ${data.title}`,
176
+ });
177
+ }
178
+ return `Document created: ${artifactResult.filename} (${artifactResult.size} bytes). It has been added to the artifact panel for preview and download.`;
179
+ }
180
+ catch (err) {
181
+ return `Error: Failed to save artifact: ${err?.message || err}`;
182
+ }
183
+ }
184
+ /**
185
+ * 生成 HTML Report 并保存为 Artifact + 推送 Widget 事件
186
+ * 专为 create_report 工具设计:一步完成渲染、保存、内联展示
187
+ */
188
+ async function generateReportAndDisplay(data, ctx, jsonFilePath) {
189
+ // 如果提供了 json_file,从沙箱读取 JSON 并合并
190
+ if (jsonFilePath) {
191
+ const sandbox = ctx.custom?.sandbox;
192
+ if (!sandbox)
193
+ return 'Error: Sandbox not available. Cannot read json_file.';
194
+ const resolvedPath = path.isAbsolute(jsonFilePath)
195
+ ? jsonFilePath
196
+ : path.join(sandbox.rootDir, jsonFilePath);
197
+ if (!resolvedPath.startsWith(sandbox.rootDir)) {
198
+ return `Error: json_file path must be within sandbox directory.`;
199
+ }
200
+ try {
201
+ const raw = fs.readFileSync(resolvedPath, 'utf-8');
202
+ const jsonData = JSON.parse(raw);
203
+ data = {
204
+ ...jsonData,
205
+ title: data.title || jsonData.title,
206
+ theme: data.theme || jsonData.theme,
207
+ subtitle: data.subtitle || jsonData.subtitle,
208
+ date: data.date || jsonData.date,
209
+ };
210
+ }
211
+ catch (err) {
212
+ return `Error: Failed to read or parse json_file "${jsonFilePath}": ${err?.message || err}`;
213
+ }
214
+ }
215
+ if (!data.title)
216
+ return 'Error: title is required for report generation.';
217
+ // 1. 渲染 HTML
218
+ const html = (0, report_renderer_ts_1.renderReport)(data);
219
+ const buffer = Buffer.from(html, 'utf-8');
220
+ const filename = data.filename
221
+ ? ensureExtension(data.filename, 'html')
222
+ : `${data.title.replace(/[^\w\u4e00-\u9fff]+/g, '_').slice(0, 50)}.html`;
223
+ // 2. 保存到沙箱 + Artifact
224
+ const sandbox = ctx.custom?.sandbox;
225
+ if (!sandbox)
226
+ return 'Error: Sandbox not available.';
227
+ let artifactSize = buffer.length;
228
+ try {
229
+ const sessionId = ctx.sessionId || 'default';
230
+ const artifactResult = (0, artifact_service_ts_1.saveArtifact)(sandbox.rootDir, sessionId, filename, buffer);
231
+ artifactSize = artifactResult.size;
232
+ // 推送 artifact 事件
233
+ const emitArtifact = ctx.emitArtifact;
234
+ if (emitArtifact && !artifactResult.dedup) {
235
+ emitArtifact({
236
+ artifactId: artifactResult.artifactId,
237
+ filename: artifactResult.filename,
238
+ mimeType: 'text/html',
239
+ size: artifactResult.size,
240
+ url: artifactResult.url,
241
+ description: `HTML Report: ${data.title}`,
242
+ });
243
+ }
244
+ }
245
+ catch (err) {
246
+ return `Error: Failed to save report artifact: ${err?.message || err}`;
247
+ }
248
+ // 3. 不再推送 Widget 事件 — artifact 卡片自带预览入口,避免与 ArtifactCard 重复展示相同内容
249
+ return `Report created: ${filename} (${artifactSize} bytes). It has been added to the artifact panel for preview and download.`;
250
+ }
251
+ //# sourceMappingURL=index.js.map