@nestbox-ai/cli
Version:
The cli tools that helps developers to build agents
565 lines (538 loc) • 16.6 kB
YAML
# 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"