teamshare-bridge 0.14.49 → 0.14.50
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/lib/api.d.ts +47 -0
- package/dist/lib/api.js +37 -0
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/chat-reply.js +9 -0
- package/dist/lib/chat-reply.js.map +1 -1
- package/dist/lib/doc-reply.js +7 -0
- package/dist/lib/doc-reply.js.map +1 -1
- package/dist/lib/orchestrator/client.d.ts +5 -0
- package/dist/lib/orchestrator/client.js +42 -0
- package/dist/lib/orchestrator/client.js.map +1 -1
- package/dist/lib/tools/chart-builder.d.ts +5 -0
- package/dist/lib/tools/chart-builder.js +182 -0
- package/dist/lib/tools/chart-builder.js.map +1 -0
- package/dist/lib/tools/csv-cruncher.d.ts +11 -0
- package/dist/lib/tools/csv-cruncher.js +189 -0
- package/dist/lib/tools/csv-cruncher.js.map +1 -0
- package/dist/lib/tools/docx-report.d.ts +5 -0
- package/dist/lib/tools/docx-report.js +391 -0
- package/dist/lib/tools/docx-report.js.map +1 -0
- package/dist/lib/tools/pdf-exporter.d.ts +5 -0
- package/dist/lib/tools/pdf-exporter.js +254 -0
- package/dist/lib/tools/pdf-exporter.js.map +1 -0
- package/dist/lib/tools/pptx-deck.d.ts +5 -0
- package/dist/lib/tools/pptx-deck.js +187 -0
- package/dist/lib/tools/pptx-deck.js.map +1 -0
- package/dist/lib/tools/process-image.d.ts +5 -0
- package/dist/lib/tools/process-image.js +99 -0
- package/dist/lib/tools/process-image.js.map +1 -0
- package/dist/lib/tools/runner.d.ts +16 -0
- package/dist/lib/tools/runner.js +61 -0
- package/dist/lib/tools/runner.js.map +1 -0
- package/dist/lib/tools/xlsx-workbook.d.ts +5 -0
- package/dist/lib/tools/xlsx-workbook.js +118 -0
- package/dist/lib/tools/xlsx-workbook.js.map +1 -0
- package/package.json +10 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf-exporter.js","sourceRoot":"","sources":["../../../src/lib/tools/pdf-exporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.PptxDeckTool = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Slide Deck Generator tool.
|
|
9
|
+
* Creates PowerPoint presentations from markdown outlines using pptxgenjs.
|
|
10
|
+
* H1 = document title, H2 = slide title, H3 = bullet points.
|
|
11
|
+
*/
|
|
12
|
+
const pptxgenjs_1 = __importDefault(require("pptxgenjs"));
|
|
13
|
+
function parseOutline(markdown) {
|
|
14
|
+
const lines = markdown.split(/\r?\n/);
|
|
15
|
+
let docTitle = 'Presentation';
|
|
16
|
+
const slides = [];
|
|
17
|
+
let current = null;
|
|
18
|
+
for (const line of lines) {
|
|
19
|
+
const trimmed = line.trim();
|
|
20
|
+
if (!trimmed)
|
|
21
|
+
continue;
|
|
22
|
+
const h1 = trimmed.match(/^#\s+(.*)$/);
|
|
23
|
+
const h2 = trimmed.match(/^##\s+(.*)$/);
|
|
24
|
+
const h3 = trimmed.match(/^###\s+(.*)$/);
|
|
25
|
+
const bullet = trimmed.match(/^[-*+]\s+(.*)$/);
|
|
26
|
+
const numbered = trimmed.match(/^\d+[.)]\s+(.*)$/);
|
|
27
|
+
if (h1) {
|
|
28
|
+
docTitle = h1[1].replace(/\*\*/g, '');
|
|
29
|
+
}
|
|
30
|
+
else if (h2) {
|
|
31
|
+
if (current)
|
|
32
|
+
slides.push(current);
|
|
33
|
+
current = {
|
|
34
|
+
title: h2[1].replace(/\*\*/g, ''),
|
|
35
|
+
bullets: [],
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
else if (h3) {
|
|
39
|
+
if (!current) {
|
|
40
|
+
current = { title: '', bullets: [] };
|
|
41
|
+
}
|
|
42
|
+
current.notes = h3[1];
|
|
43
|
+
}
|
|
44
|
+
else if ((bullet || numbered) && current) {
|
|
45
|
+
const text = (bullet ? bullet[1] : numbered[1])
|
|
46
|
+
.replace(/\*\*([^*]+)\*\*/g, '$1')
|
|
47
|
+
.replace(/\*([^*]+)\*/g, '$1');
|
|
48
|
+
current.bullets.push(text);
|
|
49
|
+
}
|
|
50
|
+
else if (current && !current.title) {
|
|
51
|
+
current.title = trimmed.replace(/\*\*/g, '');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (current)
|
|
55
|
+
slides.push(current);
|
|
56
|
+
return { docTitle, slides };
|
|
57
|
+
}
|
|
58
|
+
const THEMES = {
|
|
59
|
+
default: { bg: 'FFFFFF', color: '374151', accent: '1a56db', titleColor: '111827' },
|
|
60
|
+
dark: { bg: '1f2937', color: 'e5e7eb', accent: '3b82f6', titleColor: 'f9fafb' },
|
|
61
|
+
ocean: { bg: 'F0F9FF', color: '1e3a5f', accent: '0284c7', titleColor: '0c4a6e' },
|
|
62
|
+
forest: { bg: 'F0FDF4', color: '14532d', accent: '16a34a', titleColor: '166534' },
|
|
63
|
+
sunset: { bg: 'FFF7ED', color: '7c2d12', accent: 'ea580c', titleColor: '9a3412' },
|
|
64
|
+
};
|
|
65
|
+
class PptxDeckTool {
|
|
66
|
+
key = 'pptx-deck';
|
|
67
|
+
async run(params) {
|
|
68
|
+
const outlineMd = String(params.outlineMd ?? '');
|
|
69
|
+
const themeName = String(params.theme ?? 'default');
|
|
70
|
+
const aspect = String(params.aspect ?? '16:9');
|
|
71
|
+
if (!outlineMd.trim()) {
|
|
72
|
+
return { outputs: [], error: 'No outline provided' };
|
|
73
|
+
}
|
|
74
|
+
const theme = THEMES[themeName] ?? THEMES.default;
|
|
75
|
+
const { docTitle, slides: slideData } = parseOutline(outlineMd);
|
|
76
|
+
if (slideData.length === 0) {
|
|
77
|
+
return { outputs: [], error: 'No slides found in outline (use ## for slide titles)' };
|
|
78
|
+
}
|
|
79
|
+
const pptx = new pptxgenjs_1.default();
|
|
80
|
+
pptx.layout = aspect === '4:3' ? 'LAYOUT_4x3' : 'LAYOUT_16x9';
|
|
81
|
+
pptx.author = 'TeamShare';
|
|
82
|
+
pptx.title = docTitle;
|
|
83
|
+
// Title slide
|
|
84
|
+
const titleSlide = pptx.addSlide();
|
|
85
|
+
titleSlide.background = { color: theme.accent };
|
|
86
|
+
titleSlide.addText(docTitle, {
|
|
87
|
+
x: '10%',
|
|
88
|
+
y: '30%',
|
|
89
|
+
w: '80%',
|
|
90
|
+
h: '30%',
|
|
91
|
+
fontSize: 36,
|
|
92
|
+
fontFace: 'Arial',
|
|
93
|
+
color: 'FFFFFF',
|
|
94
|
+
bold: true,
|
|
95
|
+
align: 'center',
|
|
96
|
+
valign: 'middle',
|
|
97
|
+
});
|
|
98
|
+
titleSlide.addText(`Generated by TeamShare`, {
|
|
99
|
+
x: '10%',
|
|
100
|
+
y: '65%',
|
|
101
|
+
w: '80%',
|
|
102
|
+
h: '10%',
|
|
103
|
+
fontSize: 14,
|
|
104
|
+
fontFace: 'Arial',
|
|
105
|
+
color: 'FFFFFFCC',
|
|
106
|
+
align: 'center',
|
|
107
|
+
});
|
|
108
|
+
// Content slides
|
|
109
|
+
for (const slide of slideData) {
|
|
110
|
+
const s = pptx.addSlide();
|
|
111
|
+
s.background = { color: theme.bg };
|
|
112
|
+
// Slide number
|
|
113
|
+
s.addText(`${slideData.indexOf(slide) + 1}`, {
|
|
114
|
+
x: '92%',
|
|
115
|
+
y: '92%',
|
|
116
|
+
w: '6%',
|
|
117
|
+
h: '5%',
|
|
118
|
+
fontSize: 10,
|
|
119
|
+
color: theme.color + '80',
|
|
120
|
+
align: 'center',
|
|
121
|
+
});
|
|
122
|
+
// Title
|
|
123
|
+
s.addText(slide.title, {
|
|
124
|
+
x: '8%',
|
|
125
|
+
y: '8%',
|
|
126
|
+
w: '84%',
|
|
127
|
+
h: '15%',
|
|
128
|
+
fontSize: 28,
|
|
129
|
+
fontFace: 'Arial',
|
|
130
|
+
color: theme.titleColor,
|
|
131
|
+
bold: true,
|
|
132
|
+
});
|
|
133
|
+
// Accent bar under title
|
|
134
|
+
s.addShape(pptx.ShapeType.rect, {
|
|
135
|
+
x: '8%',
|
|
136
|
+
y: '23%',
|
|
137
|
+
w: '15%',
|
|
138
|
+
h: '0.5%',
|
|
139
|
+
fill: { color: theme.accent },
|
|
140
|
+
});
|
|
141
|
+
// Bullets
|
|
142
|
+
if (slide.bullets.length > 0) {
|
|
143
|
+
const bulletText = slide.bullets.map((b) => ({
|
|
144
|
+
text: b,
|
|
145
|
+
options: {
|
|
146
|
+
fontSize: 16,
|
|
147
|
+
fontFace: 'Arial',
|
|
148
|
+
color: theme.color,
|
|
149
|
+
bullet: { code: '2022' },
|
|
150
|
+
paraSpaceAfter: 8,
|
|
151
|
+
},
|
|
152
|
+
}));
|
|
153
|
+
s.addText(bulletText, {
|
|
154
|
+
x: '8%',
|
|
155
|
+
y: '28%',
|
|
156
|
+
w: '84%',
|
|
157
|
+
h: '60%',
|
|
158
|
+
valign: 'top',
|
|
159
|
+
lineSpacingMultiple: 1.2,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
// Speaker notes
|
|
163
|
+
if (slide.notes) {
|
|
164
|
+
s.addNotes(slide.notes);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
const buffer = await pptx.write({ outputType: 'nodebuffer' });
|
|
168
|
+
const safeName = docTitle.replace(/[^a-zA-Z0-9_-]/g, '_').slice(0, 64);
|
|
169
|
+
return {
|
|
170
|
+
outputs: [
|
|
171
|
+
{
|
|
172
|
+
buffer: buffer,
|
|
173
|
+
fileName: `${safeName}.pptx`,
|
|
174
|
+
mime: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
|
|
175
|
+
},
|
|
176
|
+
],
|
|
177
|
+
log: [
|
|
178
|
+
`Generated PPTX: ${safeName}.pptx`,
|
|
179
|
+
`Title: ${docTitle}`,
|
|
180
|
+
`Slides: ${slideData.length + 1} (1 title + ${slideData.length} content)`,
|
|
181
|
+
`Theme: ${themeName}, Aspect: ${aspect}`,
|
|
182
|
+
],
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
exports.PptxDeckTool = PptxDeckTool;
|
|
187
|
+
//# sourceMappingURL=pptx-deck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pptx-deck.js","sourceRoot":"","sources":["../../../src/lib/tools/pptx-deck.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ProcessImageTool = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Image Processing tool.
|
|
9
|
+
* Uses sharp for resize, crop, thumbnail, and format conversion.
|
|
10
|
+
*/
|
|
11
|
+
const sharp_1 = __importDefault(require("sharp"));
|
|
12
|
+
class ProcessImageTool {
|
|
13
|
+
key = 'process-image';
|
|
14
|
+
async run(params) {
|
|
15
|
+
const operation = String(params.operation ?? 'resize');
|
|
16
|
+
const inputBuffer = params.inputBuffer;
|
|
17
|
+
const width = params.width ? Number(params.width) : undefined;
|
|
18
|
+
const height = params.height ? Number(params.height) : undefined;
|
|
19
|
+
const format = params.format ? String(params.format) : undefined;
|
|
20
|
+
const quality = params.quality ? Number(params.quality) : 80;
|
|
21
|
+
if (!inputBuffer || !Buffer.isBuffer(inputBuffer)) {
|
|
22
|
+
return { outputs: [], error: 'No image buffer provided (send as inputBuffer)' };
|
|
23
|
+
}
|
|
24
|
+
let pipeline;
|
|
25
|
+
switch (operation) {
|
|
26
|
+
case 'resize':
|
|
27
|
+
if (!width && !height) {
|
|
28
|
+
return { outputs: [], error: 'resize requires width and/or height' };
|
|
29
|
+
}
|
|
30
|
+
pipeline = (0, sharp_1.default)(inputBuffer).resize(width, height, { fit: 'inside' });
|
|
31
|
+
break;
|
|
32
|
+
case 'crop':
|
|
33
|
+
if (!width || !height) {
|
|
34
|
+
return { outputs: [], error: 'crop requires both width and height' };
|
|
35
|
+
}
|
|
36
|
+
pipeline = (0, sharp_1.default)(inputBuffer).extract({
|
|
37
|
+
left: 0,
|
|
38
|
+
top: 0,
|
|
39
|
+
width: Math.min(width, (await (0, sharp_1.default)(inputBuffer).metadata()).width ?? width),
|
|
40
|
+
height: Math.min(height, (await (0, sharp_1.default)(inputBuffer).metadata()).height ?? height),
|
|
41
|
+
});
|
|
42
|
+
break;
|
|
43
|
+
case 'thumbnail':
|
|
44
|
+
if (!width && !height) {
|
|
45
|
+
return { outputs: [], error: 'thumbnail requires width and/or height' };
|
|
46
|
+
}
|
|
47
|
+
pipeline = (0, sharp_1.default)(inputBuffer).resize(width, height, { fit: 'inside', withoutEnlargement: true });
|
|
48
|
+
break;
|
|
49
|
+
case 'convert':
|
|
50
|
+
pipeline = (0, sharp_1.default)(inputBuffer);
|
|
51
|
+
break;
|
|
52
|
+
default:
|
|
53
|
+
return { outputs: [], error: `Unknown operation: ${operation}. Use resize, crop, thumbnail, or convert` };
|
|
54
|
+
}
|
|
55
|
+
// Apply output format
|
|
56
|
+
const metadata = await (0, sharp_1.default)(inputBuffer).metadata();
|
|
57
|
+
const outputFormat = format ?? metadata.format ?? 'png';
|
|
58
|
+
const outputFormatStr = String(outputFormat);
|
|
59
|
+
switch (outputFormatStr) {
|
|
60
|
+
case 'jpeg':
|
|
61
|
+
case 'jpg':
|
|
62
|
+
pipeline = pipeline.jpeg({ quality, mozjpeg: true });
|
|
63
|
+
break;
|
|
64
|
+
case 'png':
|
|
65
|
+
pipeline = pipeline.png({ compressionLevel: 6 });
|
|
66
|
+
break;
|
|
67
|
+
case 'webp':
|
|
68
|
+
pipeline = pipeline.webp({ quality });
|
|
69
|
+
break;
|
|
70
|
+
case 'avif':
|
|
71
|
+
pipeline = pipeline.avif({ quality });
|
|
72
|
+
break;
|
|
73
|
+
case 'tiff':
|
|
74
|
+
case 'tif':
|
|
75
|
+
pipeline = pipeline.tiff({ quality });
|
|
76
|
+
break;
|
|
77
|
+
default:
|
|
78
|
+
pipeline = pipeline.png();
|
|
79
|
+
}
|
|
80
|
+
const outputBuffer = await pipeline.toBuffer();
|
|
81
|
+
const ext = outputFormatStr === 'jpg' ? 'jpeg' : outputFormatStr;
|
|
82
|
+
return {
|
|
83
|
+
outputs: [
|
|
84
|
+
{
|
|
85
|
+
buffer: outputBuffer,
|
|
86
|
+
fileName: `image.${ext}`,
|
|
87
|
+
mime: `image/${ext}`,
|
|
88
|
+
},
|
|
89
|
+
],
|
|
90
|
+
log: [
|
|
91
|
+
`Processed image: ${operation}`,
|
|
92
|
+
`Input: ${metadata.width}x${metadata.height} ${metadata.format}`,
|
|
93
|
+
`Output: ${outputBuffer.length} bytes ${outputFormat}`,
|
|
94
|
+
],
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
exports.ProcessImageTool = ProcessImageTool;
|
|
99
|
+
//# sourceMappingURL=process-image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-image.js","sourceRoot":"","sources":["../../../src/lib/tools/process-image.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface ToolOutput {
|
|
2
|
+
buffer: Buffer;
|
|
3
|
+
fileName: string;
|
|
4
|
+
mime: string;
|
|
5
|
+
}
|
|
6
|
+
export interface ToolResult {
|
|
7
|
+
outputs: ToolOutput[];
|
|
8
|
+
log?: string[];
|
|
9
|
+
error?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface ToolModule {
|
|
12
|
+
key: string;
|
|
13
|
+
run(params: Record<string, unknown>): Promise<ToolResult>;
|
|
14
|
+
}
|
|
15
|
+
export declare function listToolKeys(): string[];
|
|
16
|
+
export declare function runTool(toolKey: string, params: Record<string, unknown>): Promise<ToolResult>;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.listToolKeys = listToolKeys;
|
|
4
|
+
exports.runTool = runTool;
|
|
5
|
+
/**
|
|
6
|
+
* Node.js in-process tool runner for TeamShare document/data tools.
|
|
7
|
+
* Replaces the Python-on-PC Path A from tools-tab-plan.md.
|
|
8
|
+
*
|
|
9
|
+
* Each tool is a TypeScript module that returns Buffer[] outputs.
|
|
10
|
+
* No subprocess, no venv, no Python — everything runs in the bridge process.
|
|
11
|
+
*/
|
|
12
|
+
const docx_report_1 = require("./docx-report");
|
|
13
|
+
const chart_builder_1 = require("./chart-builder");
|
|
14
|
+
const xlsx_workbook_1 = require("./xlsx-workbook");
|
|
15
|
+
const pdf_exporter_1 = require("./pdf-exporter");
|
|
16
|
+
const csv_cruncher_1 = require("./csv-cruncher");
|
|
17
|
+
const pptx_deck_1 = require("./pptx-deck");
|
|
18
|
+
const process_image_1 = require("./process-image");
|
|
19
|
+
const TOOL_TIMEOUT_MS = 60_000;
|
|
20
|
+
const TOOLS = [
|
|
21
|
+
new docx_report_1.DocxReportTool(),
|
|
22
|
+
new chart_builder_1.ChartBuilderTool(),
|
|
23
|
+
new xlsx_workbook_1.XlsxWorkbookTool(),
|
|
24
|
+
new pdf_exporter_1.PdfExporterTool(),
|
|
25
|
+
new csv_cruncher_1.CsvCruncherTool(),
|
|
26
|
+
new pptx_deck_1.PptxDeckTool(),
|
|
27
|
+
new process_image_1.ProcessImageTool(),
|
|
28
|
+
];
|
|
29
|
+
const TOOL_MAP = new Map(TOOLS.map((t) => [t.key, t]));
|
|
30
|
+
function listToolKeys() {
|
|
31
|
+
return TOOLS.map((t) => t.key);
|
|
32
|
+
}
|
|
33
|
+
async function runTool(toolKey, params) {
|
|
34
|
+
const tool = TOOL_MAP.get(toolKey);
|
|
35
|
+
if (!tool) {
|
|
36
|
+
return {
|
|
37
|
+
outputs: [],
|
|
38
|
+
error: `Unknown tool: ${toolKey}. Valid keys: ${listToolKeys().join(', ')}`,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
const result = await Promise.race([
|
|
43
|
+
tool.run(params),
|
|
44
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error(`Tool "${toolKey}" timed out after ${TOOL_TIMEOUT_MS / 1000}s`)), TOOL_TIMEOUT_MS)),
|
|
45
|
+
]);
|
|
46
|
+
const oversized = result.outputs.filter((o) => o.buffer.length > 25 * 1024 * 1024);
|
|
47
|
+
if (oversized.length > 0) {
|
|
48
|
+
return {
|
|
49
|
+
outputs: [],
|
|
50
|
+
log: result.log,
|
|
51
|
+
error: `Output too large: ${oversized.map((o) => o.fileName).join(', ')} exceeds 25MB limit`,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
58
|
+
return { outputs: [], error: `Tool "${toolKey}" failed: ${message}` };
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/lib/tools/runner.ts"],"names":[],"mappings":";;AAgDA,oCAEC;AAED,0BAqCC;AAzFD;;;;;;GAMG;AACH,+CAA+C;AAC/C,mDAAmD;AACnD,mDAAmD;AACnD,iDAAiD;AACjD,iDAAiD;AACjD,2CAA2C;AAC3C,mDAAmD;AAmBnD,MAAM,eAAe,GAAG,MAAM,CAAC;AAE/B,MAAM,KAAK,GAAiB;IAC1B,IAAI,4BAAc,EAAE;IACpB,IAAI,gCAAgB,EAAE;IACtB,IAAI,gCAAgB,EAAE;IACtB,IAAI,8BAAe,EAAE;IACrB,IAAI,8BAAe,EAAE;IACrB,IAAI,wBAAY,EAAE;IAClB,IAAI,gCAAgB,EAAE;CACvB,CAAC;AAEF,MAAM,QAAQ,GAAG,IAAI,GAAG,CACtB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAC7B,CAAC;AAEF,SAAgB,YAAY;IAC1B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC;AAEM,KAAK,UAAU,OAAO,CAC3B,OAAe,EACf,MAA+B;IAE/B,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;YACL,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,iBAAiB,OAAO,iBAAiB,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SAC5E,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;YAChB,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAC/B,UAAU,CACR,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,OAAO,qBAAqB,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,EACvF,eAAe,CAChB,CACF;SACF,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;QACnF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,OAAO,EAAE,EAAE;gBACX,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,KAAK,EAAE,qBAAqB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB;aAC7F,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,OAAO,aAAa,OAAO,EAAE,EAAE,CAAC;IACxE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.XlsxWorkbookTool = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Excel Workbook Builder tool.
|
|
9
|
+
* Creates .xlsx files with styled headers, freeze panes, auto-fit columns,
|
|
10
|
+
* conditional formatting, and formula support using exceljs.
|
|
11
|
+
*/
|
|
12
|
+
const exceljs_1 = __importDefault(require("exceljs"));
|
|
13
|
+
class XlsxWorkbookTool {
|
|
14
|
+
key = 'xlsx-workbook';
|
|
15
|
+
async run(params) {
|
|
16
|
+
const sheets = Array.isArray(params.sheets)
|
|
17
|
+
? params.sheets
|
|
18
|
+
: [];
|
|
19
|
+
if (sheets.length === 0) {
|
|
20
|
+
return { outputs: [], error: 'No sheets provided' };
|
|
21
|
+
}
|
|
22
|
+
const workbook = new exceljs_1.default.Workbook();
|
|
23
|
+
workbook.creator = 'TeamShare';
|
|
24
|
+
workbook.created = new Date();
|
|
25
|
+
for (const sheetDef of sheets) {
|
|
26
|
+
const ws = workbook.addWorksheet(sheetDef.name || 'Sheet1');
|
|
27
|
+
const headers = sheetDef.headers ?? [];
|
|
28
|
+
const rows = sheetDef.rows ?? [];
|
|
29
|
+
// Add headers
|
|
30
|
+
if (headers.length > 0) {
|
|
31
|
+
const headerRow = ws.addRow(headers);
|
|
32
|
+
headerRow.eachCell((cell) => {
|
|
33
|
+
cell.font = { bold: true, color: { argb: 'FFFFFFFF' }, size: 11 };
|
|
34
|
+
cell.fill = {
|
|
35
|
+
type: 'pattern',
|
|
36
|
+
pattern: 'solid',
|
|
37
|
+
fgColor: { argb: 'FF1a56db' },
|
|
38
|
+
};
|
|
39
|
+
cell.border = {
|
|
40
|
+
top: { style: 'thin' },
|
|
41
|
+
bottom: { style: 'thin' },
|
|
42
|
+
left: { style: 'thin' },
|
|
43
|
+
right: { style: 'thin' },
|
|
44
|
+
};
|
|
45
|
+
cell.alignment = { vertical: 'middle', horizontal: 'center' };
|
|
46
|
+
});
|
|
47
|
+
headerRow.height = 22;
|
|
48
|
+
}
|
|
49
|
+
// Add data rows
|
|
50
|
+
for (const rowData of rows) {
|
|
51
|
+
const row = ws.addRow(rowData);
|
|
52
|
+
row.eachCell((cell, colNumber) => {
|
|
53
|
+
cell.border = {
|
|
54
|
+
top: { style: 'thin', color: { argb: 'FFE5E7EB' } },
|
|
55
|
+
bottom: { style: 'thin', color: { argb: 'FFE5E7EB' } },
|
|
56
|
+
left: { style: 'thin', color: { argb: 'FFE5E7EB' } },
|
|
57
|
+
right: { style: 'thin', color: { argb: 'FFE5E7EB' } },
|
|
58
|
+
};
|
|
59
|
+
// Alternate row shading
|
|
60
|
+
if (row.number % 2 === 0) {
|
|
61
|
+
cell.fill = {
|
|
62
|
+
type: 'pattern',
|
|
63
|
+
pattern: 'solid',
|
|
64
|
+
fgColor: { argb: 'FFF9FAFB' },
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
// Auto-fit column widths
|
|
70
|
+
if (sheetDef.columnWidths) {
|
|
71
|
+
sheetDef.columnWidths.forEach((w, idx) => {
|
|
72
|
+
ws.getColumn(idx + 1).width = w;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
else if (headers.length > 0) {
|
|
76
|
+
const colWidths = headers.map((h, idx) => {
|
|
77
|
+
const maxData = rows.reduce((max, r) => Math.max(max, String(r[idx] ?? '').length), 0);
|
|
78
|
+
return Math.min(Math.max(h.length, maxData) + 4, 50);
|
|
79
|
+
});
|
|
80
|
+
colWidths.forEach((w, idx) => {
|
|
81
|
+
ws.getColumn(idx + 1).width = w;
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
// Freeze header row
|
|
85
|
+
if (sheetDef.freezeHeader && headers.length > 0) {
|
|
86
|
+
ws.views = [{ state: 'frozen', ySplit: 1 }];
|
|
87
|
+
}
|
|
88
|
+
// Auto-filter
|
|
89
|
+
if (headers.length > 0 && rows.length > 0) {
|
|
90
|
+
ws.autoFilter = {
|
|
91
|
+
from: { row: 1, column: 1 },
|
|
92
|
+
to: { row: rows.length + 1, column: headers.length },
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
const buffer = await workbook.xlsx.writeBuffer();
|
|
97
|
+
const buf = Buffer.from(buffer);
|
|
98
|
+
const sheetNames = sheets.map((s) => s.name || 'Sheet1').join(', ');
|
|
99
|
+
const safeName = (sheets[0]?.name ?? 'workbook')
|
|
100
|
+
.replace(/[^a-zA-Z0-9_-]/g, '_')
|
|
101
|
+
.slice(0, 64);
|
|
102
|
+
return {
|
|
103
|
+
outputs: [
|
|
104
|
+
{
|
|
105
|
+
buffer: buf,
|
|
106
|
+
fileName: `${safeName}.xlsx`,
|
|
107
|
+
mime: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
|
108
|
+
},
|
|
109
|
+
],
|
|
110
|
+
log: [
|
|
111
|
+
`Generated XLSX: ${sheets.length} sheet(s) (${sheetNames})`,
|
|
112
|
+
`Total rows: ${sheets.reduce((sum, s) => sum + (s.rows?.length ?? 0), 0)}`,
|
|
113
|
+
],
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
exports.XlsxWorkbookTool = XlsxWorkbookTool;
|
|
118
|
+
//# sourceMappingURL=xlsx-workbook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xlsx-workbook.js","sourceRoot":"","sources":["../../../src/lib/tools/xlsx-workbook.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "teamshare-bridge",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.50",
|
|
4
4
|
"description": "Local bridge for TeamShare agents - CLI session runner, auto-wake WebSocket daemon, and teamshare:// protocol handler.",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"license": "MIT",
|
|
@@ -41,10 +41,18 @@
|
|
|
41
41
|
"@napi-rs/keyring": "^1.3.0",
|
|
42
42
|
"@types/better-sqlite3": "^9.6.0",
|
|
43
43
|
"better-sqlite3": "^13.0.3",
|
|
44
|
+
"chart.js": "^4.5.1",
|
|
45
|
+
"chartjs-node-canvas": "^5.0.0",
|
|
46
|
+
"docx": "^9.7.1",
|
|
47
|
+
"exceljs": "^4.4.0",
|
|
48
|
+
"pdfkit": "^0.20.2",
|
|
49
|
+
"pptxgenjs": "^4.0.1",
|
|
50
|
+
"sharp": "^0.35.4",
|
|
44
51
|
"socket.io-client": "^4.8.3"
|
|
45
52
|
},
|
|
46
53
|
"devDependencies": {
|
|
47
|
-
"@types/node": "^22.
|
|
54
|
+
"@types/node": "^22.20.1",
|
|
55
|
+
"@types/pdfkit": "^0.17.6",
|
|
48
56
|
"typescript": "^5.6.0"
|
|
49
57
|
}
|
|
50
58
|
}
|