/** * GENERATE DOCUMENT WORKFLOW * * A comprehensive workflow that converts markdown documents into structured formats * like HTML tables, CSV, or Excel files. Uses AI analysis to extract and organize * data from unstructured markdown text into tabular formats. * * This workflow combines: * 1. AI agent analysis for data extraction from markdown documents * 2. JSON schema generation for structured data representation * 3. Format conversion to HTML, CSV, or Excel * * Returns structured data and downloadable files in the requested format. */ import { z } from 'zod'; import { WorkflowBubble } from '../../types/workflow-bubble-class.js'; import type { BubbleContext } from '../../types/bubble.js'; import { CredentialType, type BubbleName } from '@bubblelab/shared-schemas'; /** * Parameters schema for Generate Document workflow */ declare const GenerateDocumentWorkflowParamsSchema: z.ZodObject<{ documents: z.ZodArray; pageCount: z.ZodOptional; uploadedImages: z.ZodOptional; }, "strip", z.ZodTypeAny, { fileName: string; pageNumber: number; fileUrl?: string | undefined; }, { fileName: string; pageNumber: number; fileUrl?: string | undefined; }>, "many">>; }, "strip", z.ZodTypeAny, { pageCount?: number | undefined; originalFilename?: string | undefined; uploadedImages?: { fileName: string; pageNumber: number; fileUrl?: string | undefined; }[] | undefined; }, { pageCount?: number | undefined; originalFilename?: string | undefined; uploadedImages?: { fileName: string; pageNumber: number; fileUrl?: string | undefined; }[] | undefined; }>>; }, "strip", z.ZodTypeAny, { content: string; index: number; metadata?: { pageCount?: number | undefined; originalFilename?: string | undefined; uploadedImages?: { fileName: string; pageNumber: number; fileUrl?: string | undefined; }[] | undefined; } | undefined; }, { content: string; index: number; metadata?: { pageCount?: number | undefined; originalFilename?: string | undefined; uploadedImages?: { fileName: string; pageNumber: number; fileUrl?: string | undefined; }[] | undefined; } | undefined; }>, "many">; outputDescription: z.ZodString; outputFormat: z.ZodDefault>; aiOptions: z.ZodDefault>; temperature: z.ZodDefault; maxTokens: z.ZodDefault; jsonMode: z.ZodDefault; }, "strip", z.ZodTypeAny, { model: "anthropic/claude-haiku-4-5" | "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "google/gemini-3.1-pro-preview" | "google/gemini-3.1-flash-lite-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-sonnet-4-6" | "anthropic/claude-opus-4-5" | "anthropic/claude-opus-4-6" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-sonnet-4.6" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/anthropic/claude-opus-4.6" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research" | "fireworks/accounts/fireworks/models/kimi-k2p6"; temperature: number; maxTokens: number; jsonMode: boolean; }, { model?: "anthropic/claude-haiku-4-5" | "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "google/gemini-3.1-pro-preview" | "google/gemini-3.1-flash-lite-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-sonnet-4-6" | "anthropic/claude-opus-4-5" | "anthropic/claude-opus-4-6" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-sonnet-4.6" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/anthropic/claude-opus-4.6" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research" | "fireworks/accounts/fireworks/models/kimi-k2p6" | undefined; temperature?: number | undefined; maxTokens?: number | undefined; jsonMode?: boolean | undefined; }>>; credentials: z.ZodOptional, z.ZodString>>; }, "strip", z.ZodTypeAny, { documents: { content: string; index: number; metadata?: { pageCount?: number | undefined; originalFilename?: string | undefined; uploadedImages?: { fileName: string; pageNumber: number; fileUrl?: string | undefined; }[] | undefined; } | undefined; }[]; aiOptions: { model: "anthropic/claude-haiku-4-5" | "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "google/gemini-3.1-pro-preview" | "google/gemini-3.1-flash-lite-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-sonnet-4-6" | "anthropic/claude-opus-4-5" | "anthropic/claude-opus-4-6" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-sonnet-4.6" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/anthropic/claude-opus-4.6" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research" | "fireworks/accounts/fireworks/models/kimi-k2p6"; temperature: number; maxTokens: number; jsonMode: boolean; }; outputDescription: string; outputFormat: "json" | "csv" | "html"; credentials?: Partial> | undefined; }, { documents: { content: string; index: number; metadata?: { pageCount?: number | undefined; originalFilename?: string | undefined; uploadedImages?: { fileName: string; pageNumber: number; fileUrl?: string | undefined; }[] | undefined; } | undefined; }[]; outputDescription: string; credentials?: Partial> | undefined; aiOptions?: { model?: "anthropic/claude-haiku-4-5" | "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "google/gemini-3.1-pro-preview" | "google/gemini-3.1-flash-lite-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-sonnet-4-6" | "anthropic/claude-opus-4-5" | "anthropic/claude-opus-4-6" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-sonnet-4.6" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/anthropic/claude-opus-4.6" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research" | "fireworks/accounts/fireworks/models/kimi-k2p6" | undefined; temperature?: number | undefined; maxTokens?: number | undefined; jsonMode?: boolean | undefined; } | undefined; outputFormat?: "json" | "csv" | "html" | undefined; }>; /** * Result schema for Generate Document workflow */ declare const GenerateDocumentWorkflowResultSchema: z.ZodObject<{ columns: z.ZodArray; description: z.ZodString; }, "strip", z.ZodTypeAny, { type: "string" | "number" | "boolean" | "integer" | "float" | "date"; description: string; name: string; }, { type: "string" | "number" | "boolean" | "integer" | "float" | "date"; description: string; name: string; }>, "many">; rows: z.ZodArray>, "many">; metadata: z.ZodObject<{ totalDocuments: z.ZodNumber; totalRows: z.ZodNumber; totalColumns: z.ZodNumber; processingTime: z.ZodNumber; extractedFrom: z.ZodArray; }, "strip", z.ZodTypeAny, { processingTime: number; totalDocuments: number; totalRows: number; totalColumns: number; extractedFrom: string[]; }, { processingTime: number; totalDocuments: number; totalRows: number; totalColumns: number; extractedFrom: string[]; }>; generatedFiles: z.ZodObject<{ html: z.ZodOptional; csv: z.ZodOptional; json: z.ZodOptional; }, "strip", z.ZodTypeAny, { json?: string | undefined; csv?: string | undefined; html?: string | undefined; }, { json?: string | undefined; csv?: string | undefined; html?: string | undefined; }>; aiAnalysis: z.ZodObject<{ model: z.ZodString; iterations: z.ZodNumber; processingTime: z.ZodOptional; }, "strip", z.ZodTypeAny, { model: string; iterations: number; processingTime?: number | undefined; }, { model: string; iterations: number; processingTime?: number | undefined; }>; success: z.ZodBoolean; error: z.ZodString; }, "strip", z.ZodTypeAny, { error: string; success: boolean; metadata: { processingTime: number; totalDocuments: number; totalRows: number; totalColumns: number; extractedFrom: string[]; }; rows: Record[]; columns: { type: "string" | "number" | "boolean" | "integer" | "float" | "date"; description: string; name: string; }[]; aiAnalysis: { model: string; iterations: number; processingTime?: number | undefined; }; generatedFiles: { json?: string | undefined; csv?: string | undefined; html?: string | undefined; }; }, { error: string; success: boolean; metadata: { processingTime: number; totalDocuments: number; totalRows: number; totalColumns: number; extractedFrom: string[]; }; rows: Record[]; columns: { type: "string" | "number" | "boolean" | "integer" | "float" | "date"; description: string; name: string; }[]; aiAnalysis: { model: string; iterations: number; processingTime?: number | undefined; }; generatedFiles: { json?: string | undefined; csv?: string | undefined; html?: string | undefined; }; }>; type GenerateDocumentWorkflowParams = z.input; type GenerateDocumentWorkflowResult = z.output; /** * Generate Document Workflow * Converts markdown documents into structured formats using AI analysis */ export declare class GenerateDocumentWorkflow extends WorkflowBubble { static readonly type: "workflow"; static readonly bubbleName: BubbleName; static readonly schema: z.ZodObject<{ documents: z.ZodArray; pageCount: z.ZodOptional; uploadedImages: z.ZodOptional; }, "strip", z.ZodTypeAny, { fileName: string; pageNumber: number; fileUrl?: string | undefined; }, { fileName: string; pageNumber: number; fileUrl?: string | undefined; }>, "many">>; }, "strip", z.ZodTypeAny, { pageCount?: number | undefined; originalFilename?: string | undefined; uploadedImages?: { fileName: string; pageNumber: number; fileUrl?: string | undefined; }[] | undefined; }, { pageCount?: number | undefined; originalFilename?: string | undefined; uploadedImages?: { fileName: string; pageNumber: number; fileUrl?: string | undefined; }[] | undefined; }>>; }, "strip", z.ZodTypeAny, { content: string; index: number; metadata?: { pageCount?: number | undefined; originalFilename?: string | undefined; uploadedImages?: { fileName: string; pageNumber: number; fileUrl?: string | undefined; }[] | undefined; } | undefined; }, { content: string; index: number; metadata?: { pageCount?: number | undefined; originalFilename?: string | undefined; uploadedImages?: { fileName: string; pageNumber: number; fileUrl?: string | undefined; }[] | undefined; } | undefined; }>, "many">; outputDescription: z.ZodString; outputFormat: z.ZodDefault>; aiOptions: z.ZodDefault>; temperature: z.ZodDefault; maxTokens: z.ZodDefault; jsonMode: z.ZodDefault; }, "strip", z.ZodTypeAny, { model: "anthropic/claude-haiku-4-5" | "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "google/gemini-3.1-pro-preview" | "google/gemini-3.1-flash-lite-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-sonnet-4-6" | "anthropic/claude-opus-4-5" | "anthropic/claude-opus-4-6" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-sonnet-4.6" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/anthropic/claude-opus-4.6" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research" | "fireworks/accounts/fireworks/models/kimi-k2p6"; temperature: number; maxTokens: number; jsonMode: boolean; }, { model?: "anthropic/claude-haiku-4-5" | "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "google/gemini-3.1-pro-preview" | "google/gemini-3.1-flash-lite-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-sonnet-4-6" | "anthropic/claude-opus-4-5" | "anthropic/claude-opus-4-6" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-sonnet-4.6" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/anthropic/claude-opus-4.6" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research" | "fireworks/accounts/fireworks/models/kimi-k2p6" | undefined; temperature?: number | undefined; maxTokens?: number | undefined; jsonMode?: boolean | undefined; }>>; credentials: z.ZodOptional, z.ZodString>>; }, "strip", z.ZodTypeAny, { documents: { content: string; index: number; metadata?: { pageCount?: number | undefined; originalFilename?: string | undefined; uploadedImages?: { fileName: string; pageNumber: number; fileUrl?: string | undefined; }[] | undefined; } | undefined; }[]; aiOptions: { model: "anthropic/claude-haiku-4-5" | "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "google/gemini-3.1-pro-preview" | "google/gemini-3.1-flash-lite-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-sonnet-4-6" | "anthropic/claude-opus-4-5" | "anthropic/claude-opus-4-6" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-sonnet-4.6" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/anthropic/claude-opus-4.6" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research" | "fireworks/accounts/fireworks/models/kimi-k2p6"; temperature: number; maxTokens: number; jsonMode: boolean; }; outputDescription: string; outputFormat: "json" | "csv" | "html"; credentials?: Partial> | undefined; }, { documents: { content: string; index: number; metadata?: { pageCount?: number | undefined; originalFilename?: string | undefined; uploadedImages?: { fileName: string; pageNumber: number; fileUrl?: string | undefined; }[] | undefined; } | undefined; }[]; outputDescription: string; credentials?: Partial> | undefined; aiOptions?: { model?: "anthropic/claude-haiku-4-5" | "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "google/gemini-3.1-pro-preview" | "google/gemini-3.1-flash-lite-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-sonnet-4-6" | "anthropic/claude-opus-4-5" | "anthropic/claude-opus-4-6" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-sonnet-4.6" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/anthropic/claude-opus-4.6" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research" | "fireworks/accounts/fireworks/models/kimi-k2p6" | undefined; temperature?: number | undefined; maxTokens?: number | undefined; jsonMode?: boolean | undefined; } | undefined; outputFormat?: "json" | "csv" | "html" | undefined; }>; static readonly resultSchema: z.ZodObject<{ columns: z.ZodArray; description: z.ZodString; }, "strip", z.ZodTypeAny, { type: "string" | "number" | "boolean" | "integer" | "float" | "date"; description: string; name: string; }, { type: "string" | "number" | "boolean" | "integer" | "float" | "date"; description: string; name: string; }>, "many">; rows: z.ZodArray>, "many">; metadata: z.ZodObject<{ totalDocuments: z.ZodNumber; totalRows: z.ZodNumber; totalColumns: z.ZodNumber; processingTime: z.ZodNumber; extractedFrom: z.ZodArray; }, "strip", z.ZodTypeAny, { processingTime: number; totalDocuments: number; totalRows: number; totalColumns: number; extractedFrom: string[]; }, { processingTime: number; totalDocuments: number; totalRows: number; totalColumns: number; extractedFrom: string[]; }>; generatedFiles: z.ZodObject<{ html: z.ZodOptional; csv: z.ZodOptional; json: z.ZodOptional; }, "strip", z.ZodTypeAny, { json?: string | undefined; csv?: string | undefined; html?: string | undefined; }, { json?: string | undefined; csv?: string | undefined; html?: string | undefined; }>; aiAnalysis: z.ZodObject<{ model: z.ZodString; iterations: z.ZodNumber; processingTime: z.ZodOptional; }, "strip", z.ZodTypeAny, { model: string; iterations: number; processingTime?: number | undefined; }, { model: string; iterations: number; processingTime?: number | undefined; }>; success: z.ZodBoolean; error: z.ZodString; }, "strip", z.ZodTypeAny, { error: string; success: boolean; metadata: { processingTime: number; totalDocuments: number; totalRows: number; totalColumns: number; extractedFrom: string[]; }; rows: Record[]; columns: { type: "string" | "number" | "boolean" | "integer" | "float" | "date"; description: string; name: string; }[]; aiAnalysis: { model: string; iterations: number; processingTime?: number | undefined; }; generatedFiles: { json?: string | undefined; csv?: string | undefined; html?: string | undefined; }; }, { error: string; success: boolean; metadata: { processingTime: number; totalDocuments: number; totalRows: number; totalColumns: number; extractedFrom: string[]; }; rows: Record[]; columns: { type: "string" | "number" | "boolean" | "integer" | "float" | "date"; description: string; name: string; }[]; aiAnalysis: { model: string; iterations: number; processingTime?: number | undefined; }; generatedFiles: { json?: string | undefined; csv?: string | undefined; html?: string | undefined; }; }>; static readonly shortDescription = "Generate Document workflow: convert markdown to structured formats using AI"; static readonly longDescription = "\n Comprehensive document generation workflow that transforms unstructured markdown content into structured data formats:\n \n **Process:**\n 1. Analyze markdown documents using AI to understand content and structure\n 2. Extract data points based on user requirements and output description\n 3. Generate consistent column definitions and data rows\n 4. Convert to requested format (HTML table, CSV, JSON)\n \n **Features:**\n - Multi-document processing with content consolidation\n - AI-powered data extraction and structuring\n - Flexible output format support (HTML, CSV, JSON)\n - Configurable AI model selection and parameters\n - Comprehensive metadata and analysis tracking\n - Error handling and validation\n \n **Common Use Cases:**\n - **Expense Management**: Extract vendor, amount, date, category from receipts\n - **Invoice Processing**: Structure billing information into tables\n - **Contact Lists**: Organize people and contact information\n - **Inventory Management**: Extract product details and quantities\n - **Research Data**: Structure findings and references\n \n **Input**: Array of markdown documents + output requirements description\n **Output**: Structured data in requested format with metadata and analysis\n "; static readonly alias = "generate-doc"; constructor(params: GenerateDocumentWorkflowParams, context?: BubbleContext); protected performAction(): Promise; /** * Generate CSV content from columns and rows */ private generateCSV; /** * Normalize column type to match schema expectations */ private normalizeColumnType; /** * Normalize row value to ensure it's a primitive type */ private normalizeRowValue; /** * Generate HTML table from columns and rows */ private generateHTML; } export {}; //# sourceMappingURL=generate-document.workflow.d.ts.map