[package]
name = "recoco-core"
version = { workspace = true }
edition = { workspace = true }
rust-version = { workspace = true }
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"
repository = { workspace = true }
license = { workspace = true }
keywords = { workspace = true }
categories = { workspace = true }
[lib]
name = "recoco_core"
path = "src/lib.rs"
[dependencies]
anyhow = { workspace = true }
async-openai = { workspace = true, optional = true }
async-stream = { workspace = true, optional = true }
async-trait = { workspace = true }
aws-config = { workspace = true, optional = true }
aws-sdk-s3 = { workspace = true, optional = true }
aws-sdk-sqs = { workspace = true, optional = true }
axum = { workspace = true, optional = true }
axum-extra = { workspace = true, optional = true }
azure_core = { workspace = true, optional = true }
azure_identity = { workspace = true, optional = true }
azure_storage = { workspace = true, optional = true }
azure_storage_blobs = { workspace = true, optional = true }
base64 = { workspace = true }
bytes = { workspace = true, features = ["serde"] }
chrono = { workspace = true }
config = { workspace = true, optional = true }
const_format = { workspace = true }
derive-where = { workspace = true }
futures = { workspace = true }
globset = { workspace = true, optional = true }
google-cloud-aiplatform-v1 = { workspace = true, optional = true }
google-cloud-gax = { workspace = true, optional = true }
google-drive3 = { workspace = true, optional = true }
http-body-util = { workspace = true, optional = true }
hyper-rustls = { workspace = true, optional = true }
hyper-util = { workspace = true, optional = true }
indenter = { workspace = true }
indexmap = { workspace = true }
indoc = { workspace = true }
infer = { workspace = true, optional = true }
itertools = { workspace = true, optional = true }
json5 = { workspace = true, optional = true }
log = { workspace = true, optional = true }
neo4rs = { workspace = true, optional = true }
pgvector = { workspace = true, optional = true }
phf = { workspace = true }
qdrant-client = { workspace = true, optional = true }
recoco-splitters = { workspace = true, optional = true }
recoco-utils = { workspace = true, features = [
"chrono",
"concur_control",
"deserialize",
"fingerprint",
"immutable",
"uuid"
] }
redis = { workspace = true, optional = true }
reqwest = { workspace = true, optional = true }
rustls = { workspace = true, optional = true }
schemars = { workspace = true, optional = true }
serde = { workspace = true }
serde_json = { workspace = true }
serde_with = { workspace = true, optional = true }
sqlx = { workspace = true, optional = true }
time = { workspace = true, optional = true }
tokio = { workspace = true }
tower = { workspace = true, optional = true }
tower-http = { workspace = true, optional = true }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
unicase = { workspace = true, optional = true }
urlencoding = { workspace = true, optional = true }
uuid = { workspace = true }
yaml-rust2 = { workspace = true, optional = true }
yup-oauth2 = { workspace = true, optional = true }
[dev-dependencies]
async-openai = { workspace = true }
expect-test = { workspace = true }
[features]
default = ["persistence", "server", "source-local-file"]
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"]
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"]