UNPKG

@nestbox-ai/cli

Version:

The cli tools that helps developers to build agents

565 lines (538 loc) 16.6 kB
# JSON Schema for config.yaml validation # This schema defines the structure of user configuration files # Used by ConfigManager.loadFromFile() to validate config.yaml files $schema: "http://json-schema.org/draft-07/schema#" title: "Document Pipeline Configuration" description: "Schema for nest-doc-processing-cli config.yaml files" type: object required: - name additionalProperties: false properties: name: type: string description: "Human-readable name for this configuration" minLength: 1 description: type: string description: "Optional description of the configuration purpose" docling: type: object description: "IBM Docling document extraction settings" additionalProperties: false properties: layout: type: object additionalProperties: false properties: model: type: string description: "Layout model for document structure detection" enum: - docling-layout-heron - docling-layout-heron-101 - docling-layout-egret-medium - docling-layout-egret-large - docling-layout-egret-xlarge default: docling-layout-egret-large createOrphanClusters: type: boolean description: "Create clusters for orphan elements" default: true keepEmptyClusters: type: boolean description: "Keep empty clusters in output" default: true ocr: type: object additionalProperties: false properties: enabled: type: boolean description: "Enable OCR for scanned documents" default: true engine: type: string description: "OCR engine to use" enum: [rapidocr, tesseract, easyocr, mac] default: rapidocr backend: type: string description: "Computation backend" enum: [torch, onnx, cpu] default: torch languages: type: array items: type: string description: "Languages to recognize" default: [en] textScore: type: number description: "Minimum confidence score for text detection" minimum: 0 maximum: 1 default: 0.5 forceFullPageOcr: type: boolean description: "Force OCR on entire page even if text is detected" default: true tables: type: object additionalProperties: false properties: enabled: type: boolean description: "Enable table extraction" default: true mode: type: string description: "Table extraction mode" enum: [fast, accurate] default: accurate doCellMatching: type: boolean description: "Match cells to table structure" default: true pictures: type: object additionalProperties: false properties: enabled: type: boolean description: "Enable picture extraction" default: true enableClassification: type: boolean description: "Classify picture types (chart, diagram, photo, etc.)" default: true enableDescription: type: boolean description: "Generate AI descriptions for pictures" default: true descriptionProvider: type: string description: "Provider for picture descriptions" enum: [openai, local] default: openai descriptionModel: type: string description: "Model for generating picture descriptions" default: gpt-4o descriptionPrompt: type: string description: "Custom prompt for picture description generation" imagesScale: type: number description: "Scale factor for image extraction" minimum: 0.1 maximum: 4.0 default: 2.0 accelerator: type: object additionalProperties: false properties: device: type: string description: "Compute device" enum: [auto, cpu, cuda, mps] default: auto numThreads: type: integer description: "Number of CPU threads" minimum: 1 maximum: 32 default: 4 cudaUseFlashAttention2: type: boolean description: "Use Flash Attention 2 on CUDA" default: false limits: type: object additionalProperties: false properties: documentTimeout: type: integer description: "Maximum processing time per document (seconds)" minimum: 60 maximum: 3600 default: 300 maxPages: type: integer description: "Maximum pages to process (optional)" minimum: 1 maxFileSize: type: integer description: "Maximum file size in bytes (optional)" minimum: 1 chunking: type: object description: "Document chunking settings for RAG" additionalProperties: false properties: strategy: type: string description: "Chunking strategy" enum: [docling_hybrid, sentence, paragraph, fixed] default: docling_hybrid maxTokens: type: integer description: "Maximum tokens per chunk" minimum: 100 maximum: 8000 default: 1200 overlapTokens: type: integer description: "Overlap tokens between chunks" minimum: 0 maximum: 1000 default: 200 tokenizer: type: string description: "Tokenizer for counting tokens" default: cl100k_base mergePeers: type: boolean description: "Merge small sibling chunks" default: true contextualize: type: boolean description: "Add contextual headers to chunks" default: true output: type: object additionalProperties: false properties: format: type: string description: "Output format for chunks" enum: [json, text_files] default: text_files includeMetadataHeader: type: boolean description: "Include metadata in chunk headers" default: true metadata: type: object additionalProperties: false properties: includeHeadings: type: boolean description: "Include heading hierarchy in metadata" default: true includePageNumbers: type: boolean description: "Include page numbers in metadata" default: true includePosition: type: boolean description: "Include position coordinates" default: true includeSource: type: boolean description: "Include source file information" default: true graphrag: type: object description: "Microsoft GraphRAG knowledge graph settings" additionalProperties: false properties: enabled: type: boolean description: "Enable GraphRAG indexing" default: true models: type: object additionalProperties: false properties: chatModel: type: string description: "LLM for entity extraction and summarization" default: gpt-4o-mini embeddingModel: type: string description: "Model for text embeddings" default: text-embedding-3-large temperature: type: number description: "LLM temperature" minimum: 0 maximum: 2 default: 0 maxTokens: type: integer description: "Maximum tokens for LLM responses" minimum: 100 maximum: 32000 default: 4096 embeddingBatchSize: type: integer description: "Batch size for embedding requests" minimum: 1 maximum: 100 default: 16 entityExtraction: type: object additionalProperties: false properties: entityTypes: type: array items: type: string description: "Types of entities to extract" default: - PERSON - ORGANIZATION - LOCATION - DATE - MONEY - PROPERTY - CLAUSE - OBLIGATION - TERM - CONDITION maxGleanings: type: integer description: "Number of extraction passes" minimum: 0 maximum: 5 default: 1 maxEntitiesPerChunk: type: integer description: "Maximum entities per text chunk" minimum: 1 maximum: 100 default: 20 confidenceThreshold: type: number description: "Minimum confidence for entity extraction" minimum: 0 maximum: 1 default: 0.7 prompt: type: string description: "Custom prompt for entity extraction" summarizeDescriptions: type: object additionalProperties: false properties: maxLength: type: integer description: "Maximum length for entity descriptions" minimum: 100 maximum: 2000 default: 500 maxInputLength: type: integer description: "Maximum input length for summarization" minimum: 1000 maximum: 32000 default: 8000 prompt: type: string description: "Custom prompt for description summarization" claimExtraction: type: object additionalProperties: false properties: enabled: type: boolean description: "Enable claim/obligation extraction" default: true description: type: string description: "Description of claim types to extract" maxGleanings: type: integer description: "Number of extraction passes" minimum: 0 maximum: 5 default: 1 prompt: type: string description: "Custom prompt for claim extraction" embeddings: type: object additionalProperties: false properties: model: type: string description: "Embedding model" default: text-embedding-3-large dimensions: type: integer description: "Embedding dimensions" minimum: 256 maximum: 4096 default: 3072 batchSize: type: integer description: "Batch size for embedding requests" minimum: 1 maximum: 1000 default: 100 communities: type: object additionalProperties: false properties: algorithm: type: string description: "Community detection algorithm" enum: [leiden, louvain] default: leiden resolution: type: number description: "Resolution parameter for community detection" minimum: 0.1 maximum: 10.0 default: 1.0 minCommunitySize: type: integer description: "Minimum community size" minimum: 2 maximum: 50 default: 3 maxLevels: type: integer description: "Maximum hierarchy levels" minimum: 1 maximum: 10 default: 3 clusterGraph: type: object additionalProperties: false properties: maxClusterSize: type: integer description: "Maximum cluster size" minimum: 2 maximum: 100 default: 10 useLcc: type: boolean description: "Use largest connected component" default: true seed: type: integer description: "Random seed for reproducibility" default: 42 cache: type: object additionalProperties: false properties: enabled: type: boolean description: "Enable caching" default: true type: type: string description: "Cache type" enum: [file, memory, none] default: file communityReports: type: object additionalProperties: false properties: maxLength: type: integer description: "Maximum length for community reports" minimum: 500 maximum: 10000 default: 2000 maxInputLength: type: integer description: "Maximum input length for report generation" minimum: 1000 maximum: 32000 default: 8000 prompt: type: string description: "Custom prompt for community report generation" localSearch: type: object additionalProperties: false properties: topKEntities: type: integer description: "Number of top entities to retrieve" minimum: 1 maximum: 100 default: 10 topKRelationships: type: integer description: "Number of top relationships to retrieve" minimum: 1 maximum: 100 default: 10 topKCommunityReports: type: integer description: "Number of top community reports" minimum: 1 maximum: 50 default: 5 maxContextTokens: type: integer description: "Maximum context tokens for local search" minimum: 1000 maximum: 128000 default: 12000 prompt: type: string description: "Custom prompt for local search" globalSearch: type: object additionalProperties: false properties: maxCommunities: type: integer description: "Maximum communities to include" minimum: 1 maximum: 100 default: 10 mapMaxTokens: type: integer description: "Maximum tokens for map phase" minimum: 1000 maximum: 32000 default: 4000 reduceMaxTokens: type: integer description: "Maximum tokens for reduce phase" minimum: 1000 maximum: 32000 default: 8000 mapPrompt: type: string description: "Custom prompt for map phase" reducePrompt: type: string description: "Custom prompt for reduce phase" knowledgePrompt: type: string description: "Custom knowledge prompt" driftSearch: type: object additionalProperties: false properties: enabled: type: boolean description: "Enable DRIFT search" default: false prompt: type: string description: "Custom prompt for DRIFT search" reducePrompt: type: string description: "Custom reduce prompt for DRIFT search" apiKeys: type: object description: "API keys for external services" additionalProperties: false properties: openai: type: string description: "OpenAI API key (can use ${OPENAI_API_KEY} for env var)" baseUrl: type: string format: uri description: "Base URL for OpenAI-compatible API endpoint"