review.build-pdf-hybrid
Generate PDF documents from Re:VIEW manuscripts using a JS-to-Ruby hybrid pipeline that prioritizes PDF output quality and format compliance.
Instructions
JS→Ruby hybrid pipeline for PDF generation (PDF first priority)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | Yes | ||
| config | No | ||
| skipPreprocess | No |
Implementation Reference
- src/commands/hybrid-pipeline.ts:46-101 (handler)Core implementation of the tool: optionally preprocesses Re:VIEW files and runs `review-pdfmaker` to generate PDF artifacts.export async function buildPdfHybridCommand(options: BuildPdfOptions) { const { config = "config.yml", skipPreprocess = false, cwd } = options; const results: any[] = []; if (!skipPreprocess) { console.log("[build-pdf-hybrid] Running preprocessor..."); const preprocessResult = await preprocessCommand({ cwd }); results.push({ step: "preprocess", result: preprocessResult }); if (!preprocessResult.success) { return { success: false, error: "Preprocessing failed", results }; } } console.log("[build-pdf-hybrid] Building PDF with review-pdfmaker..."); try { const pdfResult = await runCommand("review-pdfmaker", ["-c", config], { cwd, useBundle: true }); results.push({ step: "pdf-build", result: { success: true, output: pdfResult.stdout }}); const pdfFiles = await findGeneratedPdf(cwd); return { success: true, results, artifacts: pdfFiles }; } catch (error: any) { results.push({ step: "pdf-build", result: { success: false, error: error.message, stderr: error.stderr }}); return { success: false, error: "PDF build failed", results }; } }
- src/index.ts:329-341 (schema)Tool schema definition: name, description, and input schema for parameters cwd (required), config, skipPreprocess.{ name: "review.build-pdf-hybrid", description: "JS→Ruby hybrid pipeline for PDF generation (PDF first priority)", inputSchema: { type: "object", properties: { cwd: { type: "string" }, config: { type: "string" }, skipPreprocess: { type: "boolean" } }, required: ["cwd"] } },
- src/index.ts:557-568 (handler)Handler case in the main CallToolRequestHandler switch that delegates to hybridCommands.buildPdfHybrid and returns the result.case "review.build-pdf-hybrid": { const result = await hybridCommands.buildPdfHybrid({ cwd: args.cwd as string, config: args.config as string | undefined, skipPreprocess: args.skipPreprocess as boolean | undefined }); return { content: [ { type: "text", text: JSON.stringify(result) } ] }; }
- src/commands/hybrid-pipeline.ts:208-212 (registration)Registration of hybridCommands object exporting the buildPdfHybrid function for use in index.ts.export const hybridCommands = { preprocess: preprocessCommand, buildPdfHybrid: buildPdfHybridCommand, checkRubyExtensions: checkRubyExtensionsCommand, testMapfile: testMapfileCommand
- TypeScript interface defining the input options for the buildPdfHybridCommand handler.export interface BuildPdfOptions { config?: string; skipPreprocess?: boolean; cwd: string; }