[package]
edition = "2024"
rust-version = "1.89"
name = "recoco-core"
version = "0.2.1"
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Recoco-core is the core library of Recoco; it's nearly identical to the main ReCoco crate, which is a simple wrapper around recoco-core and other sub-crates."
readme = "README.md"
keywords = [
"ai",
"cocoindex",
"data-processing",
"etl",
"pipeline",
]
categories = [
"data-structures",
"database",
"science",
]
license = "Apache-2.0"
repository = "https://github.com/knitli/recoco"
[features]
all-functions = [
"function-detect-lang",
"function-embed",
"function-extract-llm",
"function-json",
"function-split",
]
all-llm-providers = [
"provider-anthropic",
"provider-azure",
"provider-bedrock",
"provider-gemini",
"provider-ollama",
"provider-openai",
"provider-voyage",
]
all-sources = [
"source-azure",
"source-gdrive",
"source-local-file",
"source-postgres",
"source-s3",
]
all-splitter-languages = ["recoco-splitters/all"]
all-targets = [
"target-kuzu",
"target-neo4j",
"target-postgres",
"target-qdrant",
]
batching = ["recoco-utils/batching"]
default = [
"persistence",
"server",
"source-local-file",
]
full = [
"all-functions",
"all-llm-providers",
"all-sources",
"all-splitter-languages",
"all-targets",
"persistence",
"server",
]
function-detect-lang = ["dep:recoco-splitters"]
function-embed = [
"batching",
"dep:infer",
"dep:reqwest",
"json-schema",
"recoco-utils/reqwest",
]
function-extract-llm = [
"dep:infer",
"dep:reqwest",
"json-schema",
"recoco-utils/reqwest",
]
function-json = [
"dep:json5",
"dep:unicase",
]
function-split = [
"dep:recoco-splitters",
"recoco-utils/regex",
"recoco-utils/retryable",
]
json-schema = ["dep:schemars"]
legacy-states-v0 = []
persistence = [
"dep:itertools",
"dep:log",
"dep:sqlx",
"dep:urlencoding",
"dep:yaml-rust2",
"recoco-utils/retryable",
"recoco-utils/sqlx",
"recoco-utils/yaml",
]
provider-anthropic = [
"dep:json5",
"dep:reqwest",
"dep:urlencoding",
"recoco-utils/reqwest",
]
provider-azure = [
"dep:async-openai",
"dep:time",
"recoco-utils/openai",
]
provider-bedrock = [
"dep:reqwest",
"dep:urlencoding",
"recoco-utils/reqwest",
]
provider-gemini = [
"dep:google-cloud-aiplatform-v1",
"dep:google-cloud-gax",
"dep:reqwest",
"dep:urlencoding",
"recoco-utils/reqwest",
"recoco-utils/retryable",
]
provider-litellm = ["provider-openai"]
provider-ollama = [
"dep:reqwest",
"dep:serde_with",
"recoco-utils/reqwest",
]
provider-openai = [
"dep:async-openai",
"dep:config",
"dep:reqwest",
"recoco-utils/openai",
"recoco-utils/reqwest",
"recoco-utils/retryable",
]
provider-openrouter = ["provider-openai"]
provider-vllm = ["provider-openai"]
provider-voyage = [
"dep:reqwest",
"recoco-utils/reqwest",
]
server = [
"dep:axum",
"dep:axum-extra",
"dep:rustls",
"dep:tower",
"dep:tower-http",
"json-schema",
"persistence",
"recoco-utils/retryable",
"recoco-utils/server",
]
source-azure = [
"batching",
"dep:async-stream",
"dep:azure_core",
"dep:azure_identity",
"dep:azure_storage",
"dep:azure_storage_blobs",
"dep:globset",
"recoco-utils/azure",
"recoco-utils/bytes_decode",
]
source-gdrive = [
"batching",
"dep:globset",
"dep:google-drive3",
"dep:http-body-util",
"dep:hyper-rustls",
"dep:hyper-util",
"dep:rustls",
"dep:yup-oauth2",
"recoco-utils/bytes_decode",
"recoco-utils/google-drive",
]
source-local-file = [
"batching",
"dep:async-stream",
"dep:globset",
"recoco-utils/bytes_decode",
"recoco-utils/local-file",
]
source-postgres = [
"batching",
"dep:pgvector",
"persistence",
]
source-s3 = [
"batching",
"dep:async-stream",
"dep:aws-config",
"dep:aws-sdk-s3",
"dep:aws-sdk-sqs",
"dep:globset",
"dep:redis",
"dep:rustls",
"dep:urlencoding",
"recoco-utils/bytes_decode",
"recoco-utils/redis",
"recoco-utils/s3",
]
splitter-language-c = ["recoco-splitters/c"]
splitter-language-c-sharp = ["recoco-splitters/c-sharp"]
splitter-language-cpp = ["recoco-splitters/cpp"]
splitter-language-css = ["recoco-splitters/css"]
splitter-language-fortran = ["recoco-splitters/fortran"]
splitter-language-go = ["recoco-splitters/go"]
splitter-language-html = ["recoco-splitters/html"]
splitter-language-java = ["recoco-splitters/java"]
splitter-language-javascript = ["recoco-splitters/javascript"]
splitter-language-json = ["recoco-splitters/json"]
splitter-language-kotlin = ["recoco-splitters/kotlin"]
splitter-language-markdown = ["recoco-splitters/markdown"]
splitter-language-pascal = ["recoco-splitters/pascal"]
splitter-language-php = ["recoco-splitters/php"]
splitter-language-python = ["recoco-splitters/python"]
splitter-language-r = ["recoco-splitters/r"]
splitter-language-ruby = ["recoco-splitters/ruby"]
splitter-language-rust = ["recoco-splitters/rust"]
splitter-language-scala = ["recoco-splitters/scala"]
splitter-language-solidity = ["recoco-splitters/solidity"]
splitter-language-sql = ["recoco-splitters/sql"]
splitter-language-swift = ["recoco-splitters/swift"]
splitter-language-toml = ["recoco-splitters/toml"]
splitter-language-typescript = ["recoco-splitters/typescript"]
splitter-language-xml = ["recoco-splitters/xml"]
splitter-language-yaml = ["recoco-splitters/yaml"]
target-kuzu = [
"dep:reqwest",
"recoco-utils/reqwest",
"target-neo4j",
]
target-neo4j = [
"dep:neo4rs",
"recoco-utils/neo4rs",
"recoco-utils/retryable",
]
target-postgres = [
"dep:itertools",
"source-postgres",
]
target-qdrant = [
"dep:qdrant-client",
"recoco-utils/qdrant",
]
[lib]
name = "recoco_core"
path = "src/lib.rs"
[[example]]
name = "custom_op"
path = "examples/custom_op.rs"
[[example]]
name = "detect_lang"
path = "examples/detect_lang.rs"
[[example]]
name = "file_processing"
path = "examples/file_processing.rs"
[[example]]
name = "transient"
path = "examples/transient.rs"
[dependencies.anyhow]
version = "1.0.100"
features = ["std"]
[dependencies.async-openai]
version = "0.30.1"
optional = true
default-features = true
[dependencies.async-stream]
version = "0.3.6"
optional = true
[dependencies.async-trait]
version = "0.1.89"
[dependencies.aws-config]
version = "1.8.12"
optional = true
[dependencies.aws-sdk-s3]
version = "1.120.0"
optional = true
[dependencies.aws-sdk-sqs]
version = "1.92.0"
optional = true
[dependencies.axum]
version = "0.8.8"
optional = true
[dependencies.axum-extra]
version = "0.12.5"
features = ["query"]
optional = true
[dependencies.azure_core]
version = "0.31.0"
optional = true
[dependencies.azure_identity]
version = "0.21.0"
features = ["enable_reqwest_rustls"]
optional = true
default-features = false
[dependencies.azure_storage]
version = "0.21.0"
features = [
"enable_reqwest_rustls",
"hmac_rust",
]
optional = true
default-features = false
[dependencies.azure_storage_blobs]
version = "0.21.0"
features = [
"enable_reqwest_rustls",
"hmac_rust",
]
optional = true
default-features = false
[dependencies.base64]
version = "0.22.1"
[dependencies.bytes]
version = "1.11.0"
features = ["serde"]
[dependencies.chrono]
version = "0.4.43"
features = ["serde"]
[dependencies.config]
version = "0.15.19"
optional = true
[dependencies.const_format]
version = "0.2.35"
[dependencies.derive-where]
version = "1.6.0"
features = ["serde"]
[dependencies.futures]
version = "0.3.31"
[dependencies.globset]
version = "0.4.18"
optional = true
[dependencies.google-cloud-aiplatform-v1]
version = "1.5.0"
features = ["prediction-service"]
optional = true
default-features = false
[dependencies.google-cloud-gax]
version = "1.5.0"
optional = true
[dependencies.google-drive3]
version = "7.0.0"
optional = true
[dependencies.http-body-util]
version = "0.1.3"
optional = true
[dependencies.hyper-rustls]
version = "0.27.7"
optional = true
[dependencies.hyper-util]
version = "0.1.19"
optional = true
[dependencies.indenter]
version = "0.3.4"
[dependencies.indexmap]
version = "2.13.0"
features = ["serde"]
[dependencies.indoc]
version = "2.0.7"
[dependencies.infer]
version = "0.19.0"
optional = true
[dependencies.itertools]
version = "0.14.0"
optional = true
[dependencies.json5]
version = "1.3.0"
optional = true
[dependencies.log]
version = "0.4.29"
optional = true
[dependencies.neo4rs]
version = "0.8.0"
optional = true
[dependencies.pgvector]
version = "0.4.1"
features = [
"halfvec",
"sqlx",
]
optional = true
[dependencies.phf]
version = "0.12.1"
features = ["macros"]
[dependencies.qdrant-client]
version = "1.16.0"
optional = true
[dependencies.recoco-splitters]
version = "0.2.1"
optional = true
[dependencies.recoco-utils]
version = "0.2.1"
features = [
"chrono",
"concur_control",
"deserialize",
"fingerprint",
"immutable",
"uuid",
]
[dependencies.redis]
version = "1.0.2"
features = [
"connection-manager",
"tokio-comp",
]
optional = true
[dependencies.reqwest]
version = "0.12.24"
features = [
"json",
"rustls-tls",
]
optional = true
default-features = false
[dependencies.rustls]
version = "0.23.36"
optional = true
[dependencies.schemars]
version = "1.2.0"
optional = true
[dependencies.serde]
version = "1.0.228"
features = [
"derive",
"rc",
]
[dependencies.serde_json]
version = "1.0.149"
[dependencies.serde_with]
version = "3.16.1"
features = ["base64"]
optional = true
[dependencies.sqlx]
version = "0.8.6"
features = [
"chrono",
"postgres",
"runtime-tokio",
"tls-rustls-aws-lc-rs",
"uuid",
]
optional = true
[dependencies.time]
version = "0.3.45"
features = [
"macros",
"serde",
]
optional = true
[dependencies.tokio]
version = "1.49.0"
features = [
"fs",
"full",
"macros",
"rt-multi-thread",
"sync",
"tracing",
]
[dependencies.tower]
version = "0.5.3"
optional = true
[dependencies.tower-http]
version = "0.6.7"
features = [
"cors",
"trace",
]
optional = true
[dependencies.tracing]
version = "0.1"
features = ["log"]
[dependencies.tracing-subscriber]
version = "0.3.22"
features = ["env-filter"]
[dependencies.unicase]
version = "2.9.0"
optional = true
[dependencies.urlencoding]
version = "2.1.3"
optional = true
[dependencies.uuid]
version = "1.19.0"
features = [
"serde",
"v4",
"v8",
]
[dependencies.yaml-rust2]
version = "0.11.0"
optional = true
[dependencies.yup-oauth2]
version = "12.1.2"
optional = true
[dev-dependencies.async-openai]
version = "0.30.1"
default-features = true
[dev-dependencies.expect-test]
version = "1.5.1"